diff --git a/.github/workflows/zephyr.yml b/.github/workflows/zephyr.yml index e1231f34a4..a19d6cf775 100644 --- a/.github/workflows/zephyr.yml +++ b/.github/workflows/zephyr.yml @@ -37,7 +37,7 @@ jobs: acvp: true wycheproof: false examples: false - unit: false + unit: ${{ matrix.target.board == 'mps3-an547' }} stack: false alloc: false rng_fail: false @@ -45,6 +45,18 @@ jobs: # Zephyr's CMake selects the target arch; disable the host-arch # auto-detection that would otherwise leak into the forwarded CFLAGS. extra_args: --no-auto + # Keep unit coverage for the retained x4 backend after an547 defaults to + # x1. Select its dedicated xor/permute/extract unit to avoid rerunning the + # unrelated unit suite under the slower x4 QEMU backend. + - name: Armv8.1-M x4 FIPS202 unit + if: matrix.target.board == 'mps3-an547' + run: | + nix develop .#zephyr --command make run_unit_44 \ + EXTRA_MAKEFILE=test/zephyr/platform.mk \ + ZEPHYR_TARGET=mps3-an547 \ + ZEPHYR_FIPS202_BACKEND=fips202/native/armv81m/mve.h \ + NUM_RANDOM_TESTS=1 UNIT_TEST_FIPS202_X4_ONLY=1 \ + OPT=1 AUTO=0 CYCLES=NO -j1 # Smoke only: QEMU doesn't model cycle counts (real numbers come from the # FPGA); this just exercises the bench build + run. - name: bench (smoke) diff --git a/BIBLIOGRAPHY.md b/BIBLIOGRAPHY.md index d69700bec7..16cb04e22b 100644 --- a/BIBLIOGRAPHY.md +++ b/BIBLIOGRAPHY.md @@ -36,6 +36,17 @@ source code and documentation. * Referenced from: - [README.md](README.md) +### `ADOMNICAI23` + +* An update on Keccak performance on ARMv7-M +* Author(s): + - Alexandre Adomnicai +* URL: https://eprint.iacr.org/2023/773 +* Referenced from: + - [dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S) + - [dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S](dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S) + - [mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S](mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S) + ### `ArmARMv8M` * Armv8-M Architecture Reference Manual (DDI 0553) @@ -411,6 +422,19 @@ source code and documentation. - [mldsa/src/sign.c](mldsa/src/sign.c) - [proofs/hol_light/README.md](proofs/hol_light/README.md) +### `SLOTHYM7` + +* Enabling Microarchitectural Agility: Taking ML-KEM and ML-DSA from Cortex-M4 to M7 with SLOTHY +* Author(s): + - Amin Abdulrahman + - Matthias J. Kannwischer + - Joel Lim +* URL: https://eprint.iacr.org/2025/366 +* Referenced from: + - [dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S) + - [dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S](dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S) + - [mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S](mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S) + ### `SLOTHY_Paper` * Fast and Clean: Auditable high-performance assembly via constraint solving @@ -444,6 +468,21 @@ source code and documentation. - [test/abicheck/README.md](test/abicheck/README.md) - [test/abicheck/x86_64/abicheck_x86_64.c](test/abicheck/x86_64/abicheck_x86_64.c) +### `XKCP` + +* eXtended Keccak Code Package +* Author(s): + - Guido Bertoni + - Joan Daemen + - Michaël Peeters + - Gilles Van Assche + - Ronny Van Keer +* URL: https://github.com/XKCP/XKCP +* Referenced from: + - [dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S) + - [dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S](dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S) + - [mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S](mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S) + ### `libmceliece` * libmceliece implementation of Classic McEliece diff --git a/BIBLIOGRAPHY.yml b/BIBLIOGRAPHY.yml index b454402639..467aadc7b3 100644 --- a/BIBLIOGRAPHY.yml +++ b/BIBLIOGRAPHY.yml @@ -115,6 +115,29 @@ - Klein, Fabien url: https://eprint.iacr.org/2022/1303 +- id: ADOMNICAI23 + name: "An update on Keccak performance on ARMv7-M" + author: Adomnicai, Alexandre + url: https://eprint.iacr.org/2023/773 + +- id: SLOTHYM7 + name: "Enabling Microarchitectural Agility: Taking ML-KEM and ML-DSA from Cortex-M4 to M7 with SLOTHY" + author: + - Abdulrahman, Amin + - Kannwischer, Matthias J. + - Lim, Joel + url: https://eprint.iacr.org/2025/366 + +- id: XKCP + name: eXtended Keccak Code Package + author: + - Bertoni, Guido + - Daemen, Joan + - Peeters, Michaël + - Van Assche, Gilles + - Van Keer, Ronny + url: https://github.com/XKCP/XKCP + - id: NeonNTT name: "Neon NTT: Faster Dilithium, Kyber, and Saber on Cortex-A72 and Apple M1" year: 2022 diff --git a/dev/fips202/armv81m/mve_x1.h b/dev/fips202/armv81m/mve_x1.h new file mode 100644 index 0000000000..451fa0d3ed --- /dev/null +++ b/dev/fips202/armv81m/mve_x1.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +#ifndef MLD_DEV_FIPS202_ARMV81M_MVE_X1_H +#define MLD_DEV_FIPS202_ARMV81M_MVE_X1_H + +#define MLD_FIPS202_NATIVE_ARMV81M + +/* Part of backend API */ +#define MLD_USE_NATIVE_FIPS202_X1 +#define MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES +#define MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES +/* Guard for assembly files */ +#define MLD_FIPS202_ARMV81M_NEED_X1 + +#if !defined(__ASSEMBLER__) +#include "../api.h" + +#define mld_keccak_f1600_x1_native_impl \ + MLD_NAMESPACE(keccak_f1600_x1_native_impl) +MLD_INTERNAL_API +int mld_keccak_f1600_x1_native_impl(uint64_t *state); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccak_f1600_x1_native(uint64_t *state) +{ + return mld_keccak_f1600_x1_native_impl(state); +} + +#define mld_keccakf1600_xor_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_xor_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_xor_bytes_x1_native_impl(uint64_t *state, + const uint8_t *data, + unsigned offset, unsigned length); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_xor_bytes_x1_native(uint64_t *state, + const uint8_t *data, + unsigned offset, + unsigned length) +{ + return mld_keccakf1600_xor_bytes_x1_native_impl(state, data, offset, length); +} + +#define mld_keccakf1600_extract_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_extract_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_extract_bytes_x1_native_impl(uint64_t *state, uint8_t *data, + unsigned offset, + unsigned length); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_extract_bytes_x1_native(uint64_t *state, + uint8_t *data, + unsigned offset, + unsigned length) +{ + return mld_keccakf1600_extract_bytes_x1_native_impl(state, data, offset, + length); +} + +#endif /* !__ASSEMBLER__ */ + +#endif /* !MLD_DEV_FIPS202_ARMV81M_MVE_X1_H */ diff --git a/dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S b/dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S new file mode 100644 index 0000000000..6fffb19e32 --- /dev/null +++ b/dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S @@ -0,0 +1,979 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* References + * ========== + * + * - [ADOMNICAI23] + * An update on Keccak performance on ARMv7-M + * Alexandre Adomnicai + * https://eprint.iacr.org/2023/773 + * + * - [SLOTHYM7] + * Enabling Microarchitectural Agility: Taking ML-KEM and ML-DSA from + * Cortex-M4 to M7 with SLOTHY + * Abdulrahman, Kannwischer, Lim + * https://eprint.iacr.org/2025/366 + * + * - [XKCP] + * eXtended Keccak Code Package + * Bertoni, Daemen, Peeters, Van Assche, Van Keer + * https://github.com/XKCP/XKCP + */ + +/* + * This file is adapted from the CC0-1.0 sources + * keccakp1600_fast_cortexm3-4.S and keccakp1600_cortexm7.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + */ + +/*yaml + Name: keccak_f1600_x1_armv7m_asm + Description: Scalar x1 Keccak-f[1600] permutation using the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read/write + c_parameter: uint32_t state[50] + description: Bit-interleaved x1 state as even/odd 32-bit halves for each Keccak lane + r1: + type: buffer + size_bytes: 196 + permissions: read + c_parameter: const uint32_t rc[49] + description: 24 bit-interleaved round constants followed by the 0xff loop terminator + test_bytes: + 192: 0xff + 193: 0x00 + 194: 0x00 + 195: 0x00 + Stack: + bytes: 64 + description: register preservation (40) + scalar scratch/intermediate state (24); no MVE/Q-register scratch +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp; d8-d15 are not accessed. + * The caller-saved r0-r3, r12, and APSR condition flags may be clobbered. + * The 200-byte state buffer is modified; the round-constant buffer is read-only. + */ + +/* + * This file is derived from the CC0-1.0 implementation @[XKCP]. + * Optimizations for Armv7-M are described in @[ADOMNICAI23]. + * Further optimizations using SLOTHY are described in @[SLOTHYM7]. + */ +/* WARNING: This implementation requires a little-endian Armv7-M or Armv8-M Mainline CPU. */ + +#include "../../../../common.h" +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) +/* simpasm: header-end */ + + .thumb + .syntax unified +.text + + @ Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +.macro toBitInterleaving x0, x1, s0, s1, t, over + + and \t,\x0,#0x55555555 + orr \t,\t,\t, LSR #1 + and \t,\t,#0x33333333 + orr \t,\t,\t, LSR #2 + and \t,\t,#0x0F0F0F0F + orr \t,\t,\t, LSR #4 + and \t,\t,#0x00FF00FF + bfi \t,\t,#8, #8 + .if \over != 0 + lsr \s0,\t, #8 + .else + eor \s0,\s0,\t, LSR #8 + .endif + + and \t,\x1,#0x55555555 + orr \t,\t,\t, LSR #1 + and \t,\t,#0x33333333 + orr \t,\t,\t, LSR #2 + and \t,\t,#0x0F0F0F0F + orr \t,\t,\t, LSR #4 + and \t,\t,#0x00FF00FF + orr \t,\t,\t, LSR #8 + eor \s0,\s0,\t, LSL #16 + + and \t,\x0,#0xAAAAAAAA + orr \t,\t,\t, LSL #1 + and \t,\t,#0xCCCCCCCC + orr \t,\t,\t, LSL #2 + and \t,\t,#0xF0F0F0F0 + orr \t,\t,\t, LSL #4 + and \t,\t,#0xFF00FF00 + orr \t,\t,\t, LSL #8 + .if \over != 0 + lsr \s1,\t, #16 + .else + eor \s1,\s1,\t, LSR #16 + .endif + + and \t,\x1,#0xAAAAAAAA + orr \t,\t,\t, LSL #1 + and \t,\t,#0xCCCCCCCC + orr \t,\t,\t, LSL #2 + and \t,\t,#0xF0F0F0F0 + orr \t,\t,\t, LSL #4 + and \t,\t,#0xFF00FF00 + orr \t,\t,\t, LSL #8 + bfc \t, #0, #16 + eors \s1,\s1,\t + .endm + + @ Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +.macro fromBitInterleaving x0, x1, t + + movs \t, \x0 @ t = x0@ + bfi \x0, \x1, #16, #16 @ x0 = (x0 & 0x0000FFFF) | (x1 << 16)@ + bfc \x1, #0, #16 @ x1 = (t >> 16) | (x1 & 0xFFFF0000)@ + orr \x1, \x1, \t, LSR #16 + + eor \t, \x0, \x0, LSR #8 @ t = (x0 ^ (x0 >> 8)) & 0x0000FF00UL@ x0 = x0 ^ t ^ (t << 8)@ + and \t, #0x0000FF00 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #8 + + eor \t, \x0, \x0, LSR #4 @ t = (x0 ^ (x0 >> 4)) & 0x00F000F0UL@ x0 = x0 ^ t ^ (t << 4)@ + and \t, #0x00F000F0 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #4 + + eor \t, \x0, \x0, LSR #2 @ t = (x0 ^ (x0 >> 2)) & 0x0C0C0C0CUL@ x0 = x0 ^ t ^ (t << 2)@ + and \t, #0x0C0C0C0C + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #2 + + eor \t, \x0, \x0, LSR #1 @ t = (x0 ^ (x0 >> 1)) & 0x22222222UL@ x0 = x0 ^ t ^ (t << 1)@ + and \t, #0x22222222 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #1 + + eor \t, \x1, \x1, LSR #8 @ t = (x1 ^ (x1 >> 8)) & 0x0000FF00UL@ x1 = x1 ^ t ^ (t << 8)@ + and \t, #0x0000FF00 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #8 + + eor \t, \x1, \x1, LSR #4 @ t = (x1 ^ (x1 >> 4)) & 0x00F000F0UL@ x1 = x1 ^ t ^ (t << 4)@ + and \t, #0x00F000F0 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #4 + + eor \t, \x1, \x1, LSR #2 @ t = (x1 ^ (x1 >> 2)) & 0x0C0C0C0CUL@ x1 = x1 ^ t ^ (t << 2)@ + and \t, #0x0C0C0C0C + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #2 + + eor \t, \x1, \x1, LSR #1 @ t = (x1 ^ (x1 >> 1)) & 0x22222222UL@ x1 = x1 ^ t ^ (t << 1)@ + and \t, #0x22222222 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #1 + .endm + +@ --- offsets in state +.equ Aba0, 0*4 +.equ Aba1, 1*4 +.equ Abe0, 2*4 +.equ Abe1, 3*4 +.equ Abi0, 4*4 +.equ Abi1, 5*4 +.equ Abo0, 6*4 +.equ Abo1, 7*4 +.equ Abu0, 8*4 +.equ Abu1, 9*4 +.equ Aga0, 10*4 +.equ Aga1, 11*4 +.equ Age0, 12*4 +.equ Age1, 13*4 +.equ Agi0, 14*4 +.equ Agi1, 15*4 +.equ Ago0, 16*4 +.equ Ago1, 17*4 +.equ Agu0, 18*4 +.equ Agu1, 19*4 +.equ Aka0, 20*4 +.equ Aka1, 21*4 +.equ Ake0, 22*4 +.equ Ake1, 23*4 +.equ Aki0, 24*4 +.equ Aki1, 25*4 +.equ Ako0, 26*4 +.equ Ako1, 27*4 +.equ Aku0, 28*4 +.equ Aku1, 29*4 +.equ Ama0, 30*4 +.equ Ama1, 31*4 +.equ Ame0, 32*4 +.equ Ame1, 33*4 +.equ Ami0, 34*4 +.equ Ami1, 35*4 +.equ Amo0, 36*4 +.equ Amo1, 37*4 +.equ Amu0, 38*4 +.equ Amu1, 39*4 +.equ Asa0, 40*4 +.equ Asa1, 41*4 +.equ Ase0, 42*4 +.equ Ase1, 43*4 +.equ Asi0, 44*4 +.equ Asi1, 45*4 +.equ Aso0, 46*4 +.equ Aso1, 47*4 +.equ Asu0, 48*4 +.equ Asu1, 49*4 + +@ --- offsets on stack +.equ mDa0, 0*4 +.equ mDa1, 1*4 +.equ mDo0, 2*4 +.equ mDo1, 3*4 +.equ mDi0, 4*4 +.equ mRC , 5*4 +.equ mSize, 6*4 + +/****************************************************************************** + * Bitwise exclusive-OR where both operands are misaligned (i.e. src1 and src2 + * are rotated by rot1 and rot2, respectively). + * The output result is also misaligned (i.e. dst is rotated by rot1-rot2). + * - dst destination register + * - src1-src2 source registers + * - rot1-rot2 rotation values + *****************************************************************************/ +.macro eorror dst, src1, src2, rot1, rot2 +.if \rot1 >= \rot2 + eor \dst, \src1, \src2, ror #\rot1-\rot2 +.else + eor \dst, \src1, \src2, ror #32+\rot1-\rot2 +.endif +.endm + + +/****************************************************************************** + * Bit clear instruction where both operands are misaligned (i.e. src1 and src2 + * are rotated by rot1 and rot2, respectively). + * The output result is also misaligned (i.e. dst is rotated by rot1-rot2). + * - dst destination register + * - src1-src2 source registers + * - rot1-rot2 rotation values + *****************************************************************************/ +.macro bicror dst, src1, src2, rot1, rot2 +.if \rot1 >= \rot2 + bic \dst, \src1, \src2, ror #\rot1-\rot2 +.else + bic \dst, \src1, \src2, ror #32+\rot1-\rot2 +.endif +.endm + + +/****************************************************************************** + * Load 5 words from memory and XOR them all together. It is used to compute + * the parity columns for the Theta step. + * Note that all operands may be misaligned (i.e. rotated by a certain amount + * of bits), as well as the result. + * - dst destination register + * - src1-src5 source registers + * - rot1-rot5 rotation values + *****************************************************************************/ +.macro xor5 dst, src1, src2, src3, src4, src5, rot1, rot2, rot3, rot4, rot5 + ldr.w \dst, [r0, #\src1] // @slothy:reads=[r0\src1] + ldr.w r1, [r0, #\src2] // @slothy:reads=[r0\src2] + ldr.w r5, [r0, #\src3] // @slothy:reads=[r0\src3] + ldr r11, [r0, #\src4] // @slothy:reads=[r0\src4] + ldr r12, [r0, #\src5] // @slothy:reads=[r0\src5] + eorror \dst, \dst, r1, \rot1, \rot2 + eorror \dst, \dst, r5, \rot1, \rot3 + eorror \dst, \dst, r11, \rot1, \rot4 + eorror \dst, \dst, r12, \rot1, \rot5 +.endm + + +/****************************************************************************** + * Same as xor5, except that a previous result is stored on the stack after the + * loads from memory. This allows to have the str instruction for free. + * - dst destination register + * - src1-src5 source registers + * - rot1-rot5 rotation values + * - strreg register from previous calculations to be stored in memory + * - stradr register holding the address to store `prev` + * - strofs stack pointer memory offset for the str instruction + *****************************************************************************/ +.macro xor5str dst, src1, src2, src3, src4, src5, rot1, rot2, rot3, rot4, rot5, strreg, stradr, strofs + ldr.w \dst, [r0, #\src1] // @slothy:reads=[r0\src1] + ldr.w r1, [r0, #\src2] // @slothy:reads=[r0\src2] + ldr.w r5, [r0, #\src3] // @slothy:reads=[r0\src3] + ldr r11, [r0, #\src4] // @slothy:reads=[r0\src4] + ldr r12, [r0, #\src5] // @slothy:reads=[r0\src5] + str.w \strreg, [\stradr, #\strofs] // @slothy:writes=[\stradr\strofs] + eorror \dst, \dst, r1, \rot1, \rot2 + eorror \dst, \dst, r5, \rot1, \rot3 + eorror \dst, \dst, r11, \rot1, \rot4 + eorror \dst, \dst, r12, \rot1, \rot5 +.endm + + +/****************************************************************************** + * Exclusive-OR where the 2nd operand is rotated by 1 bit to the left. + * - dst destination register + * - src1-src2 source registers + * - rot differential rotation btw src1 & src2 (i.e. rot=rot1-rot2) + *****************************************************************************/ +.macro xorrol dst, src1, src2, rot + eor \dst, \src1, \src2, ror #\rot-1 +.endm + + +/****************************************************************************** + * Bitslice implementation of the Chi step with misaligned operands. + * - resofs memory offset within the internal state to store the result + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotlazystr resofs, src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 + str.w r1, [r0, #\resofs] // @slothy:writes=[r0\resofs] +.endm + + +/****************************************************************************** + * Same as xandnotlazystr but without the str instruction which will be carried + * out later in order to take advantage of future ldr instructions. + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotlazy src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.endm + + +/****************************************************************************** + * Same as xandnotlazystr with an additional rotation in order to explictly + * compute the Rho step. It is useful in KeccakRound3 in order to return to the + * classical representation every 4 rounds. + * - resofs memory offset within the internal state to store the result + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotstr resofs, src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.if \rot3 > 0 + ror r1, r1, #32-\rot3 +.endif + str.w r1, [r0, #\resofs] // @slothy:writes=[r0\resofs] +.endm + + +/****************************************************************************** + * Same as xandnotstr but without the str instruction which will be carried + * out later in order to take advantage of future ldr instructions. + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnot src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.if \rot3 > 0 + ror r1, r1, #32-\rot3 +.endif +.endm + + +/****************************************************************************** + * Same as xandnot followed by the Iota step. Note that the source registers + * are not specified since they are always r3, r4 and r5. + * - out output reg (useful to store the result in the next round) + * - rot2-rot3 rotation values + * - rcofs memory offset to load the round constant + * - last Boolean to indicate whether its the last round of the + * quadruple round routine + *****************************************************************************/ +.macro xandnotiota out, rot3, rot2, rcofs, last + bicror r5, r5, r4, \rot3, \rot2 + ldr r1, [sp, #mRC] // @slothy:reads=[spmRC] + ldr r4, [r1, #\rcofs] // @slothy:reads=[r1\rcofs] +.if \last == 1 + ldr r7, [r1, #32]! // @slothy:reads=[r132] + str r1, [sp, #mRC] // @slothy:writes=[spmRC] + cmp r7, #0xFF +.endif +.if \rot3 > 0 + eor r3, r3, r5, ror #32-\rot3 +.else + eor.w r3, r3, r5 +.endif + eor.w \out, r4, r3 +.endm + + +/****************************************************************************** + * Add the parity bits to the state registers r3-r7. If the state registers are + * not properly aligned due to previous lazy rotations, use the barrel shifter + * to fix the misalignment when adding the parity bits. + * - par1-par5 registers containing the parity bits + * - dly1-dly5 rotation values to compute the (delayed) Rho step + *****************************************************************************/ +.macro addparity par1, dly1, par2, dly2, par3, dly3, par4, dly4, par5, dly5 +.if \dly1 > 0 + eor r3, \par1, r3, ror #32-\dly1 +.else + eor.w r3, \par1, r3 +.endif +.if \dly2 > 0 + eor r4, \par2, r4, ror #32-\dly2 +.else + eor.w r4, \par2, r4 +.endif +.if \dly3 > 0 + eor r5, \par3, r5, ror #32-\dly3 +.else + eor.w r5, \par3, r5 +.endif +.if \dly4 > 0 + eor r6, \par4, r6, ror #32-\dly4 +.else + eor.w r6, \par4, r6 +.endif +.if \dly5 > 0 + eor r7, \par5, r7, ror #32-\dly5 +.else + eor.w r7, \par5, r7 +.endif +.endm + + +/****************************************************************************** + * Apply Theta, Pi, Chi and Iota steps to half a plane (i.e. 5 32-bit words) of + * the internal state. + * Note that the Rho step is calculated if and only if \lazy == 0, otherwise it + * is delayed until the next round using ''lazy reductions'' thanks to the + * inline barrel shifter. + * - src1-src5 source registers + * - par1-par5 registers containing the parity bits + * - rot2-rot5 rotation values to compute the current Rho step + * - dly1-dly5 rotation values to compute the delayed Rho step + * - prev register from previous calculations to be stored in memory + * - strofs stack pointer memory offset for the str instruction + * - reg output reg related to the Iota step (to be stored later) + *****************************************************************************/ +.macro KeccakThetaRhoPiChiIota src1, par1, dly1, \ + src2, par2, rot2, dly2, \ + src3, par3, rot3, dly3, \ + src4, par4, rot4, dly4, \ + src5, par5, rot5, dly5, \ + ofs, last, lazy, strofs, reg + ldr.w r3, [r0, #\src1] // @slothy:reads=[r0\src1] + ldr r4, [r0, #\src2] // @slothy:reads=[r0\src2] + ldr r5, [r0, #\src3] // @slothy:reads=[r0\src3] + ldr r6, [r0, #\src4] // @slothy:reads=[r0\src4] + ldr r7, [r0, #\src5] // @slothy:reads=[r0\src5] + str.w r1, [r0, #\strofs] // @slothy:writes=[r0\strofs] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \src2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \src3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \src4, r6, r7, r3, \rot4, \rot5, 0 + xandnotlazystr \src5, r7, r3, r4, \rot5, 0, \rot2 +.else + xandnotstr \src2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \src3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \src4, r6, r7, r3, \rot4, \rot5, 0 + xandnotstr \src5, r7, r3, r4, \rot5, 0, \rot2 +.endif + xandnotiota \reg, \rot3, \rot2, \ofs, \last +.endm + + +/****************************************************************************** + * Apply Theta, Pi, and Chi steps to half a plane (i.e. 5 32-bit words) of the + * internal state. + * Note that the Rho step is calculated if and only if \lazy == 0, otherwise it + * is delayed until the next round using ''lazy reductions'' thanks to the + * inline barrel shifter. + * - src1-src5 source registers + * - dst1-dst5 memory offsets to store the output registers + * - par1-par5 registers containing the parity bits + * - rot2-rot5 rotation values to compute the current Rho step + * - dly1-dly5 rotation values to compute the delayed Rho step + * - lazy Boolean to indicate whether lazy rotations are used or not + * - strofs stack pointer memory offset to store the last output of the + * previous round. + *****************************************************************************/ +.macro KeccakThetaRhoPiChi src1, dst1, par1, rot1, dly1, \ + src2, dst2, par2, rot2, dly2, \ + src3, dst3, par3, rot3, dly3, \ + src4, dst4, par4, rot4, dly4, \ + src5, dst5, par5, rot5, dly5, \ + lazy, strofs + ldr.w r3, [r0, #\src1] // @slothy:reads=[r0\src1] + ldr.w r4, [r0, #\src2] // @slothy:reads=[r0\src2] + ldr.w r5, [r0, #\src3] // @slothy:reads=[r0\src3] + ldr.w r6, [r0, #\src4] // @slothy:reads=[r0\src4] + ldr.w r7, [r0, #\src5] // @slothy:reads=[r0\src5] + str.w r1, [r0, #\strofs] // @slothy:writes=[r0\strofs] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotlazystr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnotlazy r7, r3, r4, \rot5, \rot1, \rot2 +.else + xandnotstr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotstr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnot r7, r3, r4, \rot5, \rot1, \rot2 +.endif +.endm + +.macro KeccakThetaRhoPiChiSkipStore src1, dst1, par1, rot1, dly1, \ + src2, dst2, par2, rot2, dly2, \ + src3, dst3, par3, rot3, dly3, \ + src4, dst4, par4, rot4, dly4, \ + src5, dst5, par5, rot5, dly5, \ + lazy, strofs + ldr.w r3, [r0, #\src1] // @slothy:reads=[r0\src1] + ldr.w r4, [r0, #\src2] // @slothy:reads=[r0\src2] + ldr.w r5, [r0, #\src3] // @slothy:reads=[r0\src3] + ldr.w r6, [r0, #\src4] // @slothy:reads=[r0\src4] + ldr.w r7, [r0, #\src5] // @slothy:reads=[r0\src5] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotlazystr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnotlazy r7, r3, r4, \rot5, \rot1, \rot2 +.else + xandnotstr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotstr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnot r7, r3, r4, \rot5, \rot1, \rot2 +.endif +.endm + +/****************************************************************************** + * 1st round of the 4 unrolled rounds routine due to in-place processing. + * At the beginning of such rounds, the internal state is expected to match the + * classical representation (i.e. without transition and no delayed Rho step). + *****************************************************************************/ +.macro KeccakRound0 + xor5 r3, Abu0, Agu0, Aku0, Amu0, Asu0, 0, 0, 0, 0, 0 + xor5 r7, Abe1, Age1, Ake1, Ame1, Ase1, 0, 0, 0, 0, 0 + xorrol r6, r3, r7, 32 + xor5str r4, Abi1, Agi1, Aki1, Ami1, Asi1, 0, 0, 0, 0, 0, r6, sp, mDa0 + eor.w r6, r3, r4 + xor5str r3, Abo0, Ago0, Ako0, Amo0, Aso0, 0, 0, 0, 0, 0, r6, sp, mDo1 + eor.w r2, r7, r3 + xor5 r7, Aba0, Aga0, Aka0, Ama0, Asa0, 0, 0, 0, 0, 0 + xorrol r10, r7, r4, 32 + xor5 r4, Abo1, Ago1, Ako1, Amo1, Aso1, 0, 0, 0, 0, 0 + eor r14, r4, r7 + xor5 r7, Abe0, Age0, Ake0, Ame0, Ase0, 0, 0, 0, 0, 0 + xorrol r6, r7, r4, 32 + xor5str r4, Abu1, Agu1, Aku1, Amu1, Asu1, 0, 0, 0, 0, 0, r6, sp, mDi0 + eor.w r8, r4, r7 + xor5str r7, Abi0, Agi0, Aki0, Ami0, Asi0, 0, 0, 0, 0, 0, r8, sp, mDa1 + xorrol r9, r7, r4, 32 + xor5str r4, Aba1, Aga1, Aka1, Ama1, Asa1, 0, 0, 0, 0, 0, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Abo0, Aka1, r9, 14, 0, \ + Agu0, Ame1, r12, 10, 0, \ + Aka1, Asi1, r8, 2, 0, \ + Ame1, Abo0, r11, 23, 0, \ + Asi1, Agu0, r2, 31, 0, \ + 1, Aka1 + KeccakThetaRhoPiChi Abe0, Asa1, r10, 0, 0, \ + Agi1, Abe0, r2, 3, 0, \ + Ako0, Agi1, r9, 12, 0, \ + Amu1, Ako0, r14, 4, 0, \ + Asa1, Amu1, r8, 9, 0, \ + 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=[spmDa0] + KeccakThetaRhoPiChi Abu1, Aga0, r14, 14, 0, \ + Aga0, Ake0, r8, 18, 0, \ + Ake0, Ami1, r10, 5, 0, \ + Ami1, Aso0, r2, 8, 0, \ + Aso0, Abu1, r9, 28, 0, \ + 1, Amu1 + KeccakThetaRhoPiChi Abi1, Ama0, r2, 31, 0, \ + Ago0, Ase1, r9, 27, 0, \ + Aku0, Abi1, r12, 19, 0, \ + Ama0, Ago0, r8, 20, 0, \ + Ase1, Aku0, r11, 1, 0, \ + 1, Abu1 + ldr r9, [sp, #mDo1] // @slothy:reads=[spmDo1] + KeccakThetaRhoPiChiIota Aba0, r8, 0, \ + Age0, r10, 22, 0, \ + Aki1, r2, 22, 0, \ + Amo1, r9, 11, 0, \ + Asu0, r12, 7, 0, \ + 0, 0, 1, Aku0, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=[spmDi0] + KeccakThetaRhoPiChi Abo1, Aka0, r9, 14, 0, \ + Agu1, Ame0, r14, 10, 0, \ + Aka0, Asi0, r8, 1, 0, \ + Ame0, Abo1, r10, 22, 0, \ + Asi0, Agu1, r2, 30, 0, \ + 1, Aba0 + KeccakThetaRhoPiChi Abe1, Asa0, r11, 1, 0, \ + Agi0, Abe1, r2, 3, 0, \ + Ako1, Agi0, r9, 13, 0, \ + Amu0, Ako1, r12, 4, 0, \ + Asa0, Amu0, r8, 9, 0, \ + 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=[spmDa1] + KeccakThetaRhoPiChi Abu0, Aga1, r12, 13, 0, \ + Aga1, Ake1, r8, 18, 0, \ + Ake1, Ami0, r11, 5, 0, \ + Ami0, Aso1, r2, 7, 0, \ + Aso1, Abu0, r9, 28, 0, \ + 1, Amu0 + KeccakThetaRhoPiChi Abi0, Ama1, r2, 31, 0, \ + Ago1, Ase0, r9, 28, 0, \ + Aku1, Abi0, r14, 20, 0, \ + Ama1, Ago1, r8, 21, 0, \ + Ase0, Aku1, r10, 1, 0, \ + 1, Abu0 + ldr r9, [sp, #mDo0] // @slothy:reads=[spmDo0] + KeccakThetaRhoPiChiIota Aba1, r8, 0, \ + Age1, r11, 22, 0, \ + Aki0, r2, 21, 0, \ + Amo0, r9, 10, 0, \ + Asu1, r14, 7, 0, \ + 4, 0, 1, Aku1, r14 +.endm + + + +/****************************************************************************** + * 2nd round of the 4 unrolled rounds routine due to in-place processing. + *****************************************************************************/ +.macro KeccakRound1 + xor5str r3, Asu0, Agu0, Amu0, Abu1, Aku1, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Age1, Ame0, Abe0, Ake1, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Aki0, Asi0, Agi1, Ami0, Abi1, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Amo1, Abo0, Ako1, Aso0, Ago1, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Aka1, Asa0, Aga0, Ama1, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Amo0, Abo1, Ako0, Aso1, Ago0, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Age0, Ame1, Abe1, Ake0, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Asu1, Agu1, Amu1, Abu0, Aku0, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Aki1, Asi1, Agi0, Ami1, Abi0, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Aka0, Asa1, Aga1, Ama0, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Amo1, Asa1, r9, 14, 0, \ + Agu0, Ake1, r12, 10, 10, \ + Asa1, Abi1, r8, 2, 12, \ + Ake1, Amo1, r11, 23, 7, \ + Abi1, Agu0, r2, 31, 1, \ + 1, Asa1 + KeccakThetaRhoPiChi Age0, Ama0, r10, 0, 11, \ + Asi0, Age0, r2, 3, 30, \ + Ako1, Asi0, r9, 12, 1, \ + Abu0, Ako1, r14, 4, 18, \ + Ama0, Abu0, r8, 9, 19, \ + 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=[spmDa0] + KeccakThetaRhoPiChi Asu1, Aka1, r14, 14, 22, \ + Aka1, Abe1, r8, 18, 2, \ + Abe1, Ami0, r10, 5, 4, \ + Ami0, Ago1, r2, 8, 28, \ + Ago1, Asu1, r9, 28, 31, \ + 1, Abu0 + KeccakThetaRhoPiChi Aki0, Aga0, r2, 31, 7, \ + Abo0, Ase1, r9, 27, 14, \ + Amu0, Aki0, r12, 19, 3, \ + Aga0, Abo0, r8, 20, 5, \ + Ase1, Amu0, r11, 1, 20, \ + 1, Asu1 + ldr r9, [sp, #mDo1] // @slothy:reads=[spmDo1] + KeccakThetaRhoPiChiIota Aba0, r8, 0, \ + Ame1, r10, 22, 23, \ + Agi1, r2, 22, 9, \ + Aso1, r9, 11, 13, \ + Aku1, r12, 7, 28, \ + 8, 0, 1, Amu0, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=[spmDi0] + KeccakThetaRhoPiChi Amo0, Asa0, r9, 14, 0, \ + Agu1, Ake0, r14, 10, 10, \ + Asa0, Abi0, r8, 1, 13, \ + Ake0, Amo0, r10, 22, 8, \ + Abi0, Agu1, r2, 30, 1, \ + 1, Aba0 + KeccakThetaRhoPiChi Age1, Ama1, r11, 1, 10, \ + Asi1, Age1, r2, 3, 31, \ + Ako0, Asi1, r9, 13, 0, \ + Abu1, Ako0, r12, 4, 18, \ + Ama1, Abu1, r8, 9, 20, \ + 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=[spmDa1] + KeccakThetaRhoPiChi Asu0, Aka0, r12, 13, 22, \ + Aka0, Abe0, r8, 18, 1, \ + Abe0, Ami1, r11, 5, 4, \ + Ami1, Ago0, r2, 7, 28, \ + Ago0, Asu0, r9, 28, 31, \ + 1, Abu1 + KeccakThetaRhoPiChi Aki1, Aga1, r2, 31, 7, \ + Abo1, Ase0, r9, 28, 14, \ + Amu1, Aki1, r14, 20, 3, \ + Aga1, Abo1, r8, 21, 5, \ + Ase0, Amu1, r10, 1, 21, \ + 1, Asu0 + ldr r9, [sp, #mDo0] // @slothy:reads=[spmDo0] + KeccakThetaRhoPiChiIota Aba1, r8, 0, \ + Ame0, r11, 22, 22, \ + Agi0, r2, 21, 9, \ + Aso0, r9, 10, 14, \ + Aku0, r14, 7, 27, \ + 12, 0, 1, Amu1, r14 +.endm + +/****************************************************************************** + * 3rd round of the 4 unrolled rounds routine due to in-place processing. + *****************************************************************************/ +.macro KeccakRound2 + xor5str r3, Aku1, Agu0, Abu1, Asu1, Amu1, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Ame0, Ake0, Age0, Abe0, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Agi0, Abi0, Asi0, Ami1, Aki0, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Aso1, Amo1, Ako0, Ago1, Abo1, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Asa1, Ama1, Aka1, Aga1, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Aso0, Amo0, Ako1, Ago0, Abo0, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Ame1, Ake1, Age1, Abe1, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Aku0, Agu1, Abu0, Asu0, Amu0, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Agi1, Abi1, Asi1, Ami0, Aki1, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Asa0, Ama0, Aka0, Aga0, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Aso1, Ama0, r9, 14, 0, \ + Agu0, Abe0, r12, 10, 10, \ + Ama0, Aki0, r8, 2, 12, \ + Abe0, Aso1, r11, 23, 7, \ + Aki0, Agu0, r2, 31, 1, \ + 1, Ama0 + KeccakThetaRhoPiChi Ame1, Aga0, r10, 0, 11, \ + Abi0, Ame1, r2, 3, 30, \ + Ako0, Abi0, r9, 12, 1, \ + Asu0, Ako0, r14, 4, 18, \ + Aga0, Asu0, r8, 9, 19, \ + 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=[spmDa0] + KeccakThetaRhoPiChi Aku0, Asa1, r14, 14, 22, \ + Asa1, Age1, r8, 18, 2, \ + Age1, Ami1, r10, 5, 4, \ + Ami1, Abo1, r2, 8, 28, \ + Abo1, Aku0, r9, 28, 31, \ + 1, Asu0 + KeccakThetaRhoPiChi Agi0, Aka1, r2, 31, 7, \ + Amo1, Ase1, r9, 27, 14, \ + Abu1, Agi0, r12, 19, 3, \ + Aka1, Amo1, r8, 20, 5, \ + Ase1, Abu1, r11, 1, 20, \ + 1, Aku0 + ldr r9, [sp, #mDo1] // @slothy:reads=[spmDo1] + KeccakThetaRhoPiChiIota Aba0, r8, 0, \ + Ake1, r10,22, 23, \ + Asi0, r2, 22, 9, \ + Ago0, r9, 11, 13, \ + Amu1, r12, 7, 28, \ + 16, 0, 1, Abu1, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=[spmDi0] + KeccakThetaRhoPiChi Aso0, Ama1, r9, 14, 0, \ + Agu1, Abe1, r14, 10, 10, \ + Ama1, Aki1, r8, 1, 13, \ + Abe1, Aso0, r10, 22, 8, \ + Aki1, Agu1, r2, 30, 1, \ + 1, Aba0 + KeccakThetaRhoPiChi Ame0, Aga1, r11, 1, 10, \ + Abi1, Ame0, r2, 3, 31, \ + Ako1, Abi1, r9, 13, 0, \ + Asu1, Ako1, r12, 4, 18, \ + Aga1, Asu1, r8, 9, 20, \ + 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=[spmDa1] + KeccakThetaRhoPiChi Aku1, Asa0, r12, 13, 22, \ + Asa0, Age0, r8, 18, 1, \ + Age0, Ami0, r11, 5, 4, \ + Ami0, Abo0, r2, 7, 28, \ + Abo0, Aku1, r9, 28, 31, \ + 1, Asu1 + KeccakThetaRhoPiChi Agi1, Aka0, r2, 31, 7, \ + Amo0, Ase0, r9, 28, 14, \ + Abu0, Agi1, r14, 20, 3, \ + Aka0, Amo0, r8, 21, 5, \ + Ase0, Abu0, r10, 1, 21, \ + 1, Aku1 + ldr r9, [sp, #mDo0] // @slothy:reads=[spmDo0] + KeccakThetaRhoPiChiIota Aba1, r8, 0, \ + Ake0, r11, 22, 22, \ + Asi1, r2, 21, 9, \ + Ago1, r9, 10, 14, \ + Amu0, r14, 7, 27, \ + 20, 0, 1, Abu0, r14 + +.endm + + +/****************************************************************************** + * 4th round of the 4 unrolled rounds routine due to in-place processing. + * Note that the Rho step is *not* delayed so that the internal state is + * compliant w/ the classical representation at the end of the routine. + *****************************************************************************/ +.macro KeccakRound3 + xor5str r3, Amu1, Agu0, Asu1, Aku0, Abu0, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Ake0, Abe1, Ame1, Age0, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Asi1, Aki1, Abi0, Ami0, Agi0, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Ago0, Aso1, Ako1, Abo1, Amo0, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Ama0, Aga1, Asa1, Aka0, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Ago1, Aso0, Ako0, Abo0, Amo1, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Ake1, Abe0, Ame0, Age1, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Amu0, Agu1, Asu0, Aku1, Abu1, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Asi0, Aki0, Abi1, Ami1, Agi1, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Ama1, Aga0, Asa0, Aka1, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Ago0, Aga0, r9, 14, 0, \ + Agu0, Age0, r12, 10, 10, \ + Aga0, Agi0, r8, 2, 12, \ + Age0, Ago0, r11, 23, 7, \ + Agi0, Agu0, r2, 31, 1, \ + 0, Aga0 + KeccakThetaRhoPiChi Ake1, Aka1, r10, 0, 11, \ + Aki1, Ake1, r2, 3, 30, \ + Ako1, Aki1, r9, 12, 1, \ + Aku1, Ako1, r14, 4, 18, \ + Aka1, Aku1, r8, 9, 19, \ + 0, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=[spmDa0] + KeccakThetaRhoPiChi Amu0, Ama0, r14, 14, 22, \ + Ama0, Ame0, r8, 18, 2, \ + Ame0, Ami0, r10, 5, 4, \ + Ami0, Amo0, r2, 8, 28, \ + Amo0, Amu0, r9, 28, 31, \ + 0, Aku1 + KeccakThetaRhoPiChi Asi1, Asa1, r2, 31, 7, \ + Aso1, Ase1, r9, 27, 14, \ + Asu1, Asi1, r12, 19, 3, \ + Asa1, Aso1, r8, 20, 5, \ + Ase1, Asu1, r11, 1, 20, \ + 0, Amu0 + ldr r9, [sp, #mDo1] // @slothy:reads=[spmDo1] + KeccakThetaRhoPiChiIota Aba0, r8, 0, \ + Abe0, r10, 22, 23, \ + Abi0, r2, 22, 9, \ + Abo0, r9, 11, 13, \ + Abu0, r12, 7, 28, \ + 24, 0, 0, Asu1, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=[spmDi0] + KeccakThetaRhoPiChi Ago1, Aga1, r9, 14, 0, \ + Agu1, Age1, r14, 10, 10, \ + Aga1, Agi1, r8, 1, 13, \ + Age1, Ago1, r10, 22, 8, \ + Agi1, Agu1, r2, 30, 1, \ + 0, Aba0 + KeccakThetaRhoPiChi Ake0, Aka0, r11, 1, 10, \ + Aki0, Ake0, r2, 3, 31, \ + Ako0, Aki0, r9, 13, 0, \ + Aku0, Ako0, r12, 4, 18, \ + Aka0, Aku0, r8, 9, 20, \ + 0, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=[spmDa1] + KeccakThetaRhoPiChi Amu1, Ama1, r12, 13, 22, \ + Ama1, Ame1, r8, 18, 1, \ + Ame1, Ami1, r11, 5, 4, \ + Ami1, Amo1, r2, 7, 28, \ + Amo1, Amu1, r9, 28, 31, \ + 0, Aku0 + KeccakThetaRhoPiChi Asi0, Asa0, r2, 31, 7, \ + Aso0, Ase0, r9, 28, 14, \ + Asu0, Asi0, r14, 20, 3, \ + Asa0, Aso0, r8, 21, 5, \ + Ase0, Asu0, r10, 1, 21, \ + 0, Amu1 + ldr r9, [sp, #mDo0] // @slothy:reads=[spmDo0] + KeccakThetaRhoPiChiIota Aba1, r8, 0, \ + Abe1, r11, 22, 22, \ + Abi1, r2, 21, 9, \ + Abo1, r9, 10, 14, \ + Abu1, r14, 7, 27, \ + 28, 1, 0, Asu0, r1 + str.w r1, [r0, #Aba1] // @slothy:writes=[r0Aba1] +.endm + +@---------------------------------------------------------------------------- +@ +@ void KeccakF1600_StatePermute( void *state ) +@ +.align 8 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_armv7m_asm) +.type MLD_ASM_NAMESPACE(keccak_f1600_x1_armv7m_asm),%function +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_armv7m_asm) + push { r4 - r12, lr } + sub sp, #mSize + str r1, [sp, #mRC] +mld_keccak_f1600_x1_armv7m_asm_StatePermute_RoundLoop: +mld_keccak_f1600_x1_armv7m_asm_slothy_start: + KeccakRound0 + KeccakRound1 + KeccakRound2 + KeccakRound3 +mld_keccak_f1600_x1_armv7m_asm_slothy_end: + bne mld_keccak_f1600_x1_armv7m_asm_StatePermute_RoundLoop + add sp, #mSize + pop { r4 - r12, pc } + +MLD_ASM_FN_SIZE(keccak_f1600_x1_armv7m_asm) + +/* simpasm: footer-start */ +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m_opt/README.md b/dev/fips202/armv81m_opt/README.md new file mode 100644 index 0000000000..046a541c39 --- /dev/null +++ b/dev/fips202/armv81m_opt/README.md @@ -0,0 +1,33 @@ +[//]: # (SPDX-License-Identifier: CC-BY-4.0) + +# FIPS202 backend for Armv8.1-M: optimized scalar development sources + +This directory contains the optimized scalar x1 development sources for the +Armv8.1-M FIPS202 backend. The MVE/Helium x4 development sources remain in +[`../armv81m`](../armv81m). + +The x1 Keccak-f[1600] `*_opt_m7.S` source is generated from +`../armv81m_clean/src/keccak_f1600_x1_armv7m.S` using `src/Makefile`. +The x1 bit-interleaved round-constant table and loop terminator in `src` are +generated by `scripts/autogen`. The pre-existing MVE x4 table remains with the +x4 sources in `../armv81m`. + +## Regenerating the optimized source + +From the repository root, regenerate the Cortex-M7 schedule in the pinned +SLOTHY environment and synchronize the development sources into `mldsa/`: + +```sh +nix develop .#slothy --command make -B -C dev/fips202/armv81m_opt/src +nix develop .#cross-autogen --command ./scripts/autogen --force-cross armv81m +``` + +The 900-second limit is applied independently to each split solve. It exceeds +the latest accepted incumbent observed in the checked-in unattended run (743 +seconds), while retaining headroom. SLOTHY +self-checks every accepted window and the complete result. Because CP-SAT is +wall-clock limited, a regenerated schedule is not expected to be byte-for-byte +identical; correctness tests and target measurements remain mandatory. + +**Warning:** This backend is still in active development and has not yet undergone +the same level of review as the rest of the code. Use at your own risk! diff --git a/dev/fips202/armv81m_opt/src/Makefile b/dev/fips202/armv81m_opt/src/Makefile new file mode 100644 index 0000000000..2f0690bbc4 --- /dev/null +++ b/dev/fips202/armv81m_opt/src/Makefile @@ -0,0 +1,19 @@ +# Copyright (c) The mldsa-native project authors +# SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + +.PHONY: all clean + +PYTHON ?= python3 +SCHEDULE_KECCAK_M7 ?= schedule_keccak_m7.py +# Every incumbent used by the checked-in run appeared within 743 seconds. Keep +# useful headroom while ensuring regeneration finishes without intervention. +# This is an operational ceiling per split solve, not a scheduling-policy knob. +SCHEDULE_KECCAK_M7_ARGS ?= --timeout 900 + +all: keccak_f1600_x1_armv7m_opt_m7.S + +keccak_f1600_x1_armv7m_opt_m7.S: ../../armv81m_clean/src/keccak_f1600_x1_armv7m.S $(SCHEDULE_KECCAK_M7) + $(PYTHON) $(SCHEDULE_KECCAK_M7) $(SCHEDULE_KECCAK_M7_ARGS) $< $@ + +clean: + $(RM) keccak_f1600_x1_armv7m_opt_m7.S diff --git a/dev/fips202/armv81m_opt/src/fips202_native_armv81m_x1.h b/dev/fips202/armv81m_opt/src/fips202_native_armv81m_x1.h new file mode 100644 index 0000000000..60ccefe8ee --- /dev/null +++ b/dev/fips202/armv81m_opt/src/fips202_native_armv81m_x1.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ +#ifndef MLD_DEV_FIPS202_ARMV81M_OPT_SRC_FIPS202_NATIVE_ARMV81M_X1_H +#define MLD_DEV_FIPS202_ARMV81M_OPT_SRC_FIPS202_NATIVE_ARMV81M_X1_H + +#include "../../../../common.h" + +/* Scalar x1 Keccak round constants followed by its loop terminator */ +#define mld_keccakf1600_round_constants_x1 \ + MLD_NAMESPACE(keccakf1600_round_constants_x1) +MLD_INTERNAL_DATA_DECLARATION const uint32_t + mld_keccakf1600_round_constants_x1[49]; + +#endif /* !MLD_DEV_FIPS202_ARMV81M_OPT_SRC_FIPS202_NATIVE_ARMV81M_X1_H */ diff --git a/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m.c b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m.c new file mode 100644 index 0000000000..58151f9b73 --- /dev/null +++ b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m.c @@ -0,0 +1,76 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +#include "fips202_native_armv81m_x1.h" + +#define mld_keccak_f1600_x1_armv7m_asm MLD_NAMESPACE(keccak_f1600_x1_armv7m_asm) +void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]); + +#define mld_keccak_f1600_x1_state_xor_bytes_asm \ + MLD_NAMESPACE(keccak_f1600_x1_state_xor_bytes_asm) +void mld_keccak_f1600_x1_state_xor_bytes_asm(void *state, const uint8_t *data, + unsigned offset, unsigned length); + +#define mld_keccak_f1600_x1_state_extract_bytes_asm \ + MLD_NAMESPACE(keccak_f1600_x1_state_extract_bytes_asm) +void mld_keccak_f1600_x1_state_extract_bytes_asm(void *state, uint8_t *data, + unsigned offset, + unsigned length); + +#define mld_keccak_f1600_x1_native_impl \ + MLD_NAMESPACE(keccak_f1600_x1_native_impl) +MLD_INTERNAL_API +int mld_keccak_f1600_x1_native_impl(uint64_t *state) +{ + /* The x1 native xor/extract hooks keep state bit-interleaved in-place. */ + mld_keccak_f1600_x1_armv7m_asm((uint32_t *)state, + mld_keccakf1600_round_constants_x1); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#define mld_keccakf1600_xor_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_xor_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_xor_bytes_x1_native_impl(uint64_t *state, + const uint8_t *data, + unsigned offset, unsigned length) +{ + mld_keccak_f1600_x1_state_xor_bytes_asm(state, data, offset, length); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#define mld_keccakf1600_extract_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_extract_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_extract_bytes_x1_native_impl(uint64_t *state, uint8_t *data, + unsigned offset, + unsigned length) +{ + mld_keccak_f1600_x1_state_extract_bytes_asm(state, data, offset, length); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#else /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +MLD_EMPTY_CU(keccak_f1600_x1_armv7m) + +#endif /* !(MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED) \ + */ + +/* To facilitate single-compilation-unit (SCU) builds, undefine all macros. + * Don't modify by hand -- this is auto-generated by scripts/autogen. */ +#undef mld_keccak_f1600_x1_armv7m_asm +#undef mld_keccak_f1600_x1_state_xor_bytes_asm +#undef mld_keccak_f1600_x1_state_extract_bytes_asm +/* Some macros are kept because they are also defined in a header. */ +/* Keep: mld_keccak_f1600_x1_native_impl (mve_x1.h) */ +/* Keep: mld_keccakf1600_xor_bytes_x1_native_impl (mve_x1.h) */ +/* Keep: mld_keccakf1600_extract_bytes_x1_native_impl (mve_x1.h) */ diff --git a/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S new file mode 100644 index 0000000000..c3df5bbfbe --- /dev/null +++ b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S @@ -0,0 +1,3816 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* References + * ========== + * + * - [ADOMNICAI23] + * An update on Keccak performance on ARMv7-M + * Alexandre Adomnicai + * https://eprint.iacr.org/2023/773 + * + * - [SLOTHYM7] + * Enabling Microarchitectural Agility: Taking ML-KEM and ML-DSA from + * Cortex-M4 to M7 with SLOTHY + * Abdulrahman, Kannwischer, Lim + * https://eprint.iacr.org/2025/366 + * + * - [XKCP] + * eXtended Keccak Code Package + * Bertoni, Daemen, Peeters, Van Assche, Van Keer + * https://github.com/XKCP/XKCP + */ + +/* + * This file is adapted from the CC0-1.0 sources + * keccakp1600_fast_cortexm3-4.S and keccakp1600_cortexm7.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + */ + +/*yaml + Name: keccak_f1600_x1_armv7m_asm + Description: Scalar x1 Keccak-f[1600] permutation using the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read/write + c_parameter: uint32_t state[50] + description: Bit-interleaved x1 state as even/odd 32-bit halves for each Keccak lane + r1: + type: buffer + size_bytes: 196 + permissions: read + c_parameter: const uint32_t rc[49] + description: 24 bit-interleaved round constants followed by the 0xff loop terminator + test_bytes: + 192: 0xff + 193: 0x00 + 194: 0x00 + 195: 0x00 + Stack: + bytes: 64 + description: register preservation (40) + scalar scratch/intermediate state (24); no MVE/Q-register scratch +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp; d8-d15 are not accessed. + * The caller-saved r0-r3, r12, and APSR condition flags may be clobbered. + * The 200-byte state buffer is modified; the round-constant buffer is read-only. + */ + +/* + * This file is derived from the CC0-1.0 implementation @[XKCP]. + * Optimizations for Armv7-M are described in @[ADOMNICAI23]. + * Further optimizations using SLOTHY are described in @[SLOTHYM7]. + */ +/* WARNING: This implementation requires a little-endian Armv7-M or Armv8-M Mainline CPU. */ + +#include "../../../../common.h" +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) +/* simpasm: header-end */ + + .thumb + .syntax unified +.text + + @ Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +.macro toBitInterleaving x0, x1, s0, s1, t, over + + and \t,\x0,#0x55555555 + orr \t,\t,\t, LSR #1 + and \t,\t,#0x33333333 + orr \t,\t,\t, LSR #2 + and \t,\t,#0x0F0F0F0F + orr \t,\t,\t, LSR #4 + and \t,\t,#0x00FF00FF + bfi \t,\t,#8, #8 + .if \over != 0 + lsr \s0,\t, #8 + .else + eor \s0,\s0,\t, LSR #8 + .endif + + and \t,\x1,#0x55555555 + orr \t,\t,\t, LSR #1 + and \t,\t,#0x33333333 + orr \t,\t,\t, LSR #2 + and \t,\t,#0x0F0F0F0F + orr \t,\t,\t, LSR #4 + and \t,\t,#0x00FF00FF + orr \t,\t,\t, LSR #8 + eor \s0,\s0,\t, LSL #16 + + and \t,\x0,#0xAAAAAAAA + orr \t,\t,\t, LSL #1 + and \t,\t,#0xCCCCCCCC + orr \t,\t,\t, LSL #2 + and \t,\t,#0xF0F0F0F0 + orr \t,\t,\t, LSL #4 + and \t,\t,#0xFF00FF00 + orr \t,\t,\t, LSL #8 + .if \over != 0 + lsr \s1,\t, #16 + .else + eor \s1,\s1,\t, LSR #16 + .endif + + and \t,\x1,#0xAAAAAAAA + orr \t,\t,\t, LSL #1 + and \t,\t,#0xCCCCCCCC + orr \t,\t,\t, LSL #2 + and \t,\t,#0xF0F0F0F0 + orr \t,\t,\t, LSL #4 + and \t,\t,#0xFF00FF00 + orr \t,\t,\t, LSL #8 + bfc \t, #0, #16 + eors \s1,\s1,\t + .endm + + @ Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +.macro fromBitInterleaving x0, x1, t + + movs \t, \x0 @ t = x0@ + bfi \x0, \x1, #16, #16 @ x0 = (x0 & 0x0000FFFF) | (x1 << 16)@ + bfc \x1, #0, #16 @ x1 = (t >> 16) | (x1 & 0xFFFF0000)@ + orr \x1, \x1, \t, LSR #16 + + eor \t, \x0, \x0, LSR #8 @ t = (x0 ^ (x0 >> 8)) & 0x0000FF00UL@ x0 = x0 ^ t ^ (t << 8)@ + and \t, #0x0000FF00 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #8 + + eor \t, \x0, \x0, LSR #4 @ t = (x0 ^ (x0 >> 4)) & 0x00F000F0UL@ x0 = x0 ^ t ^ (t << 4)@ + and \t, #0x00F000F0 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #4 + + eor \t, \x0, \x0, LSR #2 @ t = (x0 ^ (x0 >> 2)) & 0x0C0C0C0CUL@ x0 = x0 ^ t ^ (t << 2)@ + and \t, #0x0C0C0C0C + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #2 + + eor \t, \x0, \x0, LSR #1 @ t = (x0 ^ (x0 >> 1)) & 0x22222222UL@ x0 = x0 ^ t ^ (t << 1)@ + and \t, #0x22222222 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #1 + + eor \t, \x1, \x1, LSR #8 @ t = (x1 ^ (x1 >> 8)) & 0x0000FF00UL@ x1 = x1 ^ t ^ (t << 8)@ + and \t, #0x0000FF00 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #8 + + eor \t, \x1, \x1, LSR #4 @ t = (x1 ^ (x1 >> 4)) & 0x00F000F0UL@ x1 = x1 ^ t ^ (t << 4)@ + and \t, #0x00F000F0 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #4 + + eor \t, \x1, \x1, LSR #2 @ t = (x1 ^ (x1 >> 2)) & 0x0C0C0C0CUL@ x1 = x1 ^ t ^ (t << 2)@ + and \t, #0x0C0C0C0C + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #2 + + eor \t, \x1, \x1, LSR #1 @ t = (x1 ^ (x1 >> 1)) & 0x22222222UL@ x1 = x1 ^ t ^ (t << 1)@ + and \t, #0x22222222 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #1 + .endm + +@ --- offsets in state +.equ Aba0, 0 +.equ Aba1, 4 +.equ Abe0, 8 +.equ Abe1, 12 +.equ Abi0, 16 +.equ Abi1, 20 +.equ Abo0, 24 +.equ Abo1, 28 +.equ Abu0, 32 +.equ Abu1, 36 +.equ Aga0, 40 +.equ Aga1, 44 +.equ Age0, 48 +.equ Age1, 52 +.equ Agi0, 56 +.equ Agi1, 60 +.equ Ago0, 64 +.equ Ago1, 68 +.equ Agu0, 72 +.equ Agu1, 76 +.equ Aka0, 80 +.equ Aka1, 84 +.equ Ake0, 88 +.equ Ake1, 92 +.equ Aki0, 96 +.equ Aki1, 100 +.equ Ako0, 104 +.equ Ako1, 108 +.equ Aku0, 112 +.equ Aku1, 116 +.equ Ama0, 120 +.equ Ama1, 124 +.equ Ame0, 128 +.equ Ame1, 132 +.equ Ami0, 136 +.equ Ami1, 140 +.equ Amo0, 144 +.equ Amo1, 148 +.equ Amu0, 152 +.equ Amu1, 156 +.equ Asa0, 160 +.equ Asa1, 164 +.equ Ase0, 168 +.equ Ase1, 172 +.equ Asi0, 176 +.equ Asi1, 180 +.equ Aso0, 184 +.equ Aso1, 188 +.equ Asu0, 192 +.equ Asu1, 196 + +@ --- offsets on stack +.equ mDa0, 0 +.equ mDa1, 4 +.equ mDo0, 8 +.equ mDo1, 12 +.equ mDi0, 16 +.equ mRC , 20 +.equ mSize, 24 + +/****************************************************************************** + * Bitwise exclusive-OR where both operands are misaligned (i.e. src1 and src2 + * are rotated by rot1 and rot2, respectively). + * The output result is also misaligned (i.e. dst is rotated by rot1-rot2). + * - dst destination register + * - src1-src2 source registers + * - rot1-rot2 rotation values + *****************************************************************************/ +.macro eorror dst, src1, src2, rot1, rot2 +.if \rot1 >= \rot2 + eor \dst, \src1, \src2, ror #\rot1-\rot2 +.else + eor \dst, \src1, \src2, ror #32+\rot1-\rot2 +.endif +.endm + + +/****************************************************************************** + * Bit clear instruction where both operands are misaligned (i.e. src1 and src2 + * are rotated by rot1 and rot2, respectively). + * The output result is also misaligned (i.e. dst is rotated by rot1-rot2). + * - dst destination register + * - src1-src2 source registers + * - rot1-rot2 rotation values + *****************************************************************************/ +.macro bicror dst, src1, src2, rot1, rot2 +.if \rot1 >= \rot2 + bic \dst, \src1, \src2, ror #\rot1-\rot2 +.else + bic \dst, \src1, \src2, ror #32+\rot1-\rot2 +.endif +.endm + + +/****************************************************************************** + * Load 5 words from memory and XOR them all together. It is used to compute + * the parity columns for the Theta step. + * Note that all operands may be misaligned (i.e. rotated by a certain amount + * of bits), as well as the result. + * - dst destination register + * - src1-src5 source registers + * - rot1-rot5 rotation values + *****************************************************************************/ +.macro xor5 dst, src1, src2, src3, src4, src5, rot1, rot2, rot3, rot4, rot5 + ldr.w \dst, [r0, #\src1] // @slothy:reads=['r0\\src1'] + ldr.w r1, [r0, #\src2] // @slothy:reads=['r0\\src2'] + ldr.w r5, [r0, #\src3] // @slothy:reads=['r0\\src3'] + ldr r11, [r0, #\src4] // @slothy:reads=['r0\\src4'] + ldr r12, [r0, #\src5] // @slothy:reads=['r0\\src5'] + eorror \dst, \dst, r1, \rot1, \rot2 + eorror \dst, \dst, r5, \rot1, \rot3 + eorror \dst, \dst, r11, \rot1, \rot4 + eorror \dst, \dst, r12, \rot1, \rot5 +.endm + + +/****************************************************************************** + * Same as xor5, except that a previous result is stored on the stack after the + * loads from memory. This allows to have the str instruction for free. + * - dst destination register + * - src1-src5 source registers + * - rot1-rot5 rotation values + * - strreg register from previous calculations to be stored in memory + * - stradr register holding the address to store `prev` + * - strofs stack pointer memory offset for the str instruction + *****************************************************************************/ +.macro xor5str dst, src1, src2, src3, src4, src5, rot1, rot2, rot3, rot4, rot5, strreg, stradr, strofs + ldr.w \dst, [r0, #\src1] // @slothy:reads=['r0\\src1'] + ldr.w r1, [r0, #\src2] // @slothy:reads=['r0\\src2'] + ldr.w r5, [r0, #\src3] // @slothy:reads=['r0\\src3'] + ldr r11, [r0, #\src4] // @slothy:reads=['r0\\src4'] + ldr r12, [r0, #\src5] // @slothy:reads=['r0\\src5'] + str.w \strreg, [\stradr, #\strofs] // @slothy:writes=['\\stradr\\strofs'] + eorror \dst, \dst, r1, \rot1, \rot2 + eorror \dst, \dst, r5, \rot1, \rot3 + eorror \dst, \dst, r11, \rot1, \rot4 + eorror \dst, \dst, r12, \rot1, \rot5 +.endm + + +/****************************************************************************** + * Exclusive-OR where the 2nd operand is rotated by 1 bit to the left. + * - dst destination register + * - src1-src2 source registers + * - rot differential rotation btw src1 & src2 (i.e. rot=rot1-rot2) + *****************************************************************************/ +.macro xorrol dst, src1, src2, rot + eor \dst, \src1, \src2, ror #\rot-1 +.endm + + +/****************************************************************************** + * Bitslice implementation of the Chi step with misaligned operands. + * - resofs memory offset within the internal state to store the result + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotlazystr resofs, src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 + str.w r1, [r0, #\resofs] // @slothy:writes=['r0\\resofs'] +.endm + + +/****************************************************************************** + * Same as xandnotlazystr but without the str instruction which will be carried + * out later in order to take advantage of future ldr instructions. + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotlazy src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.endm + + +/****************************************************************************** + * Same as xandnotlazystr with an additional rotation in order to explictly + * compute the Rho step. It is useful in KeccakRound3 in order to return to the + * classical representation every 4 rounds. + * - resofs memory offset within the internal state to store the result + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnotstr resofs, src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.if \rot3 > 0 + ror r1, r1, #32-\rot3 +.endif + str.w r1, [r0, #\resofs] // @slothy:writes=['r0\\resofs'] +.endm + + +/****************************************************************************** + * Same as xandnotstr but without the str instruction which will be carried + * out later in order to take advantage of future ldr instructions. + * - src1-src3 source registers + * - rot1-rot3 rotation values + *****************************************************************************/ +.macro xandnot src1, src2, src3, rot1, rot2, rot3 + bicror r1, \src3, \src2, \rot3, \rot2 + eorror r1, r1, \src1, \rot3, \rot1 +.if \rot3 > 0 + ror r1, r1, #32-\rot3 +.endif +.endm + + +/****************************************************************************** + * Same as xandnot followed by the Iota step. Note that the source registers + * are not specified since they are always r3, r4 and r5. + * - out output reg (useful to store the result in the next round) + * - rot2-rot3 rotation values + * - rcofs memory offset to load the round constant + * - last Boolean to indicate whether its the last round of the + * quadruple round routine + *****************************************************************************/ +.macro xandnotiota out, rot3, rot2, rcofs, last + bicror r5, r5, r4, \rot3, \rot2 + ldr r1, [sp, #mRC] // @slothy:reads=['spmRC'] + ldr r4, [r1, #\rcofs] // @slothy:reads=['r1\\rcofs'] +.if \last == 1 + ldr r7, [r1, #32]! // @slothy:reads=['r132'] + str r1, [sp, #mRC] // @slothy:writes=['spmRC'] + cmp r7, #0xFF +.endif +.if \rot3 > 0 + eor r3, r3, r5, ror #32-\rot3 +.else + eor.w r3, r3, r5 +.endif + eor.w \out, r4, r3 +.endm + + +/****************************************************************************** + * Add the parity bits to the state registers r3-r7. If the state registers are + * not properly aligned due to previous lazy rotations, use the barrel shifter + * to fix the misalignment when adding the parity bits. + * - par1-par5 registers containing the parity bits + * - dly1-dly5 rotation values to compute the (delayed) Rho step + *****************************************************************************/ +.macro addparity par1, dly1, par2, dly2, par3, dly3, par4, dly4, par5, dly5 +.if \dly1 > 0 + eor r3, \par1, r3, ror #32-\dly1 +.else + eor.w r3, \par1, r3 +.endif +.if \dly2 > 0 + eor r4, \par2, r4, ror #32-\dly2 +.else + eor.w r4, \par2, r4 +.endif +.if \dly3 > 0 + eor r5, \par3, r5, ror #32-\dly3 +.else + eor.w r5, \par3, r5 +.endif +.if \dly4 > 0 + eor r6, \par4, r6, ror #32-\dly4 +.else + eor.w r6, \par4, r6 +.endif +.if \dly5 > 0 + eor r7, \par5, r7, ror #32-\dly5 +.else + eor.w r7, \par5, r7 +.endif +.endm + + +/****************************************************************************** + * Apply Theta, Pi, Chi and Iota steps to half a plane (i.e. 5 32-bit words) of + * the internal state. + * Note that the Rho step is calculated if and only if \lazy == 0, otherwise it + * is delayed until the next round using ''lazy reductions'' thanks to the + * inline barrel shifter. + * - src1-src5 source registers + * - par1-par5 registers containing the parity bits + * - rot2-rot5 rotation values to compute the current Rho step + * - dly1-dly5 rotation values to compute the delayed Rho step + * - prev register from previous calculations to be stored in memory + * - strofs stack pointer memory offset for the str instruction + * - reg output reg related to the Iota step (to be stored later) + *****************************************************************************/ +.macro KeccakThetaRhoPiChiIota src1, par1, dly1, src2, par2, rot2, dly2, src3, par3, rot3, dly3, src4, par4, rot4, dly4, src5, par5, rot5, dly5, ofs, last, lazy, strofs, reg + ldr.w r3, [r0, #\src1] // @slothy:reads=['r0\\src1'] + ldr r4, [r0, #\src2] // @slothy:reads=['r0\\src2'] + ldr r5, [r0, #\src3] // @slothy:reads=['r0\\src3'] + ldr r6, [r0, #\src4] // @slothy:reads=['r0\\src4'] + ldr r7, [r0, #\src5] // @slothy:reads=['r0\\src5'] + str.w r1, [r0, #\strofs] // @slothy:writes=['r0\\strofs'] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \src2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \src3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \src4, r6, r7, r3, \rot4, \rot5, 0 + xandnotlazystr \src5, r7, r3, r4, \rot5, 0, \rot2 +.else + xandnotstr \src2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \src3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \src4, r6, r7, r3, \rot4, \rot5, 0 + xandnotstr \src5, r7, r3, r4, \rot5, 0, \rot2 +.endif + xandnotiota \reg, \rot3, \rot2, \ofs, \last +.endm + + +/****************************************************************************** + * Apply Theta, Pi, and Chi steps to half a plane (i.e. 5 32-bit words) of the + * internal state. + * Note that the Rho step is calculated if and only if \lazy == 0, otherwise it + * is delayed until the next round using ''lazy reductions'' thanks to the + * inline barrel shifter. + * - src1-src5 source registers + * - dst1-dst5 memory offsets to store the output registers + * - par1-par5 registers containing the parity bits + * - rot2-rot5 rotation values to compute the current Rho step + * - dly1-dly5 rotation values to compute the delayed Rho step + * - lazy Boolean to indicate whether lazy rotations are used or not + * - strofs stack pointer memory offset to store the last output of the + * previous round. + *****************************************************************************/ +.macro KeccakThetaRhoPiChi src1, dst1, par1, rot1, dly1, src2, dst2, par2, rot2, dly2, src3, dst3, par3, rot3, dly3, src4, dst4, par4, rot4, dly4, src5, dst5, par5, rot5, dly5, lazy, strofs + ldr.w r3, [r0, #\src1] // @slothy:reads=['r0\\src1'] + ldr.w r4, [r0, #\src2] // @slothy:reads=['r0\\src2'] + ldr.w r5, [r0, #\src3] // @slothy:reads=['r0\\src3'] + ldr.w r6, [r0, #\src4] // @slothy:reads=['r0\\src4'] + ldr.w r7, [r0, #\src5] // @slothy:reads=['r0\\src5'] + str.w r1, [r0, #\strofs] // @slothy:writes=['r0\\strofs'] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotlazystr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnotlazy r7, r3, r4, \rot5, \rot1, \rot2 +.else + xandnotstr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotstr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnot r7, r3, r4, \rot5, \rot1, \rot2 +.endif +.endm + +.macro KeccakThetaRhoPiChiSkipStore src1, dst1, par1, rot1, dly1, src2, dst2, par2, rot2, dly2, src3, dst3, par3, rot3, dly3, src4, dst4, par4, rot4, dly4, src5, dst5, par5, rot5, dly5, lazy, strofs + ldr.w r3, [r0, #\src1] // @slothy:reads=['r0\\src1'] + ldr.w r4, [r0, #\src2] // @slothy:reads=['r0\\src2'] + ldr.w r5, [r0, #\src3] // @slothy:reads=['r0\\src3'] + ldr.w r6, [r0, #\src4] // @slothy:reads=['r0\\src4'] + ldr.w r7, [r0, #\src5] // @slothy:reads=['r0\\src5'] + addparity \par1, \dly1, \par2, \dly2, \par3, \dly3, \par4, \dly4, \par5, \dly5 +.if \lazy == 1 + xandnotlazystr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotlazystr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotlazystr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotlazystr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnotlazy r7, r3, r4, \rot5, \rot1, \rot2 +.else + xandnotstr \dst1, r3, r4, r5, \rot1, \rot2, \rot3 + xandnotstr \dst2, r4, r5, r6, \rot2, \rot3, \rot4 + xandnotstr \dst3, r5, r6, r7, \rot3, \rot4, \rot5 + xandnotstr \dst4, r6, r7, r3, \rot4, \rot5, \rot1 + xandnot r7, r3, r4, \rot5, \rot1, \rot2 +.endif +.endm + +/****************************************************************************** + * 1st round of the 4 unrolled rounds routine due to in-place processing. + * At the beginning of such rounds, the internal state is expected to match the + * classical representation (i.e. without transition and no delayed Rho step). + *****************************************************************************/ +.macro KeccakRound0 + xor5 r3, Abu0, Agu0, Aku0, Amu0, Asu0, 0, 0, 0, 0, 0 + xor5 r7, Abe1, Age1, Ake1, Ame1, Ase1, 0, 0, 0, 0, 0 + xorrol r6, r3, r7, 32 + xor5str r4, Abi1, Agi1, Aki1, Ami1, Asi1, 0, 0, 0, 0, 0, r6, sp, mDa0 + eor.w r6, r3, r4 + xor5str r3, Abo0, Ago0, Ako0, Amo0, Aso0, 0, 0, 0, 0, 0, r6, sp, mDo1 + eor.w r2, r7, r3 + xor5 r7, Aba0, Aga0, Aka0, Ama0, Asa0, 0, 0, 0, 0, 0 + xorrol r10, r7, r4, 32 + xor5 r4, Abo1, Ago1, Ako1, Amo1, Aso1, 0, 0, 0, 0, 0 + eor r14, r4, r7 + xor5 r7, Abe0, Age0, Ake0, Ame0, Ase0, 0, 0, 0, 0, 0 + xorrol r6, r7, r4, 32 + xor5str r4, Abu1, Agu1, Aku1, Amu1, Asu1, 0, 0, 0, 0, 0, r6, sp, mDi0 + eor.w r8, r4, r7 + xor5str r7, Abi0, Agi0, Aki0, Ami0, Asi0, 0, 0, 0, 0, 0, r8, sp, mDa1 + xorrol r9, r7, r4, 32 + xor5str r4, Aba1, Aga1, Aka1, Ama1, Asa1, 0, 0, 0, 0, 0, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Abo0, Aka1, r9, 14, 0, Agu0, Ame1, r12, 10, 0, Aka1, Asi1, r8, 2, 0, Ame1, Abo0, r11, 23, 0, Asi1, Agu0, r2, 31, 0, 1, Aka1 + KeccakThetaRhoPiChi Abe0, Asa1, r10, 0, 0, Agi1, Abe0, r2, 3, 0, Ako0, Agi1, r9, 12, 0, Amu1, Ako0, r14, 4, 0, Asa1, Amu1, r8, 9, 0, 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=['spmDa0'] + KeccakThetaRhoPiChi Abu1, Aga0, r14, 14, 0, Aga0, Ake0, r8, 18, 0, Ake0, Ami1, r10, 5, 0, Ami1, Aso0, r2, 8, 0, Aso0, Abu1, r9, 28, 0, 1, Amu1 + KeccakThetaRhoPiChi Abi1, Ama0, r2, 31, 0, Ago0, Ase1, r9, 27, 0, Aku0, Abi1, r12, 19, 0, Ama0, Ago0, r8, 20, 0, Ase1, Aku0, r11, 1, 0, 1, Abu1 + ldr r9, [sp, #mDo1] // @slothy:reads=['spmDo1'] + KeccakThetaRhoPiChiIota Aba0, r8, 0, Age0, r10, 22, 0, Aki1, r2, 22, 0, Amo1, r9, 11, 0, Asu0, r12, 7, 0, 0, 0, 1, Aku0, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=['spmDi0'] + KeccakThetaRhoPiChi Abo1, Aka0, r9, 14, 0, Agu1, Ame0, r14, 10, 0, Aka0, Asi0, r8, 1, 0, Ame0, Abo1, r10, 22, 0, Asi0, Agu1, r2, 30, 0, 1, Aba0 + KeccakThetaRhoPiChi Abe1, Asa0, r11, 1, 0, Agi0, Abe1, r2, 3, 0, Ako1, Agi0, r9, 13, 0, Amu0, Ako1, r12, 4, 0, Asa0, Amu0, r8, 9, 0, 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=['spmDa1'] + KeccakThetaRhoPiChi Abu0, Aga1, r12, 13, 0, Aga1, Ake1, r8, 18, 0, Ake1, Ami0, r11, 5, 0, Ami0, Aso1, r2, 7, 0, Aso1, Abu0, r9, 28, 0, 1, Amu0 + KeccakThetaRhoPiChi Abi0, Ama1, r2, 31, 0, Ago1, Ase0, r9, 28, 0, Aku1, Abi0, r14, 20, 0, Ama1, Ago1, r8, 21, 0, Ase0, Aku1, r10, 1, 0, 1, Abu0 + ldr r9, [sp, #mDo0] // @slothy:reads=['spmDo0'] + KeccakThetaRhoPiChiIota Aba1, r8, 0, Age1, r11, 22, 0, Aki0, r2, 21, 0, Amo0, r9, 10, 0, Asu1, r14, 7, 0, 4, 0, 1, Aku1, r14 +.endm + + + +/****************************************************************************** + * 2nd round of the 4 unrolled rounds routine due to in-place processing. + *****************************************************************************/ +.macro KeccakRound1 + xor5str r3, Asu0, Agu0, Amu0, Abu1, Aku1, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Age1, Ame0, Abe0, Ake1, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Aki0, Asi0, Agi1, Ami0, Abi1, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Amo1, Abo0, Ako1, Aso0, Ago1, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Aka1, Asa0, Aga0, Ama1, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Amo0, Abo1, Ako0, Aso1, Ago0, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Age0, Ame1, Abe1, Ake0, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Asu1, Agu1, Amu1, Abu0, Aku0, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Aki1, Asi1, Agi0, Ami1, Abi0, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Aka0, Asa1, Aga1, Ama0, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Amo1, Asa1, r9, 14, 0, Agu0, Ake1, r12, 10, 10, Asa1, Abi1, r8, 2, 12, Ake1, Amo1, r11, 23, 7, Abi1, Agu0, r2, 31, 1, 1, Asa1 + KeccakThetaRhoPiChi Age0, Ama0, r10, 0, 11, Asi0, Age0, r2, 3, 30, Ako1, Asi0, r9, 12, 1, Abu0, Ako1, r14, 4, 18, Ama0, Abu0, r8, 9, 19, 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=['spmDa0'] + KeccakThetaRhoPiChi Asu1, Aka1, r14, 14, 22, Aka1, Abe1, r8, 18, 2, Abe1, Ami0, r10, 5, 4, Ami0, Ago1, r2, 8, 28, Ago1, Asu1, r9, 28, 31, 1, Abu0 + KeccakThetaRhoPiChi Aki0, Aga0, r2, 31, 7, Abo0, Ase1, r9, 27, 14, Amu0, Aki0, r12, 19, 3, Aga0, Abo0, r8, 20, 5, Ase1, Amu0, r11, 1, 20, 1, Asu1 + ldr r9, [sp, #mDo1] // @slothy:reads=['spmDo1'] + KeccakThetaRhoPiChiIota Aba0, r8, 0, Ame1, r10, 22, 23, Agi1, r2, 22, 9, Aso1, r9, 11, 13, Aku1, r12, 7, 28, 8, 0, 1, Amu0, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=['spmDi0'] + KeccakThetaRhoPiChi Amo0, Asa0, r9, 14, 0, Agu1, Ake0, r14, 10, 10, Asa0, Abi0, r8, 1, 13, Ake0, Amo0, r10, 22, 8, Abi0, Agu1, r2, 30, 1, 1, Aba0 + KeccakThetaRhoPiChi Age1, Ama1, r11, 1, 10, Asi1, Age1, r2, 3, 31, Ako0, Asi1, r9, 13, 0, Abu1, Ako0, r12, 4, 18, Ama1, Abu1, r8, 9, 20, 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=['spmDa1'] + KeccakThetaRhoPiChi Asu0, Aka0, r12, 13, 22, Aka0, Abe0, r8, 18, 1, Abe0, Ami1, r11, 5, 4, Ami1, Ago0, r2, 7, 28, Ago0, Asu0, r9, 28, 31, 1, Abu1 + KeccakThetaRhoPiChi Aki1, Aga1, r2, 31, 7, Abo1, Ase0, r9, 28, 14, Amu1, Aki1, r14, 20, 3, Aga1, Abo1, r8, 21, 5, Ase0, Amu1, r10, 1, 21, 1, Asu0 + ldr r9, [sp, #mDo0] // @slothy:reads=['spmDo0'] + KeccakThetaRhoPiChiIota Aba1, r8, 0, Ame0, r11, 22, 22, Agi0, r2, 21, 9, Aso0, r9, 10, 14, Aku0, r14, 7, 27, 12, 0, 1, Amu1, r14 +.endm + +/****************************************************************************** + * 3rd round of the 4 unrolled rounds routine due to in-place processing. + *****************************************************************************/ +.macro KeccakRound2 + xor5str r3, Aku1, Agu0, Abu1, Asu1, Amu1, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Ame0, Ake0, Age0, Abe0, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Agi0, Abi0, Asi0, Ami1, Aki0, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Aso1, Amo1, Ako0, Ago1, Abo1, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Asa1, Ama1, Aka1, Aga1, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Aso0, Amo0, Ako1, Ago0, Abo0, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Ame1, Ake1, Age1, Abe1, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Aku0, Agu1, Abu0, Asu0, Amu0, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Agi1, Abi1, Asi1, Ami0, Aki1, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Asa0, Ama0, Aka0, Aga0, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Aso1, Ama0, r9, 14, 0, Agu0, Abe0, r12, 10, 10, Ama0, Aki0, r8, 2, 12, Abe0, Aso1, r11, 23, 7, Aki0, Agu0, r2, 31, 1, 1, Ama0 + KeccakThetaRhoPiChi Ame1, Aga0, r10, 0, 11, Abi0, Ame1, r2, 3, 30, Ako0, Abi0, r9, 12, 1, Asu0, Ako0, r14, 4, 18, Aga0, Asu0, r8, 9, 19, 1, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=['spmDa0'] + KeccakThetaRhoPiChi Aku0, Asa1, r14, 14, 22, Asa1, Age1, r8, 18, 2, Age1, Ami1, r10, 5, 4, Ami1, Abo1, r2, 8, 28, Abo1, Aku0, r9, 28, 31, 1, Asu0 + KeccakThetaRhoPiChi Agi0, Aka1, r2, 31, 7, Amo1, Ase1, r9, 27, 14, Abu1, Agi0, r12, 19, 3, Aka1, Amo1, r8, 20, 5, Ase1, Abu1, r11, 1, 20, 1, Aku0 + ldr r9, [sp, #mDo1] // @slothy:reads=['spmDo1'] + KeccakThetaRhoPiChiIota Aba0, r8, 0, Ake1, r10, 22, 23, Asi0, r2, 22, 9, Ago0, r9, 11, 13, Amu1, r12, 7, 28, 16, 0, 1, Abu1, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=['spmDi0'] + KeccakThetaRhoPiChi Aso0, Ama1, r9, 14, 0, Agu1, Abe1, r14, 10, 10, Ama1, Aki1, r8, 1, 13, Abe1, Aso0, r10, 22, 8, Aki1, Agu1, r2, 30, 1, 1, Aba0 + KeccakThetaRhoPiChi Ame0, Aga1, r11, 1, 10, Abi1, Ame0, r2, 3, 31, Ako1, Abi1, r9, 13, 0, Asu1, Ako1, r12, 4, 18, Aga1, Asu1, r8, 9, 20, 1, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=['spmDa1'] + KeccakThetaRhoPiChi Aku1, Asa0, r12, 13, 22, Asa0, Age0, r8, 18, 1, Age0, Ami0, r11, 5, 4, Ami0, Abo0, r2, 7, 28, Abo0, Aku1, r9, 28, 31, 1, Asu1 + KeccakThetaRhoPiChi Agi1, Aka0, r2, 31, 7, Amo0, Ase0, r9, 28, 14, Abu0, Agi1, r14, 20, 3, Aka0, Amo0, r8, 21, 5, Ase0, Abu0, r10, 1, 21, 1, Aku1 + ldr r9, [sp, #mDo0] // @slothy:reads=['spmDo0'] + KeccakThetaRhoPiChiIota Aba1, r8, 0, Ake0, r11, 22, 22, Asi1, r2, 21, 9, Ago1, r9, 10, 14, Amu0, r14, 7, 27, 20, 0, 1, Abu0, r14 + +.endm + + +/****************************************************************************** + * 4th round of the 4 unrolled rounds routine due to in-place processing. + * Note that the Rho step is *not* delayed so that the internal state is + * compliant w/ the classical representation at the end of the routine. + *****************************************************************************/ +.macro KeccakRound3 + xor5str r3, Amu1, Agu0, Asu1, Aku0, Abu0, 22, 10, 3, 18, 28, r14, r0, Aba1 + xor5 r7, Ake0, Abe1, Ame1, Age0, Ase1, 10, 22, 4, 7, 20 + ror r3, #32-22 + xorrol r6, r3, r7, 32-10 + xor5str r4, Asi1, Aki1, Abi0, Ami0, Agi0, 7, 30, 9, 28, 1, r6, sp, mDa0 + eor r6, r3, r4, ror #32-7 + xor5str r3, Ago0, Aso1, Ako1, Abo1, Amo0, 0, 14, 1, 14, 31, r6, sp, mDo1 + eor r2, r3, r7, ror #32-10 + xor5 r7, Aba0, Ama0, Aga1, Asa1, Aka0, 0, 2, 13, 5, 20 + xorrol r10, r7, r4, 32-7 + xor5 r4, Ago1, Aso0, Ako0, Abo0, Amo1, 0, 14, 0, 13, 31 + eor r14, r4, r7 + xor5 r7, Ake1, Abe0, Ame0, Age1, Ase0, 11, 23, 4, 8, 21 + ror r7, #32-11 + xorrol r6, r7, r4, 32 + xor5str r4, Amu0, Agu1, Asu0, Aku1, Abu1, 22, 10, 3, 18, 27, r6, sp, mDi0 + eor r8, r7, r4, ror #32-22 + xor5str r7, Asi0, Aki0, Abi1, Ami1, Agi1, 7, 31, 9, 28, 1, r8, sp, mDa1 + ror r7, #32-7 + xorrol r9, r7, r4, 32-22 + xor5str r4, Aba1, Ama1, Aga0, Asa0, Aka1, 0, 1, 12, 5, 19, r9, sp, mDo0 + eor r11, r4, r7 + xorrol r12, r3, r4, 32 + KeccakThetaRhoPiChiSkipStore Ago0, Aga0, r9, 14, 0, Agu0, Age0, r12, 10, 10, Aga0, Agi0, r8, 2, 12, Age0, Ago0, r11, 23, 7, Agi0, Agu0, r2, 31, 1, 0, Aga0 + KeccakThetaRhoPiChi Ake1, Aka1, r10, 0, 11, Aki1, Ake1, r2, 3, 30, Ako1, Aki1, r9, 12, 1, Aku1, Ako1, r14, 4, 18, Aka1, Aku1, r8, 9, 19, 0, Agu0 + ldr r8, [sp, #mDa0] // @slothy:reads=['spmDa0'] + KeccakThetaRhoPiChi Amu0, Ama0, r14, 14, 22, Ama0, Ame0, r8, 18, 2, Ame0, Ami0, r10, 5, 4, Ami0, Amo0, r2, 8, 28, Amo0, Amu0, r9, 28, 31, 0, Aku1 + KeccakThetaRhoPiChi Asi1, Asa1, r2, 31, 7, Aso1, Ase1, r9, 27, 14, Asu1, Asi1, r12, 19, 3, Asa1, Aso1, r8, 20, 5, Ase1, Asu1, r11, 1, 20, 0, Amu0 + ldr r9, [sp, #mDo1] // @slothy:reads=['spmDo1'] + KeccakThetaRhoPiChiIota Aba0, r8, 0, Abe0, r10, 22, 23, Abi0, r2, 22, 9, Abo0, r9, 11, 13, Abu0, r12, 7, 28, 24, 0, 0, Asu1, r1 + ldr.w r2, [sp, #mDi0] // @slothy:reads=['spmDi0'] + KeccakThetaRhoPiChi Ago1, Aga1, r9, 14, 0, Agu1, Age1, r14, 10, 10, Aga1, Agi1, r8, 1, 13, Age1, Ago1, r10, 22, 8, Agi1, Agu1, r2, 30, 1, 0, Aba0 + KeccakThetaRhoPiChi Ake0, Aka0, r11, 1, 10, Aki0, Ake0, r2, 3, 31, Ako0, Aki0, r9, 13, 0, Aku0, Ako0, r12, 4, 18, Aka0, Aku0, r8, 9, 20, 0, Agu1 + ldr r8, [sp, #mDa1] // @slothy:reads=['spmDa1'] + KeccakThetaRhoPiChi Amu1, Ama1, r12, 13, 22, Ama1, Ame1, r8, 18, 1, Ame1, Ami1, r11, 5, 4, Ami1, Amo1, r2, 7, 28, Amo1, Amu1, r9, 28, 31, 0, Aku0 + KeccakThetaRhoPiChi Asi0, Asa0, r2, 31, 7, Aso0, Ase0, r9, 28, 14, Asu0, Asi0, r14, 20, 3, Asa0, Aso0, r8, 21, 5, Ase0, Asu0, r10, 1, 21, 0, Amu1 + ldr r9, [sp, #mDo0] // @slothy:reads=['spmDo0'] + KeccakThetaRhoPiChiIota Aba1, r8, 0, Abe1, r11, 22, 22, Abi1, r2, 21, 9, Abo1, r9, 10, 14, Abu1, r14, 7, 27, 28, 1, 0, Asu0, r1 + str.w r1, [r0, #Aba1] // @slothy:writes=['r0Aba1'] +.endm + +@---------------------------------------------------------------------------- +@ +@ void KeccakF1600_StatePermute( void *state ) +@ +.align 8 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_armv7m_asm) +.type MLD_ASM_NAMESPACE(keccak_f1600_x1_armv7m_asm),%function +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_armv7m_asm) + push { r4 - r12, lr } + sub sp, #mSize + str r1, [sp, #mRC] +mld_keccak_f1600_x1_armv7m_asm_StatePermute_RoundLoop: + mld_keccak_f1600_x1_armv7m_asm_slothy_start: + // Instructions: 1521 + // Expected cycles: 760 + // Expected IPC: 2.00 + // + // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cycle (expected) -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> + // 0 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 + // |------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|--------- + ldr r11, [r0, #76] // *....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agu1'] + ldr r8, [r0, #48] // *....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Age0'] + ldr r14, [r0, #36] // .*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abu1'] + ldr r3, [r0, #8] // .*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe0'] + ldr r10, [r0, #116] // ..*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku1'] + ldr r5, [r0, #88] // ..*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake0'] + eor r11, r14, r11, ror #0 // ...*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #52] // ...*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Age1'] + eor r9, r3, r8, ror #0 // ....*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #12] // ....*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe1'] + eor r4, r11, r10, ror #0 // .....*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r2, [r0, #68] // .....*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ago1'] + eor r7, r9, r5, ror #0 // ......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r14, [r0, #28] // ......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abo1'] + eor r3, r6, r12, ror #0 // .......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #156] // .......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amu1'] + eor r2, r14, r2, ror #0 // ........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r10, [r0, #72] // ........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agu0'] + ldr r12, [r0, #32] // .........*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abu0'] + ldr r5, [r0, #92] // .........*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ake1'] + eor r1, r4, r6, ror #0 // ..........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #128] // ..........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ame0'] + eor r10, r12, r10, ror #0 // ...........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r11, [r0, #60] // ...........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Agi1'] + eor r9, r3, r5, ror #0 // ............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #20] // ............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi1'] + eor r5, r7, r6, ror #0 // .............*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #108] // .............*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako1'] + eor r11, r3, r11, ror #0 // ..............*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #40] // ..............*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga0'] + ldr r14, [r0, #0] // ...............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aba0'] + ldr r3, [r0, #100] // ...............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aki1'] + eor r7, r2, r7, ror #0 // ................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #64] // ................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ago0'] + eor r12, r14, r12, ror #0 // .................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #24] // .................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + eor r14, r11, r3, ror #0 // ..................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #196] // ..................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu1'] + eor r11, r2, r8, ror #0 // ...................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #112] // ...................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku0'] + ldr r2, [r0, #132] // ....................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + ldr r8, [r0, #168] // ....................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase0'] + eor r4, r1, r6, ror #0 // .....................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #104] // .....................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ako0'] + eor r1, r10, r3, ror #0 // ......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #80] // ......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aka0'] + eor r2, r9, r2, ror #0 // .......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r10, [r0, #140] // .......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ami1'] + eor r5, r5, r8, ror #0 // ........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #148] // ........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo1'] + eor r11, r11, r6, ror #0 // .........................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #152] // .........................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Amu0'] + eor r3, r12, r3, ror #0 // ..........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r8, r4, r5 // ..........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r14, r14, r10, ror #0 // ...........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r10, [r0, #144] // ...........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amo0'] + eor r9, r7, r9, ror #0 // ............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #172] // ............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase1'] + eor r1, r1, r6, ror #0 // .............................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #120] // .............................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ama0'] + eor r10, r11, r10, ror #0 // ..............................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r0, #180] // ..............................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi1'] + eor r12, r2, r7, ror #0 // ...............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r7, [r0, #192] // ...............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asu0'] + eor r2, r3, r6, ror #0 // ................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #188] // ................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso1'] + eor r11, r14, r11, ror #0 // .................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #184] // .................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso0'] + eor r1, r1, r7, ror #0 // ..................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r14, [r0, #160] // ..................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa0'] + eor r6, r9, r6, ror #0 // ...................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #56] // ...................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi0'] + eor r3, r10, r3, ror #0 // ....................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r1, r11 // ....................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r2, r14, ror #0 // .....................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r14, [r0, #16] // .....................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abi0'] + str r9, [sp, #12] // ......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDo1'] + ldr r9, [r0, #44] // ......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aga1'] + eor r2, r14, r7, ror #0 // .......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r7, [r0, #4] // .......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aba1'] + eor r14, r1, r12, ror #31 // ........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #84] // ........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka1'] + eor r7, r7, r9, ror #0 // .........................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r9, [r0, #96] // .........................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aki0'] + str r14, [sp, #0] // ..........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDa0'] + ldr r14, [r0, #124] // ..........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ama1'] + eor r1, r7, r1, ror #0 // ...........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r7, [r0, #136] // ...........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ami0'] + eor r9, r2, r9, ror #0 // ............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #164] // ............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa1'] + eor r14, r1, r14, ror #0 // .............................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #176] // .............................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi0'] + eor r9, r9, r7, ror #0 // ..............................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r14, r2, ror #0 // ..............................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r2, r12, r3 // ...............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r1, r9, r1, ror #0 // ...............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r9, [r0, #132] // ................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + eor r14, r6, r10 // ................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r10, r11, ror #31 // .................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r11, r7, r1 // .................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r12, r3, r7, ror #31 // ..................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r11, r9 // ..................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #180] // ...................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi1'] + eor r7, r2, r9 // ...................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r1, r4, ror #31 // ....................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r1, r7, r3, ror #8 // ....................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r8, [sp, #4] // .....................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDa1'] + eor r4, r5, r6, ror #31 // .....................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #24] // ......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abo0'] + eor r5, r9, r6 // ......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #72] // .......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Agu0'] + str r4, [sp, #16] // .......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['spmDi0'] + eor r6, r12, r6 // ........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r6, r5, ror #28 // ........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [sp, #8] // .........................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDo0'] + eor r4, r4, r7, ror #11 // .........................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r4, [r0, #72] // ..........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Agu0'] + bic r4, r5, r7, ror #15 // ..........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #84] // ...........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aka1'] + eor r7, r8, r7 // ...........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r4, r4, r3, ror #23 // ............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #24] // ............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo0'] + ldr r4, [r0, #104] // .............................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + eor r1, r1, r7, ror #29 // .............................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r1, [r0, #180] // ..............................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asi1'] + bic r3, r3, r7, ror #21 // ..............................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #156] // ...............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amu1'] + eor r3, r3, r6, ror #13 // ...............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r3, [r0, #132] // ................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ame1'] + eor r3, r9, r4 // ................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r14, r1 // .................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r7, r6, ror #24 // .................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #164] // ..................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa1'] + eor r7, r4, r5, ror #20 // ..................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r8, r6 // ...................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r5, r1, r3, ror #24 // ...................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #8] // ....................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe0'] + eor r6, r10, r8 // ....................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r8, r4, r1, ror #5 // .....................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r7, [r0, #84] // .....................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aka1'] + bic r7, r6, r4, ror #23 // ......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r1, r7, r1, ror #28 // ......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r1, [r0, #104] // .......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ako0'] + eor r7, r8, r3, ror #29 // .......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r8, [r0, #60] // ........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi1'] + str r7, [r0, #60] // ........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agi1'] + eor r1, r2, r8 // .........................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r8, [sp, #0] // .........................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['spmDa0'] + bic r7, r1, r6, ror #3 // ..........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r5, r1, ror #1 // ..........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r5, [r0, #8] // ...........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Abe0'] + bic r3, r3, r1, ror #9 // ...........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #88] // ............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake0'] + eor r5, r3, r6, ror #12 // ............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #40] // .............................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga0'] + str r5, [r0, #164] // .............................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asa1'] + eor r5, r7, r4, ror #26 // ..............................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r8, r6 // ..............................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #36] // ...............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abu1'] + eor r1, r10, r1 // ...............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #140] // ................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami1'] + eor r6, r14, r3 // ................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #156] // .................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Amu1'] + eor r5, r2, r4 // .................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r1, r7, ror #19 // ..................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #184] // ..................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso0'] + eor r4, r4, r6, ror #23 // ...................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #40] // ...................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aga0'] + bic r4, r5, r1, ror #3 // ....................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r9, r3 // ....................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r4, r7, ror #22 // .....................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r4, [r0, #88] // .....................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Ake0'] + bic r4, r3, r5, ror #20 // ......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r1, r4, r1, ror #23 // ......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r1, [r0, #140] // .......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ami1'] + bic r4, r6, r3, ror #18 // .......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #112] // ........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku0'] + eor r5, r4, r5, ror #6 // ........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #184] // .........................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aso0'] + bic r5, r7, r6, ror #4 // .........................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #172] // ..........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ase1'] + eor r4, r5, r3, ror #22 // ..........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #64] // ...........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ago0'] + eor r3, r9, r7 // ...........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r5, [r0, #20] // ............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi1'] + eor r7, r2, r5 // ............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r12, r1 // .............................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #36] // .............................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abu1'] + bic r4, r1, r3, ror #24 // ..............................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r4, r7, ror #20 // ..............................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r11, r6 // ...............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #120] // ...............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ama0'] + bic r6, r3, r7, ror #28 // ................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r8, r4 // ................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r7, r7, r5, ror #30 // .................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [r0, #120] // .................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ama0'] + bic r9, r4, r1, ror #1 // ..................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r9, r3, ror #25 // ..................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [r0, #172] // ...................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ase1'] + ldr r9, [r0, #100] // ...................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki1'] + bic r3, r5, r4, ror #13 // ....................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r3, r1, ror #14 // ....................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #20] // .....................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abi1'] + eor r1, r2, r9 // .....................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r9, [sp, #12] // ......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['spmDo1'] + eor r4, r7, r4, ror #11 // ......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r2, [r0, #148] // .......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amo1'] + str r4, [r0, #64] // .......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ago0'] + eor r3, r9, r2 // ........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r6, r5, ror #26 // ........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #192] // .........................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asu0'] + eor r5, r12, r4 // .........................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r4, [r0, #48] // ..........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Age0'] + eor r2, r10, r4 // ..........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + bic r6, r3, r1, ror #21 // ...........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r7, [r0, #112] // ...........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Aku0'] + bic r7, r5, r3, ror #28 // ............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r6, r2, ror #21 // ............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #48] // .............................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Age0'] + eor r7, r7, r1, ror #17 // .............................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #0] // ..............................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba0'] + eor r4, r8, r6 // ..............................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r1, r1, r2, ror #0 // ...............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r7, [r0, #100] // ...............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Aki1'] + bic r7, r4, r5, ror #25 // ................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #128] // ................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame0'] + eor r1, r4, r1, ror #10 // .................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r10, r6 // .................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r2, r4, ror #22 // ..................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [sp, #16] // ..................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmDi0'] + eor r5, r4, r5, ror #15 // ...................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [sp, #20] // ...................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmRC'] + str r5, [r0, #192] // ....................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asu0'] + eor r5, r7, r3, ror #21 // ....................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #80] // .....................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aka0'] + ldr r7, [r0, #76] // .....................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agu1'] + ldr r4, [r4, #0] // ......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r10'] + eor r3, r8, r3 // ......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r4, r4, r1 // .......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r5, [r0, #148] // .......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Amo1'] + eor r1, r14, r7 // ........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #28] // ........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo1'] + str r4, [r0, #0] // .........................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aba0'] + bic r4, r6, r3, ror #21 // .........................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r4, r4, r1, ror #12 // ..........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r7, r9, r7 // ..........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r4, [r0, #128] // ...........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ame0'] + bic r5, r3, r1, ror #23 // ...........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #176] // ............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi0'] + eor r5, r5, r7, ror #19 // ............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #80] // .............................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aka0'] + eor r5, r2, r4 // .............................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r5, r6, ror #8 // ..............................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r4, r3, ror #29 // ..............................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #176] // ...............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Asi0'] + bic r3, r7, r5, ror #16 // ...............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #108] // ................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako1'] + eor r4, r9, r4 // ................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r3, r6, ror #24 // .................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #152] // .................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amu0'] + str r6, [r0, #28] // ..................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo1'] + eor r3, r12, r3 // ..................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r1, r1, r7, ror #28 // ...................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #12] // ...................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe1'] + ldr r7, [r0, #56] // ....................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi0'] + eor r7, r2, r7 // ....................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r11, r6 // .....................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r1, r1, r5, ror #12 // .....................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r1, [r0, #76] // ......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Agu1'] + bic r5, r4, r7, ror #10 // ......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r1, [r0, #160] // .......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asa0'] + eor r5, r5, r6, ror #12 // .......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r5, [r0, #160] // ........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asa0'] + bic r5, r3, r4, ror #23 // ........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r8, r1 // .........................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r5, r7, ror #1 // .........................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r5, [r0, #12] // ..........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abe1'] + ldr r8, [sp, #4] // ..........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['spmDa1'] + bic r5, r1, r3, ror #5 // ...........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r4, r5, r4, ror #28 // ...........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r4, [r0, #56] // ............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agi0'] + ldr r5, [r0, #92] // ............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake1'] + bic r4, r6, r1, ror #24 // .............................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r4, r3, ror #29 // .............................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #108] // ..............................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ako1'] + ldr r4, [r0, #136] // ..............................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami0'] + eor r3, r11, r5 // ...............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + bic r6, r7, r6, ror #2 // ...............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r4, r2, r4 // ................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #44] // ................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga1'] + ldr r5, [r0, #32] // .................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abu0'] + eor r12, r12, r5 // .................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r8, r7 // ..................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r6, r1, ror #26 // ..................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r6, [r0, #152] // ...................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Amu0'] + ldr r1, [r0, #188] // ...................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso1'] + bic r5, r3, r7, ror #19 // ....................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r9, r1 // ....................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r5, r12, ror #24 // .....................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r1, [r0, #68] // .....................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ago1'] + str r5, [r0, #44] // ......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aga1'] + eor r9, r9, r1 // ......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + bic r1, r4, r3, ror #2 // .......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r5, [r0, #116] // .......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aku1'] + eor r1, r1, r7, ror #21 // ........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r1, [r0, #92] // ........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ake1'] + bic r1, r6, r4, ror #21 // .........................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r14, r5 // .........................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r3, r1, r3, ror #23 // ..........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r3, [r0, #136] // ..........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Ami0'] + bic r3, r12, r6, ror #17 // ...........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #124] // ...........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ama1'] + eor r4, r3, r4, ror #6 // ............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r8, r1 // ............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #188] // .............................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aso1'] + bic r7, r7, r12, ror #5 // .............................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #16] // ..............................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + eor r6, r7, r6, ror #22 // ..............................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r2, r3 // ...............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r12, [sp, #8] // ...............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['spmDo0'] + ldr r7, [r0, #168] // ................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase0'] + str r6, [r0, #32] // ................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abu0'] + eor r3, r10, r7 // .................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r10, r5, r9, ror #24 // .................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r10, r4, ror #21 // ..................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r7, [r0, #124] // ..................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ama1'] + bic r6, r1, r5, ror #1 // ...................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #96] // ...................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + eor r6, r6, r9, ror #25 // ....................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r6, [r0, #168] // ....................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ase0'] + bic r6, r3, r1, ror #12 // .....................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r2, r2, r7 // .....................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r6, r5, ror #13 // ......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r5, [r0, #16] // ......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abi0'] + bic r5, r4, r3, ror #30 // .......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #144] // .......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amo0'] + eor r10, r5, r1, ror #10 // ........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r12, r6 // ........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r10, [r0, #68] // .........................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Ago1'] + bic r9, r9, r4, ror #29 // .........................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #4] // ..........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aba1'] + eor r1, r9, r3, ror #27 // ..........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #52] // ...........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Age1'] + eor r3, r8, r7 // ...........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r6, r11, r6 // ............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #196] // ............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu1'] + eor r8, r14, r12 // .............................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r1, [r0, #116] // .............................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aku1'] + bic r4, r5, r2, ror #21 // ..............................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [sp, #20] // ..............................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmRC'] + eor r11, r4, r6, ror #20 // ...............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r11, [r0, #52] // ...............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Age1'] + bic r14, r8, r5, ror #29 // ................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r12, #4] // ................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r14'] + eor r14, r14, r2, ror #18 // .................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r14, [r0, #96] // .................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aki0'] + bic r14, r2, r6, ror #31 // ..................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #72] // ..................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agu0'] + bic r7, r3, r8, ror #25 // ...................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #192] // ...................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu0'] + eor r5, r7, r5, ror #22 // ....................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #144] // ....................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Amo0'] + bic r12, r6, r3, ror #22 // .....................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #152] // .....................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Amu0'] + eor r10, r12, r8, ror #15 // ......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r10, [r0, #196] // ......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Asu1'] + eor r8, r3, r14, ror #11 // .......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r14, [r0, #36] // .......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abu1'] + ldr r10, [r0, #116] // ........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku1'] + ldr r5, [r0, #96] // ........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + eor r9, r4, r9, ror #12 // .........................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r4, [r0, #128] // .........................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ame0'] + ldr r1, [r0, #52] // ..........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Age1'] + ldr r12, [r0, #176] // ..........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asi0'] + eor r6, r11, r8 // ...........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r2, r9, r7, ror #19 // ...........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r11, r1, r4, ror #20 // ............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #60] // ............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi1'] + eor r4, r5, r12, ror #9 // .............................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #92] // .............................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake1'] + eor r5, r2, r14, ror #4 // ..............................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r14, [r0, #8] // ..............................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe0'] + ldr r8, [r0, #136] // ...............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ami0'] + eor r12, r4, r3, ror #30 // ...............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r6, [r0, #4] // ................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aba1'] + ldr r2, [r0, #24] // ................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + eor r7, r11, r14, ror #6 // .................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #172] // .................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase1'] + eor r14, r5, r10, ror #26 // ..................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #48] // ..................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Age0'] + eor r11, r7, r1, ror #3 // ...................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #132] // ...................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + eor r4, r12, r8, ror #11 // ....................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #76] // ....................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agu1'] + eor r6, r11, r9, ror #22 // .....................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #148] // .....................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Amo1'] + ldr r8, [r0, #108] // ......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ako1'] + eor r3, r3, r7, ror #20 // ......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r11, [r0, #196] // .......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asu1'] + ror r14, #10 // .......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r9, r14, r6, ror #21 // ........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [sp, #0] // ........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDa0'] + eor r9, r11, r12, ror #12 // .........................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r10, [r0, #20] // .........................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abi1'] + ldr r7, [r0, #180] // ..........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asi1'] + eor r5, r5, r2, ror #18 // ..........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r12, [r0, #184] // ...........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aso0'] + ldr r2, [r0, #156] // ...........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amu1'] + eor r1, r5, r8, ror #31 // ............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #12] // ............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe1'] + eor r10, r4, r10, ror #6 // .............................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #100] // .............................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki1'] + eor r11, r1, r12, ror #18 // ..............................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #144] // ..............................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo0'] + eor r4, r5, r7, ror #8 // ...............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #68] // ...............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ago1'] + eor r14, r14, r10, ror #25 // ................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #28] // ................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo1'] + eor r7, r3, r8, ror #7 // .................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #80] // .................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka0'] + eor r3, r11, r1, ror #1 // ..................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r0, #4] // ..................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba1'] + eor r12, r12, r5, ror #18 // ...................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #84] // ...................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka1'] + eor r9, r9, r2, ror #19 // ....................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #104] // ....................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + eor r2, r3, r6, ror #22 // .....................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #0] // .....................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aba0'] + eor r11, r11, r8, ror #31 // ......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r8, [r0, #56] // ......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agi0'] + eor r1, r6, r1, ror #30 // .......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #164] // .......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asa1'] + eor r5, r12, r5, ror #0 // ........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #160] // ........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa0'] + eor r4, r4, r8, ror #30 // .........................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r8, [r0, #88] // .........................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ake0'] + eor r6, r11, r6, ror #20 // ..........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r11, [r0, #40] // ..........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aga0'] + eor r12, r1, r12, ror #19 // ...........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #32] // ...........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abu0'] + eor r8, r7, r8, ror #3 // ............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #124] // ............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ama1'] + eor r12, r12, r11, ror #27 // .............................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r0, #140] // .............................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami1'] + eor r9, r9, r1, ror #4 // ..............................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r14, [sp, #12] // ..............................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDo1'] + eor r14, r12, r7, ror #12 // ...............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r7, [r0, #112] // ...............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aku0'] + eor r4, r4, r11, ror #11 // ................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r0, #188] // ................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso1'] + eor r10, r14, r10, ror #24 // .................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #168] // .................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase0'] + eor r9, r9, r7, ror #27 // ..................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #64] // ..................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ago0'] + eor r11, r5, r11, ror #19 // ...................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #44] // ...................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga1'] + eor r7, r8, r1, ror #22 // ....................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #16] // ....................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + eor r12, r11, r12, ror #1 // .....................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r8, [r0, #120] // .....................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ama0'] + ror r7, #21 // ......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r11, r6, r5, ror #27 // ......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r14, r12, r14 // .......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r6, r7, r9, ror #10 // .......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r11, r11, r8, ror #13 // ........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #164] // ........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa1'] + eor r1, r4, r1, ror #6 // .........................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r4, [r0, #92] // .........................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ake1'] + eor r7, r7, r12, ror #31 // ..........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #72] // ..........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agu0'] + eor r12, r3, r11, ror #31 // ...........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ror r1, #25 // ...........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r7, [sp, #16] // ............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDi0'] + eor r8, r6, r8, ror #20 // ............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r11, r11, r1 // .............................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r12, r5, ror #22 // .............................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r6, [sp, #4] // ..............................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDa1'] + eor r4, r11, r4, ror #25 // ..............................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r1, r9, ror #9 // ...............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r7, [r0, #120] // ...............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ama0'] + ldr r9, [r0, #20] // ................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi1'] + bic r3, r4, r8, ror #21 // ................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r3, r5, ror #13 // .................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #92] // .................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ake1'] + eor r6, r6, r7, ror #13 // ..................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #148] // ..................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo1'] + eor r7, r1, r3 // ...................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r2, r9, ror #31 // ...................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r9, r8, r5, ror #24 // ....................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r5, r5, r7, ror #28 // ....................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r9, r7, ror #20 // .....................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r9, [r0, #164] // .....................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Asa1'] + ldr r9, [r0, #32] // ......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abu0'] + bic r7, r7, r3, ror #15 // ......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r5, r3, ror #11 // .......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r5, [r0, #72] // .......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Agu0'] + bic r3, r3, r4, ror #8 // ........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #48] // ........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Age0'] + eor r8, r3, r8, ror #29 // .........................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r8, [r0, #20] // .........................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abi1'] + eor r3, r14, r9, ror #14 // ..........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r9, r10, r5, ror #21 // ..........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #108] // ...........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ako1'] + eor r7, r7, r4, ror #23 // ...........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r7, [r0, #148] // ............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Amo1'] + bic r7, r9, r6, ror #23 // ............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r7, r3, ror #28 // .............................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #176] // .............................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi0'] + eor r5, r1, r5, ror #31 // ..............................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #108] // ..............................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ako1'] + bic r4, r6, r3, ror #5 // ...............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r1, [sp, #8] // ...............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['spmDo0'] + eor r7, r2, r7, ror #2 // ................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r8, r3, r5, ror #24 // ................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #84] // .................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka1'] + eor r4, r4, r5, ror #29 // .................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #176] // ..................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asi0'] + eor r8, r8, r7, ror #1 // ..................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r8, [r0, #48] // ...................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Age0'] + ldr r8, [r0, #24] // ...................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + bic r4, r7, r9, ror #3 // ....................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r4, r6, ror #26 // ....................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #68] // .....................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ago1'] + str r4, [r0, #32] // .....................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abu0'] + bic r7, r5, r7, ror #9 // ......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r1, r8, ror #18 // ......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r8, [sp, #0] // .......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['spmDa0'] + eor r1, r1, r6, ror #1 // .......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #136] // ........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami0'] + eor r4, r8, r3, ror #30 // ........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #196] // .........................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asu1'] + eor r9, r7, r9, ror #12 // .........................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #12] // ..........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abe1'] + str r9, [r0, #120] // ..........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Ama0'] + eor r6, r2, r6, ror #4 // ...........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r3, r14, r3, ror #10 // ...........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r7, r10, r7, ror #28 // ............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r9, r3, r1, ror #18 // ............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r9, r6, ror #6 // .............................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [r0, #68] // .............................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ago1'] + bic r9, r4, r3, ror #4 // ..............................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r9, r1, ror #22 // ..............................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r1, r1, r6, ror #20 // ...............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r9, [r0, #196] // ...............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Asu1'] + eor r9, r1, r7, ror #23 // ................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [r0, #136] // ................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ami0'] + bic r1, r6, r7, ror #3 // .................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #96] // .................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + bic r9, r7, r4, ror #19 // ..................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r1, r4, ror #22 // ..................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #60] // ...................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi1'] + eor r9, r9, r3, ror #23 // ...................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #152] // ....................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amu0'] + str r7, [r0, #12] // ....................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abe1'] + eor r7, r2, r6, ror #25 // .....................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #172] // .....................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ase1'] + eor r6, r2, r4, ror #23 // ......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r2, r12, r1, ror #29 // ......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r9, [r0, #84] // .......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Aka1'] + ldr r9, [r0, #40] // .......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aga0'] + bic r4, r5, r7, ror #28 // ........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r11, r3, ror #12 // ........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r3, r2, r5, ror #24 // .........................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r3, r3, r7, ror #20 // .........................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r3, [r0, #40] // ..........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aga0'] + eor r9, r8, r9, ror #27 // ..........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #0] // ...........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aba0'] + eor r4, r4, r1, ror #26 // ...........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r4, [r0, #152] // ............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Amu0'] + ldr r4, [r0, #132] // ............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + bic r7, r7, r1, ror #30 // .............................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r7, r7, r9, ror #11 // .............................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r7, [r0, #24] // ..............................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo0'] + eor r3, r8, r3 // ..............................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r7, r1, r9, ror #13 // ...............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #116] // ...............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aku1'] + eor r7, r7, r2, ror #14 // ................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r4, r10, r4, ror #9 // ................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r7, [r0, #96] // .................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aki0'] + bic r7, r9, r2, ror #1 // .................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [sp, #12] // ..................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmDo1'] + ldr r2, [r0, #188] // ..................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso1'] + eor r7, r7, r5, ror #25 // ...................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r5, r6, r4, ror #0 // ...................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r7, [r0, #172] // ....................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ase1'] + eor r7, r12, r1, ror #4 // ....................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [sp, #20] // .....................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['spmRC'] + eor r5, r3, r5, ror #10 // .....................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r1, [r1, #8] // ......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r18'] + eor r2, r9, r2, ror #19 // ......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r1, r5 // .......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + bic r1, r4, r3, ror #22 // .......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r5, [r0, #0] // ........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aba0'] + bic r3, r3, r7, ror #25 // ........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r1, r7, ror #15 // .........................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r1, [r0, #116] // .........................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aku1'] + bic r7, r7, r2, ror #28 // ..........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #88] // ..........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ake0'] + ldr r1, [r0, #76] // ...........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Agu1'] + eor r7, r7, r6, ror #17 // ...........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r3, r3, r2, ror #21 // ............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #188] // ............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aso1'] + str r7, [r0, #60] // .............................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agi1'] + eor r7, r10, r5, ror #24 // .............................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r14, r1, ror #22 // ..............................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #160] // ..............................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa0'] + bic r6, r2, r6, ror #21 // ...............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #124] // ...............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ama1'] + eor r4, r6, r4, ror #21 // ................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #132] // ................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ame1'] + eor r4, r8, r3, ror #19 // .................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #144] // .................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo0'] + eor r1, r8, r1, ror #12 // ..................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r9, r3 // ..................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r3, r4, r5, ror #23 // ...................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #16] // ...................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + eor r3, r3, r6, ror #19 // ....................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [sp, #16] // ....................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmDi0'] + str r3, [r0, #160] // .....................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Asa0'] + bic r3, r7, r4, ror #21 // .....................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r8, r2, r8, ror #31 // ......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r3, r3, r5, ror #12 // ......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r3, [r0, #88] // .......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ake0'] + bic r5, r5, r6, ror #28 // .......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r5, r5, r8, ror #12 // ........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #76] // ........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agu1'] + bic r5, r6, r8, ror #16 // .........................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #168] // .........................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ase0'] + ldr r6, [r0, #52] // ..........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Age1'] + eor r5, r5, r7, ror #24 // ..........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + bic r7, r8, r7, ror #8 // ...........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r8, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asi1'] + eor r7, r7, r4, ror #29 // ............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #36] // ............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abu1'] + str r7, [r0, #16] // .............................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abi0'] + eor r7, r10, r3, ror #11 // .............................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r11, r6, ror #22 // ..............................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r8, r2, r8, ror #1 // ..............................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #144] // ...............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Amo0'] + eor r6, r12, r4, ror #14 // ...............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #192] // ................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu0'] + bic r3, r8, r10, ror #2 // ................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r3, r1, ror #26 // .................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #36] // .................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abu1'] + bic r5, r10, r1, ror #24 // ..................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #104] // ..................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + eor r5, r5, r6, ror #29 // ...................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r9, r3 // ...................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #104] // ....................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ako0'] + eor r12, r12, r4, ror #10 // ....................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #156] // .....................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Amu1'] + bic r4, r6, r3, ror #23 // .....................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r4, r4, r8, ror #1 // ......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................. + bic r6, r1, r6, ror #5 // ......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r1, [r0, #28] // .......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abo1'] + str r4, [r0, #52] // .......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Age1'] + eor r5, r14, r5, ror #29 // ........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r4, r3, r8, ror #10 // ........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #8] // .........................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abe0'] + eor r3, r6, r3, ror #28 // .........................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #140] // ..........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ami1'] + eor r4, r4, r10, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r10, [r0, #64] // ...........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ago0'] + str r4, [r0, #124] // ...........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ama1'] + eor r4, r9, r1, ror #18 // ............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #180] // ............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asi1'] + eor r6, r2, r6, ror #4 // .............................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r9, r10, ror #1 // .............................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #80] // ..............................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka0'] + eor r3, r11, r8, ror #28 // ..............................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [sp, #4] // ...............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['spmDa1'] + bic r10, r1, r6, ror #21 // ...............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r9, r8, r9, ror #31 // ................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r10, r3, ror #23 // ................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r10, [r0, #140] // .................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ami1'] + bic r10, r6, r3, ror #2 // .................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r10, r9, ror #21 // ..................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r10, [r0, #8] // ..................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abe0'] + bic r10, r12, r1, ror #17 // ...................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r10, r10, r6, ror #6 // ...................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................... + str r10, [r0, #64] // ....................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ago0'] + ldr r10, [r0, #100] // ....................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki1'] + bic r3, r3, r9, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................. + eor r6, r3, r12, ror #24 // .....................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................. + str r6, [r0, #80] // ......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aka0'] + bic r3, r9, r12, ror #5 // ......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #44] // .......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aga1'] + eor r1, r3, r1, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................ + str r1, [r0, #192] // ........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asu0'] + eor r12, r2, r10, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r10, [r0, #56] // .........................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agi0'] + bic r1, r5, r4, ror #24 // .........................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r9, [sp, #8] // ..........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['spmDo0'] + ldr r3, [r0, #128] // ..........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ame0'] + eor r6, r8, r6, ror #27 // ...........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................ + eor r1, r1, r12, ror #21 // ...........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................ + str r1, [r0, #44] // ............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aga1'] + eor r10, r2, r10, ror #23 // ............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #4] // .............................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba1'] + eor r8, r8, r1 // .............................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................... + bic r1, r6, r5, ror #1 // ..............................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #184] // ..............................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso0'] + eor r1, r1, r4, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................ + str r1, [r0, #168] // ...............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Ase0'] + bic r1, r7, r6, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r5, r1, r5, ror #13 // ................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................... + str r5, [r0, #100] // .................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aki1'] + eor r9, r9, r2, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #112] // ..................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku0'] + ldr r5, [sp, #20] // ..................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmRC'] + bic r1, r12, r7, ror #30 // ...................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................... + eor r1, r1, r6, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................... + str r1, [r0, #28] // ....................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo1'] + bic r6, r4, r12, ror #29 // ....................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r5, #12] // .....................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r112'] + eor r5, r11, r3, ror #10 // .....................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r4, [r0, #72] // ......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agu0'] + eor r3, r6, r7, ror #27 // ......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................. + str r3, [r0, #156] // .......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Amu1'] + eor r6, r14, r2, ror #5 // .......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r3, [r0, #116] // ........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku1'] + ldr r2, [r0, #36] // ........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abu1'] + bic r14, r9, r10, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................. + eor r7, r14, r5, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................. + str r7, [r0, #128] // ..........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Ame0'] + bic r11, r6, r9, ror #29 // ..........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #196] // ...........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asu1'] + eor r11, r11, r10, ror #18 // ...........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................ + str r11, [r0, #56] // ............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agi0'] + ldr r14, [r0, #156] // ............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amu1'] + bic r11, r8, r6, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r11, r9, ror #22 // .............................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................... + str r9, [r0, #184] // ..............................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aso0'] + bic r12, r10, r5, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r10, [r0, #128] // ...............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ame0'] + bic r5, r5, r8, ror #22 // ...............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................ + ldr r9, [r0, #56] // ................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi0'] + eor r3, r3, r4, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r11, [r0, #88] // .................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake0'] + eor r6, r5, r6, ror #15 // .................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................... + str r6, [r0, #112] // ..................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aku0'] + ldr r4, [r0, #16] // ..................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + eor r6, r3, r2, ror #19 // ...................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #148] // ...................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo1'] + eor r3, r10, r11, ror #20 // ....................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................... + eor r11, r6, r7, ror #4 // ....................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #140] // .....................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ami1'] + ldr r10, [r0, #176] // .....................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asi0'] + eor r6, r9, r4, ror #9 // ......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................. + eor r5, r11, r14, ror #26 // ......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................. + ldr r4, [r0, #48] // .......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Age0'] + ldr r11, [r0, #8] // .......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abe0'] + eor r14, r8, r12, ror #11 // ........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r6, r10, ror #30 // ........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #92] // .........................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ake1'] + eor r3, r3, r4, ror #6 // .........................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................. + ldr r12, [r0, #132] // ..........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ame1'] + eor r8, r1, r14 // ..........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................. + str r8, [r0, #4] // ...........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Aba1'] + ldr r1, [r0, #52] // ...........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Age1'] + ldr r14, [r0, #12] // ............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe1'] + eor r4, r12, r6, ror #20 // ............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #96] // .............................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + eor r10, r9, r7, ror #11 // .............................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................... + eor r12, r4, r1, ror #7 // ..............................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #168] // ..............................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase0'] + ldr r4, [r0, #188] // ...............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aso1'] + ror r5, #10 // ...............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................ + eor r1, r12, r14, ror #3 // ................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................... + ldr r14, [r0, #144] // ................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo0'] + eor r2, r4, r2, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #184] // .................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso0'] + eor r7, r1, r7, ror #22 // ..................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #104] // ..................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + eor r11, r3, r11, ror #3 // ...................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase1'] + ror r7, #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................... + eor r3, r10, r6, ror #6 // ....................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................... + eor r9, r2, r4, ror #31 // .....................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................. + ldr r6, [r0, #76] // .....................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agu1'] + eor r12, r11, r12, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................. + ldr r10, [r0, #112] // ......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aku0'] + eor r4, r5, r3, ror #25 // .......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #160] // .......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asa0'] + eor r14, r8, r14, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................... + ldr r8, [r0, #4] // ........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba1'] + eor r2, r5, r12, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #20] // .........................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abi1'] + eor r6, r10, r6, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................. + ldr r10, [r0, #60] // ..........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agi1'] + eor r1, r8, r1, ror #31 // ...........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................ + ldr r8, [r0, #32] // ...........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abu0'] + eor r11, r10, r5, ror #8 // ............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #108] // ............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako1'] + str r4, [sp, #12] // .............................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDo1'] + ldr r4, [r0, #192] // .............................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu0'] + eor r8, r6, r8, ror #19 // ..............................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #64] // ..............................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ago0'] + eor r10, r14, r5, ror #0 // ...............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................ + ldr r14, [r0, #152] // ...............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Amu0'] + eor r8, r8, r4, ror #4 // ................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #24] // ................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + eor r10, r10, r6, ror #19 // .................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................... + ldr r6, [r0, #164] // .................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa1'] + eor r5, r8, r14, ror #27 // ..................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................... + ldr r14, [r0, #0] // ..................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba0'] + str r2, [sp, #0] // ...................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDa0'] + eor r4, r10, r4, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................... + eor r6, r14, r6, ror #30 // ....................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................... + ldr r14, [r0, #124] // ....................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ama1'] + ldr r2, [r0, #68] // .....................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ago1'] + eor r8, r7, r5, ror #10 // .....................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................. + eor r7, r7, r4, ror #31 // ......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................. + ldr r10, [r0, #84] // ......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aka1'] + eor r14, r6, r14, ror #19 // .......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #28] // .......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abo1'] + eor r9, r9, r2, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................... + ldr r2, [r0, #44] // ........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga1'] + str r7, [sp, #16] // .........................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDi0'] + eor r10, r14, r10, ror #27 // .........................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................. + eor r9, r9, r6, ror #1 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #120] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ama0'] + eor r14, r10, r2, ror #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asi1'] + eor r2, r9, r12, ror #22 // ............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #80] // ............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aka0'] + eor r10, r14, r3, ror #24 // .............................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................... + eor r14, r4, r14 // .............................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................... + eor r4, r1, r7, ror #20 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................... + ldr r1, [r0, #136] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami0'] + eor r11, r11, r6, ror #30 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................ + ldr r6, [r0, #40] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aga0'] + eor r3, r4, r12, ror #27 // ................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................... + ldr r12, [r0, #100] // ................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki1'] + eor r1, r11, r1, ror #11 // .................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #96] // .................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + eor r11, r3, r6, ror #13 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................... + ldr r4, [r0, #8] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abe0'] + ldr r6, [r0, #40] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aga0'] + eor r1, r1, r12, ror #6 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #120] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ama0'] + eor r7, r2, r7, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................... + ror r1, #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................. + eor r12, r9, r11, ror #31 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................. + eor r11, r11, r1 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................. + eor r9, r8, r6, ror #13 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................. + eor r5, r1, r5, ror #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #72] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Agu0'] + eor r6, r11, r4, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................... + str r8, [sp, #4] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['spmDa1'] + eor r4, r8, r3, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #188] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aso1'] + eor r1, r12, r1, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................. + eor r3, r5, r3 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................. + bic r8, r7, r6, ror #8 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................ + eor r8, r8, r4, ror #29 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................ + str r8, [r0, #96] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aki0'] + bic r8, r4, r1, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................... + bic r4, r6, r4, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................... + eor r8, r8, r3, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................... + str r8, [r0, #120] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ama0'] + eor r4, r4, r1, ror #13 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................... + str r4, [r0, #8] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Abe0'] + bic r8, r1, r3, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #104] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + ldr r1, [r0, #132] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + bic r3, r3, r7, ror #15 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................... + eor r8, r8, r7, ror #11 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................... + str r8, [r0, #72] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agu0'] + eor r4, r5, r4, ror #31 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #16] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + ldr r8, [r0, #192] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asu0'] + eor r6, r3, r6, ror #23 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................... + eor r3, r10, r1, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................... + str r5, [sp, #8] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['spmDo0'] + eor r1, r2, r7, ror #2 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................. + eor r8, r14, r8, ror #14 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................. + str r6, [r0, #188] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aso1'] + bic r6, r3, r9, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................ + bic r7, r4, r1, ror #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................ + eor r6, r6, r8, ror #28 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................... + str r6, [r0, #104] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ako0'] + eor r6, r7, r3, ror #12 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................. + str r6, [r0, #40] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aga0'] + ldr r6, [r0, #164] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asa1'] + bic r7, r1, r3, ror #3 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................. + eor r7, r7, r9, ror #26 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................ + str r7, [r0, #192] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Asu0'] + bic r3, r9, r8, ror #5 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Age1'] + eor r3, r3, r4, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................... + str r3, [r0, #16] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abi0'] + bic r4, r8, r4, ror #24 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................... + ldr r8, [sp, #0] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmDa0'] + ldr r3, [r0, #112] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aku0'] + eor r7, r4, r1, ror #1 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #28] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo1'] + eor r6, r8, r6, ror #30 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................... + eor r1, r10, r9, ror #28 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................... + ldr r9, [r0, #148] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo1'] + eor r3, r14, r3, ror #10 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................... + str r7, [r0, #132] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ame1'] + eor r7, r5, r4, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................... + eor r9, r5, r9, ror #18 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #140] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ami1'] + bic r4, r1, r6, ror #19 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................... + eor r4, r4, r3, ror #23 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................. + str r4, [r0, #164] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Asa1'] + eor r4, r2, r5, ror #4 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................. + bic r5, r6, r3, ror #4 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................. + eor r5, r5, r7, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................ + str r5, [r0, #112] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................ // @slothy:writes=['r0Aku0'] + bic r5, r4, r1, ror #3 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................... + eor r5, r5, r6, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................... + str r5, [r0, #52] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Age1'] + bic r6, r3, r7, ror #18 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................. + ldr r3, [r0, #84] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Aka1'] + bic r7, r7, r4, ror #20 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #36] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Abu1'] + eor r1, r7, r1, ror #23 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................ + str r1, [r0, #140] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ami1'] + eor r1, r8, r3, ror #27 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #56] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi0'] + eor r4, r6, r4, ror #6 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................... + str r4, [r0, #28] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo1'] + eor r4, r12, r5, ror #29 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #172] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ase1'] + eor r7, r2, r3, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................ + bic r3, r4, r9, ror #24 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................... + eor r5, r11, r5, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................... + eor r3, r3, r7, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................... + str r3, [r0, #84] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aka1'] + bic r3, r1, r4, ror #1 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................... + eor r3, r3, r9, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................... + str r3, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ase1'] + bic r9, r9, r7, ror #28 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................... + ldr r3, [r0, #64] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ago0'] + ldr r6, [r0, #92] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ake1'] + eor r9, r9, r5, ror #26 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................. + str r9, [r0, #36] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abu1'] + bic r7, r7, r5, ror #30 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................. + bic r9, r5, r1, ror #13 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................. + ldr r5, [r0, #176] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Asi0'] + eor r4, r9, r4, ror #14 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................ + ldr r9, [sp, #12] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmDo1'] + str r4, [r0, #56] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agi0'] + eor r4, r7, r1, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................. + ldr r1, [r0, #156] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Amu1'] + eor r7, r9, r3, ror #19 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................. + str r4, [r0, #148] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Amo1'] + eor r2, r2, r5, ror #23 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................ + eor r5, r10, r6, ror #9 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................ + ldr r4, [r0, #0] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aba0'] + eor r1, r12, r1, ror #4 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................... + bic r6, r7, r2, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................... + ldr r3, [sp, #20] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................... // @slothy:reads=['spmRC'] + eor r6, r6, r5, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................... + str r6, [r0, #92] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ake1'] + bic r6, r1, r7, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................ + eor r4, r8, r4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................ + eor r6, r6, r2, ror #17 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................... + str r6, [r0, #176] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asi0'] + bic r6, r2, r5, ror #0 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................... + ldr r2, [r3, #16] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................... // @slothy:reads=['r116'] + bic r3, r4, r1, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................... + eor r3, r3, r7, ror #21 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................... + ldr r7, [r0, #124] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ama1'] + str r3, [r0, #64] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ago0'] + bic r3, r5, r4, ror #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................... + eor r4, r4, r6, ror #10 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................... + ldr r5, [r0, #12] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Abe1'] + eor r6, r8, r7, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................. + ldr r7, [r0, #76] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Agu1'] + eor r3, r3, r1, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................. + eor r4, r2, r4 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................ + ldr r1, [r0, #100] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aki1'] + eor r5, r10, r5, ror #24 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................... + eor r7, r14, r7, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................... + ldr r2, [sp, #16] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................. // @slothy:reads=['spmDi0'] + str r4, [r0, #0] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aba0'] + bic r4, r5, r6, ror #21 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................. + str r3, [r0, #156] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Amu1'] + eor r1, r2, r1, ror #31 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................ + eor r4, r4, r7, ror #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................ + str r4, [r0, #12] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Abe1'] + bic r4, r1, r5, ror #8 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................... + ldr r3, [r0, #184] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aso0'] + eor r4, r4, r6, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................... + eor r3, r9, r3 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................... + str r4, [r0, #100] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Aki1'] + bic r4, r6, r7, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................ + ldr r6, [r0, #44] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Aga1'] + bic r7, r7, r3, ror #28 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................... + eor r4, r4, r3, ror #19 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................... + str r4, [r0, #124] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ama1'] + eor r7, r7, r1, ror #12 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................... + str r7, [r0, #76] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................... // @slothy:writes=['r0Agu1'] + eor r6, r8, r6, ror #12 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................... + ldr r8, [r0, #20] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abi1'] + ldr r4, [r0, #168] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................... // @slothy:reads=['r0Ase0'] + bic r7, r3, r1, ror #16 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................... + eor r7, r7, r5, ror #24 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................... + ldr r1, [r0, #128] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................. // @slothy:reads=['r0Ame0'] + str r7, [r0, #184] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aso0'] + eor r8, r2, r8, ror #1 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................. + eor r7, r10, r4, ror #11 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................. + ldr r10, [r0, #108] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ako1'] + eor r4, r9, r10 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................ + eor r3, r11, r1, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................... + bic r1, r4, r8, ror #10 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................... + ldr r5, [r0, #196] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................. // @slothy:reads=['r0Asu1'] + bic r10, r3, r6, ror #24 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................. + eor r1, r1, r3, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................. + str r1, [r0, #44] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................. // @slothy:writes=['r0Aga1'] + eor r1, r12, r5, ror #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................ + ldr r5, [r0, #136] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................ // @slothy:reads=['r0Ami0'] + bic r3, r8, r3, ror #2 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................... + eor r3, r3, r6, ror #26 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................... + eor r10, r10, r1, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................... + str r10, [r0, #108] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ako1'] + eor r10, r2, r5, ror #4 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................... + str r3, [r0, #196] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................... // @slothy:writes=['r0Asu1'] + bic r5, r1, r4, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................ + ldr r3, [r0, #48] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................ // @slothy:reads=['r0Age0'] + eor r5, r5, r8, ror #1 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................... + ldr r8, [r0, #116] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................... // @slothy:reads=['r0Aku1'] + str r5, [r0, #128] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................... // @slothy:writes=['r0Ame0'] + bic r5, r6, r1, ror #5 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................... + eor r5, r5, r4, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................... + ldr r4, [r0, #24] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + eor r1, r12, r8, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................... + ldr r8, [r0, #144] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................... // @slothy:reads=['r0Amo0'] + eor r3, r11, r3, ror #28 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................... + ldr r12, [r0, #160] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................... // @slothy:reads=['r0Asa0'] + eor r4, r9, r4, ror #1 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................. + ldr r6, [sp, #4] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................. // @slothy:reads=['spmDa1'] + str r5, [r0, #20] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................. // @slothy:writes=['r0Abi1'] + eor r5, r9, r8, ror #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................. + eor r9, r6, r12, ror #31 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................ + bic r12, r4, r10, ror #21 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................ + bic r8, r9, r1, ror #5 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................... + eor r8, r8, r4, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................... + str r8, [r0, #116] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................. // @slothy:writes=['r0Aku1'] + bic r4, r1, r4, ror #17 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................. + eor r8, r12, r3, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................. + str r8, [r0, #136] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................. // @slothy:writes=['r0Ami0'] + bic r8, r3, r9, ror #19 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................ + ldr r12, [r0, #80] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................ // @slothy:reads=['r0Aka0'] + eor r1, r8, r1, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................... + str r1, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................... // @slothy:writes=['r0Asa0'] + bic r3, r10, r3, ror #2 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................... + ldr r8, [r0, #60] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................... // @slothy:reads=['r0Agi1'] + eor r12, r6, r12, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................... + ldr r1, [r0, #180] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................... // @slothy:reads=['r0Asi1'] + eor r4, r4, r10, ror #6 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................ + eor r10, r2, r8, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................ + str r4, [r0, #24] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................... // @slothy:writes=['r0Abo0'] + eor r3, r3, r9, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................... + str r3, [r0, #48] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................... // @slothy:writes=['r0Age0'] + eor r3, r2, r1, ror #23 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................... + ldr r8, [r0, #32] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................... // @slothy:reads=['r0Abu0'] + bic r2, r10, r7, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................... + ldr r9, [r0, #68] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................... // @slothy:reads=['r0Ago1'] + eor r2, r2, r12, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................... + ldr r1, [sp, #8] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................... // @slothy:reads=['spmDo0'] + str r2, [r0, #144] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................... // @slothy:writes=['r0Amo0'] + eor r2, r14, r8, ror #29 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................. + eor r9, r1, r9, ror #18 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................. + ldr r8, [r0, #4] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................. // @slothy:reads=['r0Aba1'] + eor r4, r6, r8 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................. + bic r8, r7, r12, ror #12 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................ + ldr r6, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................ // @slothy:reads=['r0Amu0'] + eor r1, r8, r2, ror #13 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................... + bic r8, r2, r5, ror #24 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................... + str r1, [r0, #60] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................. // @slothy:writes=['r0Agi1'] + eor r8, r8, r10, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................. + str r8, [r0, #80] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................. // @slothy:writes=['r0Aka0'] + ldr r1, [r0, #88] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................. // @slothy:reads=['r0Ake0'] + bic r10, r5, r10, ror #29 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................ + ldr r8, [sp, #20] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................ // @slothy:reads=['spmRC'] + bic r2, r12, r2, ror #1 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................... + ldr r12, [r0, #72] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................... // @slothy:reads=['r0Agu0'] + eor r2, r2, r5, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................... + eor r11, r11, r1, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................... + str r2, [r0, #168] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................... // @slothy:writes=['r0Ase0'] + eor r5, r10, r7, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................... + str r5, [r0, #32] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................ // @slothy:writes=['r0Abu0'] + eor r6, r14, r6, ror #5 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................ + ldr r1, [r8, #20] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................... // @slothy:reads=['r120'] + bic r5, r9, r3, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................... + ldr r10, [r0, #156] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................... // @slothy:reads=['r0Amu1'] + eor r5, r5, r11, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................... + str r5, [r0, #88] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................... // @slothy:writes=['r0Ake0'] + bic r7, r6, r9, ror #29 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................... + ldr r2, [r0, #196] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................... // @slothy:reads=['r0Asu1'] + eor r8, r7, r3, ror #18 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................... + str r8, [r0, #180] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................... // @slothy:writes=['r0Asi1'] + bic r8, r3, r11, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................... + ldr r7, [r0, #112] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................. // @slothy:reads=['r0Aku0'] + bic r3, r4, r6, ror #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................. + ldr r14, [r0, #32] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................. // @slothy:reads=['r0Abu0'] + eor r5, r3, r9, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................. + str r5, [r0, #68] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................ // @slothy:writes=['r0Ago1'] + bic r9, r11, r4, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................ + ldr r5, [r0, #88] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................... // @slothy:reads=['r0Ake0'] + eor r9, r9, r6, ror #15 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................... + str r9, [r0, #152] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................. // @slothy:writes=['r0Amu0'] + eor r9, r4, r8, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................. + ldr r3, [r0, #180] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................. // @slothy:reads=['r0Asi1'] + eor r8, r10, r12, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................. + ldr r6, [r0, #12] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................ // @slothy:reads=['r0Abe1'] + eor r12, r1, r9 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................ + str r12, [r0, #4] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................... // @slothy:writes=['r0Aba1'] + ldr r12, [r0, #100] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................... // @slothy:reads=['r0Aki1'] + eor r2, r8, r2, ror #19 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................... + eor r1, r5, r6, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................... + ldr r9, [r0, #188] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................... // @slothy:reads=['r0Aso1'] + ldr r5, [r0, #132] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................... // @slothy:reads=['r0Ame1'] + eor r2, r2, r7, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................ + eor r7, r3, r12, ror #9 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................ + ldr r8, [r0, #16] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................... // @slothy:reads=['r0Abi0'] + ldr r4, [r0, #48] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................... // @slothy:reads=['r0Age0'] + eor r3, r2, r14, ror #26 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................... + eor r12, r1, r5, ror #6 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................... + ldr r2, [r0, #136] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................... // @slothy:reads=['r0Ami0'] + eor r11, r7, r8, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................... + ldr r8, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................... // @slothy:reads=['r0Ase1'] + eor r4, r12, r4, ror #3 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................... + ldr r5, [r0, #56] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................... // @slothy:reads=['r0Agi0'] + ldr r1, [r0, #108] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................... // @slothy:reads=['r0Ako1'] + eor r6, r11, r2, ror #11 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................. + eor r10, r4, r8, ror #22 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................. + ldr r7, [r0, #64] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................. // @slothy:reads=['r0Ago0'] + ldr r2, [r0, #28] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................. // @slothy:reads=['r0Abo1'] + eor r4, r6, r5, ror #6 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................ + ror r3, #10 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................ + ldr r5, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................... // @slothy:reads=['r0Abe0'] + ldr r6, [r0, #92] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................... // @slothy:reads=['r0Ake1'] + ldr r12, [r0, #184] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................. // @slothy:reads=['r0Aso0'] + eor r7, r7, r9, ror #18 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................. + ldr r14, [r0, #68] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................. // @slothy:reads=['r0Ago1'] + eor r8, r6, r5, ror #20 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................. + ldr r9, [r0, #128] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................ // @slothy:reads=['r0Ame0'] + eor r11, r14, r12, ror #18 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................ + ldr r14, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................... // @slothy:reads=['r0Age1'] + ldr r12, [r0, #144] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................... // @slothy:reads=['r0Amo0'] + eor r5, r3, r10, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................... + eor r9, r8, r9, ror #7 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................... + ldr r8, [r0, #120] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................... // @slothy:reads=['r0Ama0'] + eor r1, r7, r1, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................... + ldr r6, [r0, #168] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................ // @slothy:reads=['r0Ase0'] + eor r7, r9, r14, ror #3 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................ + ldr r14, [r0, #104] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................... // @slothy:reads=['r0Ako0'] + eor r1, r1, r2, ror #18 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................... + ldr r9, [r0, #76] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................... // @slothy:reads=['r0Agu1'] + eor r6, r7, r6, ror #22 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................... + ldr r2, [r0, #152] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................... // @slothy:reads=['r0Amu0'] + eor r7, r11, r14, ror #0 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................... + ldr r11, [r0, #24] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................... // @slothy:reads=['r0Abo0'] + eor r9, r2, r9, ror #12 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................... + ldr r14, [r0, #192] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................... // @slothy:reads=['r0Asu0'] + eor r2, r1, r12, ror #1 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................... + ldr r1, [r0, #148] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................. // @slothy:reads=['r0Amo1'] + eor r12, r7, r11, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................. + ldr r7, [r0, #124] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................. // @slothy:reads=['r0Ama1'] + eor r9, r9, r14, ror #19 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................. + ldr r11, [r0, #4] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................ // @slothy:reads=['r0Aba1'] + eor r14, r12, r1, ror #1 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................ + ldr r12, [r0, #0] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................... // @slothy:reads=['r0Aba0'] + eor r3, r3, r4, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................... + ldr r1, [r0, #44] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................. // @slothy:reads=['r0Aga1'] + eor r8, r12, r8, ror #30 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................. + ldr r12, [r0, #40] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................. // @slothy:reads=['r0Aga0'] + eor r11, r11, r7, ror #31 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................. + ldr r7, [r0, #164] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................ // @slothy:reads=['r0Asa1'] + eor r1, r8, r1, ror #19 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................ + ldr r8, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................... // @slothy:reads=['r0Asa0'] + eor r11, r11, r12, ror #20 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................... + ldr r12, [r0, #116] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................... // @slothy:reads=['r0Aku1'] + eor r1, r1, r7, ror #27 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................... + ldr r7, [r0, #84] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................... // @slothy:reads=['r0Aka1'] + eor r11, r11, r8, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................... + ldr r8, [r0, #36] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................ // @slothy:reads=['r0Abu1'] + eor r9, r9, r12, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................ + ldr r12, [r0, #96] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................... // @slothy:reads=['r0Aki0'] + eor r11, r11, r7, ror #13 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................... + ldr r7, [r0, #176] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................... // @slothy:reads=['r0Asi0'] + eor r9, r9, r8, ror #27 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................... + ldr r8, [r0, #20] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................... // @slothy:reads=['r0Abi1'] + str r5, [sp, #0] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................... // @slothy:writes=['spmDa0'] + eor r7, r7, r12, ror #8 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................... + eor r12, r2, r11, ror #31 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................... + ldr r5, [r0, #140] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................... // @slothy:reads=['r0Ami1'] + eor r7, r7, r8, ror #30 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................... + ldr r8, [r0, #80] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................. // @slothy:reads=['r0Aka0'] + eor r2, r2, r10, ror #22 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................. + ldr r10, [r0, #60] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................. // @slothy:reads=['r0Agi1'] + str r3, [sp, #12] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................. // @slothy:writes=['spmDo1'] + eor r5, r7, r5, ror #11 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................ + ror r6, #21 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................ + eor r7, r1, r8, ror #12 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................... + ldr r3, [r0, #72] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................... // @slothy:reads=['r0Agu0'] + eor r1, r5, r10, ror #6 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................. + ldr r5, [r0, #40] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................. // @slothy:reads=['r0Aga0'] + eor r8, r6, r9, ror #10 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................. + eor r10, r7, r4, ror #24 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................. + ror r1, #25 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................ + eor r9, r1, r9, ror #9 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................ + eor r11, r11, r1 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................... + eor r4, r12, r3, ror #22 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................... + ldr r1, [r0, #48] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................... // @slothy:reads=['r0Age0'] + eor r5, r8, r5, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................... + ldr r3, [r0, #64] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................... // @slothy:reads=['r0Ago0'] + eor r3, r9, r3 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................... + eor r6, r6, r14, ror #31 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................ + eor r14, r14, r7 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................ + bic r7, r5, r4, ror #24 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................... + str r6, [sp, #16] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................... // @slothy:writes=['spmDi0'] + eor r6, r7, r3, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................... + eor r7, r11, r1, ror #25 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................... + ldr r1, [r0, #56] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................... // @slothy:reads=['r0Agi0'] + str r8, [sp, #4] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................... // @slothy:writes=['spmDa1'] + ror r6, r6, #30 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................... + str r6, [r0, #40] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................... // @slothy:writes=['r0Aga0'] + bic r6, r7, r5, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................... + eor r1, r2, r1, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................... + eor r6, r6, r4, ror #13 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................. + str r9, [sp, #8] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................. // @slothy:writes=['spmDo0'] + bic r4, r4, r3, ror #28 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................. + bic r3, r3, r1, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................. + ror r6, r6, #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................ + eor r3, r3, r7, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................ + str r6, [r0, #48] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................... // @slothy:writes=['r0Age0'] + bic r7, r1, r7, ror #8 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................... + ldr r6, [r0, #100] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................. // @slothy:reads=['r0Aki1'] + eor r5, r7, r5, ror #29 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................. + ror r3, r3, #18 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................. + eor r1, r4, r1, ror #11 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................. + ldr r4, [r0, #92] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................ // @slothy:reads=['r0Ake1'] + str r3, [r0, #64] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................ // @slothy:writes=['r0Ago0'] + ldr r3, [r0, #84] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................... // @slothy:reads=['r0Aka1'] + eor r7, r2, r6, ror #2 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................... + ldr r6, [r0, #108] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................... // @slothy:reads=['r0Ako1'] + ror r5, r5, #1 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................... + eor r4, r10, r4, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................... + eor r8, r8, r3, ror #13 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................... + ldr r3, [r0, #116] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................ // @slothy:reads=['r0Aku1'] + str r5, [r0, #56] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................ // @slothy:writes=['r0Agi0'] + eor r6, r9, r6, ror #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................... + ror r5, r1, #22 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................... + bic r1, r7, r4, ror #3 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................... + str r5, [r0, #72] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................... // @slothy:writes=['r0Agu0'] + eor r3, r14, r3, ror #14 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................... + eor r5, r1, r8, ror #26 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................... + bic r1, r3, r6, ror #24 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................... + eor r1, r1, r7, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................... + ror r5, r5, #29 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................... + bic r7, r6, r7, ror #9 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................... + str r5, [r0, #116] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................. // @slothy:writes=['r0Aku1'] + eor r7, r7, r4, ror #12 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................. + ror r1, r1, #28 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................. + str r1, [r0, #92] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................. // @slothy:writes=['r0Ake1'] + ldr r5, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................ // @slothy:reads=['r0Amu0'] + ror r1, r7, #20 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................ + bic r7, r4, r8, ror #23 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................... + str r1, [r0, #84] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................... // @slothy:writes=['r0Aka1'] + bic r8, r8, r3, ror #5 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................. + eor r3, r7, r3, ror #28 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................. + ldr r1, [r0, #144] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................. // @slothy:reads=['r0Amo0'] + eor r4, r8, r6, ror #29 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................. + ldr r6, [r0, #136] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................ // @slothy:reads=['r0Ami0'] + str r3, [r0, #108] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................ // @slothy:writes=['r0Ako1'] + ldr r8, [sp, #0] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................... // @slothy:reads=['spmDa0'] + ldr r3, [r0, #188] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................... // @slothy:reads=['r0Aso1'] + eor r7, r14, r5, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................... + ror r5, r4, #23 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................... + eor r4, r9, r1, ror #1 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................... + str r5, [r0, #100] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................... // @slothy:writes=['r0Aki1'] + eor r5, r2, r6, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................ + eor r9, r9, r3, ror #18 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................ + ldr r6, [r0, #120] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................... // @slothy:reads=['r0Ama0'] + ldr r1, [r0, #128] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................... // @slothy:reads=['r0Ame0'] + bic r3, r7, r4, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................... + eor r3, r3, r5, ror #6 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................... + eor r6, r8, r6, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................... + ror r3, r3, #18 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................... + eor r1, r10, r1, ror #28 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................... + str r3, [r0, #144] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................... // @slothy:writes=['r0Amo0'] + bic r3, r6, r7, ror #4 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................... + eor r3, r3, r4, ror #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................... + bic r4, r4, r5, ror #20 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................. + bic r5, r5, r1, ror #3 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................. + ror r3, r3, #14 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................. + eor r5, r5, r6, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................. + str r3, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................ // @slothy:writes=['r0Amu0'] + eor r3, r4, r1, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................ + ldr r4, [r0, #16] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................... // @slothy:reads=['r0Abi0'] + bic r6, r1, r6, ror #19 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................... + ror r5, r5, #24 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................. + str r5, [r0, #128] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................. // @slothy:writes=['r0Ame0'] + ldr r5, [r0, #180] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................. // @slothy:reads=['r0Asi1'] + eor r7, r6, r7, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................. + ldr r1, [r0, #172] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................ // @slothy:reads=['r0Ase1'] + ldr r6, [r0, #164] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................ // @slothy:reads=['r0Asa1'] + eor r4, r2, r4, ror #23 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................... + ror r3, r3, #4 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................... + eor r5, r2, r5, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................... + eor r2, r11, r1, ror #12 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................... + str r3, [r0, #136] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................... // @slothy:writes=['r0Ami0'] + eor r1, r8, r6, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................... + ror r6, r7, #27 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................ + str r6, [r0, #120] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................ // @slothy:writes=['r0Ama0'] + bic r6, r9, r5, ror #28 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................... + eor r6, r6, r2, ror #26 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................... + ldr r7, [r0, #196] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................... // @slothy:reads=['r0Asu1'] + bic r3, r5, r2, ror #30 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................... + eor r3, r3, r1, ror #11 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................... + ror r6, r6, #5 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................... + str r6, [r0, #196] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................... // @slothy:writes=['r0Asu1'] + eor r6, r12, r7, ror #29 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................... + bic r7, r2, r1, ror #13 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................... + ror r3, r3, #1 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................... + str r3, [r0, #188] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................. // @slothy:writes=['r0Aso1'] + bic r2, r6, r9, ror #24 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................. + bic r3, r1, r6, ror #1 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................. + ldr r1, [r0, #24] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................. // @slothy:reads=['r0Abo0'] + eor r3, r3, r9, ror #25 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................ + ldr r9, [sp, #12] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................ // @slothy:reads=['spmDo1'] + eor r6, r7, r6, ror #14 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................... + ldr r7, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................... // @slothy:reads=['r0Abe0'] + eor r2, r2, r5, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................. + ldr r5, [r0, #32] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................. // @slothy:reads=['r0Abu0'] + ror r6, r6, #31 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................. + eor r1, r9, r1, ror #19 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................. + str r6, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................ // @slothy:writes=['r0Asi1'] + ror r6, r3, #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................ + eor r3, r10, r7, ror #9 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................... + ror r7, r2, #13 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................... + str r7, [r0, #164] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................... // @slothy:writes=['r0Asa1'] + eor r7, r12, r5, ror #4 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................... + str r6, [r0, #172] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................... // @slothy:writes=['r0Ase1'] + bic r6, r1, r4, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................... + bic r5, r7, r1, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................ + eor r2, r5, r4, ror #17 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................ + ldr r5, [r0, #0] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................... // @slothy:reads=['r0Aba0'] + eor r6, r6, r3, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................... + eor r5, r8, r5 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................... + ror r2, r2, #25 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................... + bic r4, r4, r3, ror #0 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................... + str r2, [r0, #16] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................... // @slothy:writes=['r0Abi0'] + bic r2, r3, r5, ror #22 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................... + eor r4, r5, r4, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................... + ror r6, r6, #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................... + bic r3, r5, r7, ror #25 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................... + ldr r5, [r0, #44] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................. // @slothy:reads=['r0Aga1'] + eor r3, r3, r1, ror #21 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................. + ldr r1, [r0, #76] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................. // @slothy:reads=['r0Agu1'] + eor r2, r2, r7, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................. + ldr r7, [sp, #20] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................ // @slothy:reads=['spmRC'] + eor r5, r8, r5, ror #19 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................ + str r6, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................... // @slothy:writes=['r0Abe0'] + ldr r6, [r7, #24] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................... // @slothy:reads=['r124'] + ror r2, r2, #10 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................. + eor r7, r6, r4 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................. + eor r4, r14, r1, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................. + str r3, [r0, #24] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................. // @slothy:writes=['r0Abo0'] + ldr r6, [r0, #68] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................ // @slothy:reads=['r0Ago1'] + eor r3, r9, r6 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................ + str r2, [r0, #32] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................... // @slothy:writes=['r0Abu0'] + ldr r1, [r0, #80] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................... // @slothy:reads=['r0Aka0'] + bic r6, r5, r4, ror #23 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................... + str r7, [r0, #0] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................... // @slothy:writes=['r0Aba0'] + ldr r7, [r0, #60] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................... // @slothy:reads=['r0Agi1'] + ldr r2, [sp, #16] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................... // @slothy:reads=['spmDi0'] + eor r6, r6, r3, ror #19 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................ + eor r8, r8, r1, ror #12 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................ + ldr r1, [r0, #52] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................... // @slothy:reads=['r0Age1'] + ror r6, r6, #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................... + eor r7, r2, r7, ror #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................... + str r6, [r0, #44] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................... // @slothy:writes=['r0Aga1'] + bic r6, r4, r3, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................... + eor r1, r10, r1, ror #24 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................... + eor r6, r6, r7, ror #12 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................... + bic r3, r3, r7, ror #16 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................... + ror r6, r6, #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................... + eor r3, r3, r1, ror #24 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................... + bic r7, r7, r1, ror #8 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................. + str r6, [r0, #76] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................. // @slothy:writes=['r0Agu1'] + ror r3, r3, #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................. + str r3, [r0, #68] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................. // @slothy:writes=['r0Ago1'] + eor r6, r7, r5, ror #29 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................ + ldr r7, [r0, #88] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................ // @slothy:reads=['r0Ake0'] + ldr r3, [r0, #112] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................... // @slothy:reads=['r0Aku0'] + bic r1, r1, r5, ror #21 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................... + eor r4, r1, r4, ror #12 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................. + ldr r1, [r0, #156] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................. // @slothy:reads=['r0Amu1'] + ror r6, r6, #2 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................. + eor r5, r11, r7, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................. + ror r7, r4, #10 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................ + eor r4, r12, r3, ror #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................ + str r7, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................... // @slothy:writes=['r0Age1'] + bic r3, r5, r8, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................... + eor r1, r12, r1, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................... + ldr r12, [r0, #96] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................... // @slothy:reads=['r0Aki0'] + str r6, [r0, #60] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................... // @slothy:writes=['r0Agi1'] + eor r6, r3, r4, ror #29 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................... + ldr r3, [r0, #104] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................ // @slothy:reads=['r0Ako0'] + bic r7, r8, r4, ror #5 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................ + ror r6, r6, #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................... + eor r3, r9, r3 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................... + str r6, [r0, #104] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................... // @slothy:writes=['r0Ako0'] + eor r6, r2, r12, ror #1 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................... + eor r12, r7, r3, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................... + bic r7, r4, r3, ror #23 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................... + ldr r4, [r0, #184] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................... // @slothy:reads=['r0Aso0'] + bic r3, r3, r6, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................... + ror r12, r12, #23 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................... + eor r3, r3, r5, ror #12 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................... + str r12, [r0, #96] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................. // @slothy:writes=['r0Aki0'] + ldr r12, [r0, #140] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................. // @slothy:reads=['r0Ami1'] + eor r4, r9, r4, ror #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................. + ror r3, r3, #19 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................. + str r3, [r0, #80] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................ // @slothy:writes=['r0Aka0'] + bic r3, r6, r5, ror #2 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................ + ldr r5, [r0, #148] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................... // @slothy:reads=['r0Amo1'] + eor r3, r3, r8, ror #26 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................... + ldr r8, [sp, #4] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................. // @slothy:reads=['spmDa1'] + eor r6, r7, r6, ror #1 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................. + ldr r7, [r0, #132] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................. // @slothy:reads=['r0Ame1'] + eor r9, r9, r5, ror #1 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................. + ldr r5, [r0, #124] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................ // @slothy:reads=['r0Ama1'] + eor r12, r2, r12, ror #4 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................ + ror r3, r3, #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................... + str r3, [r0, #112] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................... // @slothy:writes=['r0Aku0'] + eor r3, r11, r7, ror #28 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................... + ror r7, r6, #28 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................... + eor r6, r8, r5, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................... + bic r5, r9, r12, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................... + str r7, [r0, #88] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................ // @slothy:writes=['r0Ake0'] + eor r5, r5, r3, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................ + bic r7, r3, r6, ror #19 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................... + ror r5, r5, #4 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................... + eor r7, r7, r1, ror #24 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................... + str r5, [r0, #140] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................... // @slothy:writes=['r0Ami1'] + bic r3, r12, r3, ror #2 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................... + ror r5, r7, #27 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................... + bic r7, r1, r9, ror #17 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................... + str r5, [r0, #124] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................... // @slothy:writes=['r0Ama1'] + eor r3, r3, r6, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................... + bic r6, r6, r1, ror #5 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................... + ldr r5, [r0, #160] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................. // @slothy:reads=['r0Asa0'] + ror r1, r3, #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................. + ldr r3, [r0, #168] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................. // @slothy:reads=['r0Ase0'] + eor r6, r6, r9, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................. + str r1, [r0, #132] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................ // @slothy:writes=['r0Ame1'] + ldr r1, [r0, #20] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................ // @slothy:reads=['r0Abi1'] + eor r9, r7, r12, ror #6 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................... + ldr r12, [r0, #192] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................... // @slothy:reads=['r0Asu0'] + eor r5, r8, r5, ror #27 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................. + eor r7, r10, r3, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................. + ldr r10, [r0, #176] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................. // @slothy:reads=['r0Asi0'] + eor r1, r2, r1, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................. + ror r3, r6, #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................ + str r3, [r0, #156] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................ // @slothy:writes=['r0Amu1'] + eor r6, r14, r12, ror #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................... + ldr r12, [sp, #20] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................... // @slothy:reads=['spmRC'] + eor r10, r2, r10, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................... + ror r9, r9, #19 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................... + bic r3, r7, r5, ror #12 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................... + str r9, [r0, #148] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................... // @slothy:writes=['r0Amo1'] + eor r2, r3, r6, ror #13 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................ + ldr r3, [r0, #36] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................ // @slothy:reads=['r0Abu1'] + bic r9, r5, r6, ror #1 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................... + eor r9, r9, r4, ror #25 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................... + ror r2, r2, #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................... + str r2, [r0, #176] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................... // @slothy:writes=['r0Asi0'] + bic r2, r10, r7, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................... + ror r9, r9, #11 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................... + bic r6, r6, r4, ror #24 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................... + str r9, [r0, #168] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................... // @slothy:writes=['r0Ase0'] + bic r4, r4, r10, ror #29 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................... + ldr r9, [r0, #28] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................... // @slothy:reads=['r0Abo1'] + eor r6, r6, r10, ror #21 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................. + eor r14, r14, r3, ror #5 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................. + ldr r10, [sp, #8] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................. // @slothy:reads=['spmDo0'] + eor r3, r4, r7, ror #27 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................. + ldr r4, [r0, #12] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................ // @slothy:reads=['r0Abe1'] + eor r5, r2, r5, ror #10 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................ + ror r6, r6, #12 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............... + eor r7, r10, r9, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............... + ror r3, r3, #4 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............. + eor r4, r11, r4, ror #10 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............. + ldr r10, [r0, #4] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............. // @slothy:reads=['r0Aba1'] + str r3, [r0, #192] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............. // @slothy:writes=['r0Asu0'] + bic r2, r7, r1, ror #21 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............ + eor r3, r8, r10 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............ + bic r9, r14, r7, ror #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........... + str r6, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........... // @slothy:writes=['r0Asa0'] + eor r8, r2, r4, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......... + ror r6, r5, #1 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......... + bic r2, r4, r3, ror #22 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......... + ror r5, r8, #22 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......... + eor r9, r9, r1, ror #18 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........ + str r6, [r0, #184] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........ // @slothy:writes=['r0Aso0'] + ldr r6, [r12, #28] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....... // @slothy:reads=['r128'] + ldr r8, [r12, #32]! // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....... // @slothy:reads=['r132'] + str r12, [sp, #20] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...... // @slothy:writes=['spmRC'] + bic r4, r1, r4, ror #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...... + ror r12, r9, #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..... + bic r10, r3, r14, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..... + str r12, [r0, #20] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.... // @slothy:writes=['r0Abi1'] + eor r9, r3, r4, ror #11 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.... + cmp r8, #0xFF // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*... + str r5, [r0, #12] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*... // @slothy:writes=['r0Abe1'] + eor r11, r2, r14, ror #15 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.. + eor r2, r6, r9 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.. + str r2, [r0, #4] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*. // @slothy:writes=['r0Aba1'] + ror r12, r11, #10 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*. + str r12, [r0, #36] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................* // @slothy:writes=['r0Abu1'] + eor r2, r10, r7, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................* + str r2, [r0, #28] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................* // @slothy:writes=['r0Abo1'] + + // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cycle (expected) -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> + // 0 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 + // |------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|------------------------|---------- + // ldr r3, [r0, #32] // .........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #72] // ........*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #112] // ...................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #152] // .........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #192] // ...............................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r1, ror #0 // ...........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r5, ror #0 // ......................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r11, ror #0 // .............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r12, ror #0 // ..................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #12] // ....*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #52] // ...*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #92] // .........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #132] // ....................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #172] // ............................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r1, ror #0 // .......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r5, ror #0 // ............*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r11, ror #0 // .......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r12, ror #0 // ...............................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r3, r7, ror #31 // ........................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #20] // ............*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r1, [r0, #60] // ...........*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #100] // ...............*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #140] // .......................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #180] // ..............................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #0] // ..........................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r1, ror #0 // ..............*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #0 // ..................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #0 // ...........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r12, ror #0 // .................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r3, r4 // ....................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #24] // .................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #64] // ................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #104] // .....................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #144] // ...........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #184] // .................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #12] // ......................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r1, ror #0 // ...................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r5, ror #0 // .........................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r11, ror #0 // ..............................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r12, ror #0 // ....................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r2, r7, r3 // ...............................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #0] // ...............*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #40] // ..............*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #80] // ......................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #120] // .............................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #160] // ..................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #0 // .................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r5, ror #0 // ..........................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r11, ror #0 // ................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r12, ror #0 // .....................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r10, r7, r4, ror #31 // .................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #28] // ......*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #68] // .....*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #108] // .............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #148] // ........................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r12, [r0, #188] // ................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r1, ror #0 // ........*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r5, ror #0 // ................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r11, ror #0 // ............................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r12, ror #0 // ...................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r14, r4, r7 // ................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #8] // .*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #48] // *........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #88] // ..*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #128] // ..........*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #168] // ....................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #0 // ....*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r5, ror #0 // ......*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r11, ror #0 // .............*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #0 // ........................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r7, r4, ror #31 // .....................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #36] // .*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #76] // *........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #116] // ..*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #156] // .......*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #196] // ..................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #16] // .......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r1, ror #0 // ...*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #0 // .....*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #0 // ..........*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r12, ror #0 // .....................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r8, r4, r7 // ..........................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #16] // .....................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #56] // ...................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #96] // .........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #136] // ...........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #176] // .............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r8, [sp, #4] // .....................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #0 // .......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r5, ror #0 // ............................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r11, ror #0 // ..............................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #0 // ...............................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r9, r7, r4, ror #31 // ....................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #4] // .......................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #44] // ......................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #84] // ........................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #124] // ..........................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #164] // ............................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r9, [sp, #8] // .........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #0 // .........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #0 // ...........................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r11, ror #0 // .............................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #0 // ..............................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r11, r4, r7 // .................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r12, r3, r4, ror #31 // ..................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #24] // ......................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #72] // .......................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #84] // ...........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #132] // ................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #180] // ...................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r9, r3 // ......................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r12, r4 // ........................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r8, r5 // ...........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r11, r6 // ..................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r2, r7 // ...................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // .................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #20 // ..................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #84] // .....................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ..............................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #13 // ...............................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #132] // ................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r7, r6, ror #8 // ....................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #29 // .............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #180] // ..............................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #15 // ..........................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #23 // ............................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #24] // ............................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r4, r3, ror #28 // ........................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #11 // .........................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #8] // ....................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #60] // ........................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #104] // .............................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #156] // ...............................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #164] // ..................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #72] // ..........................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r10, r3 // ....................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r2, r4 // .........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r9, r5 // ................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r14, r6 // .................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r8, r7 // ...................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #9 // ...........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #12 // ............................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #164] // .............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #24 // ...................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #1 // ..........................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #8] // ...........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #5 // .....................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #29 // .......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #60] // ........................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #23 // ......................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #28 // ......................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #104] // .......................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #3 // ..........................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #26 // ..............................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r8, [sp, #0] // .........................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #36] // ...............................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #40] // .............................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #88] // ............................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #140] // ................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #184] // ..................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #156] // .................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r14, r3 // ................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r8, r4 // ..............................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r10, r5 // ...............................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r2, r6 // .................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r9, r7 // ....................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #19 // ..................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #23 // ...................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #40] // ...................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #3 // ....................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #22 // .....................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #88] // .....................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #20 // ......................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #23 // ......................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #140] // .......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r3, r7, ror #18 // .......................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #6 // ........................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #184] // .........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #4 // .........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #22 // ..........................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #20] // ............................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #64] // ...........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #112] // ........................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #120] // ...............................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #172] // ..........................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #36] // .............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r2, r3 // ............................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r9, r4 // ...........................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r5, r12, r5 // .............................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r8, r6 // ................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r11, r7 // ...............................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // ..............................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #20 // ..............................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #120] // .................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #1 // ..................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #25 // ..................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #172] // ...................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #13 // ....................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #14 // ....................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #20] // .....................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #30 // .................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #11 // ......................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #64] // .......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #28 // ................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #26 // ........................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r9, [sp, #12] // ......................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #0] // ..............................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #48] // ..........................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #100] // ...................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #148] // .......................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #192] // .........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #112] // ...........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r8, r3 // ..............................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r10, r4 // ..........................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r5, r2, r5 // .....................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r9, r6 // ........................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r12, r7 // .........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ...........................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r4, ror #21 // ............................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #48] // .............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #28 // ............................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #17 // .............................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #100] // ...............................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #25 // ................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r6, ror #21 // ....................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #148] // .......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #22 // ..................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #15 // ...................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #192] // ....................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r5, r5, r4, ror #0 // ...............................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // ...................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r1, #0] // ......................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r5, ror #10 // .................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r4, r3 // .......................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r2, [sp, #16] // ..................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #28] // ........................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #76] // .....................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #80] // .....................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #128] // ................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #176] // ............................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #0] // .........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r9, r3 // ..........................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r14, r4 // ........................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r8, r5 // ......................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r10, r6 // .................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r2, r7 // .............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #23 // ...........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #19 // ............................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #80] // .............................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // .........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #12 // ..........................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #128] // ...........................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #8 // ..............................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #29 // ..............................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #176] // ...............................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #16 // ...............................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #24 // .................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #28] // ..................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #28 // ...................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #12 // .....................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #12] // ...................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #56] // ....................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #108] // ................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #152] // .................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #160] // .......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #76] // ......................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r11, r3 // .....................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r2, r4 // ....................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r9, r5 // ................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r12, r6 // ..................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r8, r7 // .........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #10 // ......................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #12 // .......................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #160] // ........................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r6, r5, ror #23 // ........................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #1 // .........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #12] // ..........................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #5 // ...........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #28 // ...........................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #56] // ............................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #24 // .............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #29 // .............................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #108] // ..............................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #2 // ...............................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #26 // ..................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r8, [sp, #4] // ..........................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #32] // .................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #44] // ................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #92] // ............................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #136] // ..............................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #188] // ...................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #152] // ...................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r12, r3 // .................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r8, r4 // ..................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r11, r5 // ...............................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r2, r6 // ................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r9, r7 // ....................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #19 // ....................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #24 // .....................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #44] // ......................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #2 // .......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r4, ror #21 // ........................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #92] // ........................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r7, r6, ror #21 // .........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #23 // ..........................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #136] // ..........................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r3, r7, ror #17 // ...........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #6 // ............................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #188] // .............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #5 // .............................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #22 // ..............................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #16] // ..............................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #68] // .....................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #116] // .......................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #124] // ...........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #168] // ................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #32] // ................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r2, r3 // ...............................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r9, r4 // ......................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r5, r14, r5 // .........................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r8, r6 // ............................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r10, r7 // .................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // .................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #21 // ..................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #124] // ..................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #1 // ...................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #25 // ....................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #168] // ....................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #12 // .....................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #13 // ......................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #16] // ......................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r3, r7, ror #30 // .......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #10 // ........................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #68] // .........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #29 // .........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #27 // ..........................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r9, [sp, #8] // ...............................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #4] // ..........................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #52] // ...........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #96] // ...................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #144] // .......................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #196] // ............................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #116] // .............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r8, r3 // ...........................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r11, r4 // ............................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r2, r5 // .....................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r9, r6 // ........................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r14, r7 // .............................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ..............................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #20 // ...............................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #52] // ...............................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #29 // ................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #18 // .................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #96] // .................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #25 // ...................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #22 // ....................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #144] // ....................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #22 // .....................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #15 // ......................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #196] // ......................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r5, r5, r4, ror #31 // ..................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // ..............................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r1, #4] // ................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r3, r5, ror #11 // .......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r14, r4, r3 // ...........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #192] // ...................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #72] // ..................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #152] // .....................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #36] // .......................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #116] // ........................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r14, [r0, #4] // ................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r3, r1, ror #12 // .........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r5, ror #19 // ...........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r11, ror #4 // ..............................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r12, ror #26 // ..................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #52] // ..........................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #128] // .........................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #8] // ..............................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #92] // .............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #172] // .................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // ............................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r5, ror #6 // .................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ...................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #22 // .....................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ror r3, #10 // .......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r3, r7, ror #21 // ........................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #96] // ........................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r1, [r0, #176] // ..........................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #60] // ............................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #136] // ...............................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #20] // .........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #0] // ........................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r1, ror #9 // .............................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #30 // ...............................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #11 // ....................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #6 // .............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r3, r4, ror #25 // ................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r3, [r0, #148] // .....................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #24] // ................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #108] // ......................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #184] // ...........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #68] // ...............................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #12] // ..............................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r1, ror #18 // ..........................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r5, ror #31 // ............................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r3, r11, ror #18 // ..............................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r12, ror #1 // ..................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r2, r3, r7, ror #22 // .....................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #0] // .....................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #84] // ...................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #160] // ........................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #40] // ..........................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #124] // ............................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r1, ror #30 // .......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r5, ror #19 // ...........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r11, ror #27 // .............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #12 // ...............................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r10, r7, r4, ror #24 // .................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #144] // ..............................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #28] // ................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #104] // ....................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #188] // ................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r12, [r0, #64] // ..................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #18 // ...................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #0 // ........................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r11, ror #19 // ...................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #1 // .....................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r14, r4, r7 // .......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #48] // ..................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #132] // ...................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #12] // ............................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #88] // .........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #168] // .................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // ......................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r5, ror #7 // .................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ............................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r12, ror #22 // ....................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ror r7, #21 // ......................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r7, r4, ror #31 // ..........................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #196] // .......................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #76] // ....................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #156] // ...........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #32] // ...........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #112] // ...............................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #16] // ............................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r1, ror #12 // .........................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r5, ror #19 // ....................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #4 // ..............................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #27 // ..................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r8, r7, r4, ror #10 // .......................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #100] // .............................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #180] // ..........................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #56] // ......................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #140] // .............................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #16] // ....................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r8, [sp, #4] // ..............................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #8 // ...............................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r5, ror #30 // .........................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #11 // ................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r12, ror #6 // .........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ror r7, #25 // ...........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r9, r7, r4, ror #9 // ...............................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #4] // ..................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #80] // .................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #164] // .......................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #44] // ...................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #120] // .....................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r9, [sp, #8] // ...............................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #31 // ......................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r5, ror #20 // ..........................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r11, ror #27 // ......................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r12, ror #13 // ........................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r11, r4, r7 // .............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r12, r3, r4, ror #31 // ...........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #148] // ..................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #72] // ..........................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #164] // ........................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #92] // .........................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #20] // ................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r9, r3 // ...................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r12, r4, ror #22 // .............................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r8, r5, ror #20 // ............................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r11, r6, ror #25 // ..............................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r2, r7, ror #31 // ...................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // ....................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #20 // .....................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #164] // .....................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #13 // .................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #92] // .................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #8 // ........................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #29 // .........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #20] // .........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #15 // ......................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #23 // ...........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #148] // ............................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r4, r3, ror #28 // ....................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #11 // .......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #48] // ........................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #176] // .............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #108] // ...........................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #32] // ......................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #120] // ...............................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #72] // .......................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r10, r3, ror #21 // ..........................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r2, r4, ror #2 // ................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r9, r5, ror #31 // ..............................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r14, r6, ror #14 // ..........................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r8, r7, ror #13 // ..................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #9 // ......................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #12 // .........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #120] // ..........................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #24 // ................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #1 // ..................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #48] // ...................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #5 // ...............................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #29 // .................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #176] // ..................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #23 // ............................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r6, ror #28 // .............................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #108] // ..............................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #3 // ....................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #26 // ....................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r8, [sp, #0] // .......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #196] // .........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #84] // .................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #12] // ..........................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #136] // ........................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #68] // .....................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #32] // .....................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r14, r3, ror #10 // ...........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r8, r4, ror #30 // ........................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r10, r5, ror #28 // ............................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r2, r6, ror #4 // ...........................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r9, r7, ror #1 // .......................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r5, r4, ror #19 // ..................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #23 // ...................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #84] // .......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #3 // .................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #22 // ..................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #12] // ....................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #20 // ...............................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #23 // ................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #136] // ................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #18 // ............................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r6, ror #6 // .............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #68] // .............................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #4 // ..............................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #22 // ..............................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #96] // .................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #24] // ...................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #152] // ....................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #40] // .......................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #172] // .....................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #196] // ...............................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r2, r3, ror #25 // .....................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r9, r4, ror #18 // ......................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r5, r12, r5, ror #29 // ......................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r8, r6, ror #27 // ..........................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r11, r7, ror #12 // ........................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r5, r4, ror #24 // .........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #20 // .........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #40] // ..........................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #1 // .................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #25 // ...................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #172] // ....................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #13 // ...............................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #14 // ................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #96] // .................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #30 // .............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #11 // .............................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #24] // ..............................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #28 // ........................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #26 // ...........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r9, [sp, #12] // ..................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #0] // ...........................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #132] // ............................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #60] // ...................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #188] // ..................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #116] // ...............................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #152] // ............................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r8, r3 // ..............................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r10, r4, ror #9 // ................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r2, r5, ror #23 // ......................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r6, r9, r6, ror #19 // ......................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r12, r7, ror #4 // ....................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ...............................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #21 // ................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #132] // ................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r7, r6, ror #28 // ..........................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #17 // ...........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #60] // .............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #25 // ........................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r6, ror #21 // ............................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #188] // ............................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r4, r3, ror #22 // .......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #15 // .........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #116] // .........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r5, r5, r4, ror #0 // ...................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // .....................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r1, #8] // ......................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r5, ror #10 // .....................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r4, r3 // .......................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r2, [sp, #16] // ....................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #144] // .................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #76] // ...........................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #160] // ..............................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #88] // ..........................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #16] // ...................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #0] // ........................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r9, r3 // ..................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r14, r4, ror #22 // ..............................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r8, r5, ror #19 // .................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r10, r6, ror #24 // .............................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r2, r7, ror #31 // ......................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r5, r4, ror #23 // ...................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #19 // ....................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #160] // .....................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // .....................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #12 // ......................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #88] // .......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #8 // ...........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #29 // ............................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #16] // .............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #16 // .........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #24 // ..........................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #144] // ...............................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #28 // .......................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #12 // ........................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r3, [r0, #52] // ..........................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #104] // ..................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #36] // ............................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #124] // ...............................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #76] // ........................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r11, r3, ror #22 // ..............................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r2, r4, ror #1 // ..............................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r9, r5 // ...................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r12, r6, ror #14 // ...............................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r8, r7, ror #12 // ..................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #10 // ........................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r3, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #124] // ...........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #23 // .....................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #1 // ......................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #52] // .......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #5 // ......................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #28 // .........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #180] // ............................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #24 // ..................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #29 // ...................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #104] // ....................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #2 // ................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #26 // .................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r8, [sp, #4] // ...............................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #192] // ................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #80] // ..............................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #8] // .........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #140] // ..........................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #64] // ...........................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #36] // .................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r12, r3, ror #10 // ....................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r8, r4, ror #31 // ................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r11, r5, ror #28 // ..............................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r2, r6, ror #4 // .............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r9, r7, ror #1 // .............................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #24 // .....................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #80] // ......................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #2 // .................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #21 // ..................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #8] // ..................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #21 // ...............................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #23 // ................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #140] // .................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #17 // ...................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #6 // ...................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #64] // ....................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #5 // ......................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #100] // ....................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #28] // .......................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #156] // .....................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #44] // .......................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #168] // .........................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #192] // ........................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r2, r3, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r9, r4, ror #18 // ............................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r5, r14, r5, ror #29 // ........................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r8, r6, ror #27 // ...........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r10, r7, ror #11 // .............................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // .........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #21 // ...........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #44] // ............................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r6, r5, ror #1 // ..............................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #168] // ...............................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #13 // ................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #100] // .................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #30 // ...................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #28] // ....................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #29 // ....................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #27 // ......................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r9, [sp, #8] // ..........................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #4] // .............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #128] // ..........................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #56] // .........................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #184] // ..............................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #112] // ..................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #156] // .......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r8, r3 // .............................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r11, r4, ror #10 // .....................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r5, r2, r5, ror #23 // ............................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r6, r9, r6, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r14, r7, ror #5 // .......................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #128] // ..........................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r7, r6, ror #29 // ..........................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #18 // ...........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #56] // ............................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #22 // .............................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #184] // ..............................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #22 // ...............................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #15 // .................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #112] // ..................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................... + // bic r5, r5, r4, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // ..................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r1, #12] // .....................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r5, ror #11 // ........................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r14, r4, r3 // ..........................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #116] // ........................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r1, [r0, #72] // ......................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #36] // ........................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #196] // ...........................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #156] // ............................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................................ + // str r14, [r0, #4] // ...........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................. + // eor r3, r3, r1, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r3, r5, ror #19 // ...................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r11, ror #4 // ....................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r12, ror #26 // ......................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #128] // ...............................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #88] // .................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #48] // .......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #8] // .......................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // ....................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r5, ror #6 // .........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ...................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................. + // ror r3, #10 // ...............................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r3, r7, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #56] // ................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r1, [r0, #16] // ..................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #176] // .....................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #140] // .....................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #96] // .............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #0] // ...................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #9 // ......................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r5, ror #30 // ........................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r11, ror #11 // .............................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #6 // ....................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r3, r4, ror #25 // .......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #188] // ...............................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #148] // ...................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #104] // ..................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #68] // .....................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #28] // .......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................. + // str r6, [sp, #12] // .............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r1, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r5, ror #31 // .....................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r3, r11, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................ + // eor r3, r3, r12, ror #1 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................. + // eor r2, r3, r7, ror #22 // ............................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................ + // ldr r7, [r0, #0] // ..................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #164] // .................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #124] // ....................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................... + // ldr r11, [r0, #84] // ......................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................. + // ldr r12, [r0, #44] // ........................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r1, ror #30 // ....................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r5, ror #19 // .......................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................. + // eor r7, r7, r11, ror #27 // .........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................. + // eor r10, r7, r4, ror #24 // .............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #184] // .................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r1, [r0, #144] // ................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r5, [r0, #108] // ............................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................ + // ldr r11, [r0, #64] // ..............................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #24] // ................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r1, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r5, ror #0 // ...............................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #19 // .................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r12, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................................... + // eor r14, r4, r7 // .............................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #132] // ..........................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #92] // .........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #52] // ...........................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #12] // ............................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r12, [r0, #168] // ..............................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // ............................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r5, ror #7 // ..............................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r12, ror #22 // ..................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................................... + // ror r7, #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................... + // eor r6, r7, r4, ror #31 // ......................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #112] // ......................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #76] // .....................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #32] // ...........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #192] // .............................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #152] // ...............................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................................... + // str r6, [sp, #16] // .........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r5, ror #19 // ..............................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #4 // ................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r12, ror #27 // ..................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................................... + // eor r8, r7, r4, ror #10 // .....................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #60] // ..........................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................................. + // ldr r1, [r0, #20] // .........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #136] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................... + // ldr r12, [r0, #100] // ................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................ + // str r8, [sp, #4] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r1, ror #8 // ............................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r7, r5, ror #30 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r11, ror #11 // .................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................... + // eor r7, r7, r12, ror #6 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................... + // ror r7, #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................... + // eor r9, r7, r4, ror #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................. + // ldr r4, [r0, #4] // ........................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................ + // ldr r1, [r0, #160] // .......................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #120] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................................. + // ldr r11, [r0, #80] // ............................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................ + // ldr r12, [r0, #40] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................................... + // str r9, [sp, #8] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r1, ror #31 // ...........................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................................................. + // eor r4, r4, r5, ror #20 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................................... + // eor r4, r4, r11, ror #27 // ................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................................ + // eor r4, r4, r12, ror #13 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................... + // eor r11, r4, r7 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................. + // eor r12, r3, r4, ror #31 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #188] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #72] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #120] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #8] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #96] // .................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................................... + // eor r3, r9, r3 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................. + // eor r4, r12, r4, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................................. + // eor r5, r8, r5, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................... + // eor r6, r11, r6, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................................ + // eor r7, r2, r7, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r3, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #120] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #13 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #8] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #8 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #29 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #96] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #15 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #23 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #188] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #11 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #132] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #16] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #104] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #192] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #40] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #72] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................... + // eor r3, r10, r3, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................... + // eor r4, r2, r4, ror #2 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................... + // eor r5, r9, r5, ror #31 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................................... + // eor r6, r14, r6, ror #14 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................. + // eor r7, r8, r7, ror #13 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................................................. + // bic r1, r5, r4, ror #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #12 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #40] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #24 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #1 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #132] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #5 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #16] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #28 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #104] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................................ + // bic r1, r4, r3, ror #3 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #26 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................. + // ldr r8, [sp, #0] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #112] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #164] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................ + // ldr r6, [r0, #140] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #28] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #192] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................................. + // eor r3, r14, r3, ror #10 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................................... + // eor r4, r8, r4, ror #30 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................................ + // eor r5, r10, r5, ror #28 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................... + // eor r6, r2, r6, ror #4 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................. + // eor r7, r9, r7, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #19 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #23 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #164] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #3 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................ + // str r1, [r0, #52] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #20 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #23 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #140] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #18 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #6 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #28] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #4 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................. + // ldr r3, [r0, #56] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #148] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #36] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #84] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................................. + // ldr r7, [r0, #172] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #112] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................................. + // eor r3, r2, r3, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................................... + // eor r4, r9, r4, ror #18 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................................... + // eor r5, r12, r5, ror #29 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................................... + // eor r6, r8, r6, ror #27 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................................ + // eor r7, r11, r7, ror #12 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................ + // bic r1, r5, r4, ror #24 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................................ + // eor r1, r1, r3, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #84] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #1 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................................... + // str r1, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #13 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #14 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................. + // str r1, [r0, #56] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #30 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................. + // eor r1, r1, r6, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................... + // str r1, [r0, #148] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #28 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #26 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................... + // ldr r9, [sp, #12] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................ + // ldr r3, [r0, #0] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................ + // ldr r4, [r0, #92] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #176] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #64] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #156] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................... + // str r1, [r0, #36] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................................... + // eor r3, r8, r3 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................... + // eor r4, r10, r4, ror #9 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................. + // eor r5, r2, r5, ror #23 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................. + // eor r6, r9, r6, ror #19 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................................. + // eor r7, r12, r7, ror #4 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................................ + // bic r1, r6, r5, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................... + // str r1, [r0, #92] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #17 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................ + // str r1, [r0, #176] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................ + // bic r1, r3, r7, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #21 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................................... + // str r1, [r0, #64] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................... + // eor r1, r1, r7, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................. + // str r1, [r0, #156] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................. + // bic r5, r5, r4, ror #0 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................................... + // ldr r4, [r1, #16] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................................... + // eor r3, r3, r5, ror #10 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................... + // eor r1, r4, r3 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................. + // ldr r2, [sp, #16] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #184] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #76] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................................. + // ldr r5, [r0, #124] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................................... + // ldr r6, [r0, #12] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................... + // ldr r7, [r0, #100] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................. + // str r1, [r0, #0] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................... + // eor r3, r9, r3 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................... + // eor r4, r14, r4, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................ + // eor r5, r8, r5, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................... + // eor r6, r10, r6, ror #24 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................................ + // eor r7, r2, r7, ror #31 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................. + // bic r1, r5, r4, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................... + // eor r1, r1, r3, ror #19 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................ + // str r1, [r0, #124] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................................. + // eor r1, r1, r4, ror #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................. + // str r1, [r0, #12] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................ + // bic r1, r7, r6, ror #8 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................................ + // eor r1, r1, r5, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................... + // str r1, [r0, #100] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #16 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #24 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................... + // str r1, [r0, #184] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #28 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #12 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................................... + // ldr r3, [r0, #128] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................... + // ldr r4, [r0, #20] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................... + // ldr r5, [r0, #108] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................. + // ldr r6, [r0, #196] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................... + // ldr r7, [r0, #44] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................................... + // str r1, [r0, #76] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................... + // eor r3, r11, r3, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................ + // eor r4, r2, r4, ror #1 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................. + // eor r5, r9, r5 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................. + // eor r6, r12, r6, ror #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................. + // eor r7, r8, r7, ror #12 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #10 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................................ + // eor r1, r1, r3, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................. + // str r1, [r0, #44] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #1 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................ + // str r1, [r0, #128] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #5 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................... + // str r1, [r0, #20] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................. + // bic r1, r3, r7, ror #24 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #29 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................... + // str r1, [r0, #108] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #2 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #26 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................ + // ldr r8, [sp, #4] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................... + // ldr r3, [r0, #116] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................................ + // ldr r4, [r0, #160] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................... + // ldr r5, [r0, #48] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................................... + // ldr r6, [r0, #136] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................................. + // ldr r7, [r0, #24] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................................... + // str r1, [r0, #196] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................... + // eor r3, r12, r3, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................... + // eor r4, r8, r4, ror #31 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................. + // eor r5, r11, r5, ror #28 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................... + // eor r6, r2, r6, ror #4 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................................... + // eor r7, r9, r7, ror #1 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................... + // bic r1, r5, r4, ror #19 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................. + // eor r1, r1, r3, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................ + // str r1, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................ + // bic r1, r6, r5, ror #2 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................... + // eor r1, r1, r4, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................ + // str r1, [r0, #48] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #21 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................. + // str r1, [r0, #136] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................................. + // bic r1, r3, r7, ror #17 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #6 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................... + // str r1, [r0, #24] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................ + // bic r1, r4, r3, ror #5 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................ + // eor r1, r1, r7, ror #22 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................................ + // ldr r3, [r0, #60] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................................... + // ldr r4, [r0, #144] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................... + // ldr r5, [r0, #32] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................... + // ldr r6, [r0, #80] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................. + // ldr r7, [r0, #168] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................................................... + // str r1, [r0, #116] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................................... + // eor r3, r2, r3, ror #25 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................................... + // eor r4, r9, r4, ror #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................. + // eor r5, r14, r5, ror #29 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................... + // eor r6, r8, r6, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................... + // eor r7, r10, r7, ror #11 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................................................. + // bic r1, r5, r4, ror #24 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................ + // eor r1, r1, r3, ror #21 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................... + // str r1, [r0, #80] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................. + // bic r1, r6, r5, ror #1 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................... + // str r1, [r0, #168] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #12 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................. + // eor r1, r1, r5, ror #13 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................ + // str r1, [r0, #60] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................... + // str r1, [r0, #144] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................... + // bic r1, r4, r3, ror #29 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................... + // ldr r9, [sp, #8] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................... + // ldr r3, [r0, #4] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................. + // ldr r4, [r0, #88] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................................. + // ldr r5, [r0, #180] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................................................... + // ldr r6, [r0, #68] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................................... + // ldr r7, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................. + // str r1, [r0, #32] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................... + // eor r3, r8, r3 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................................. + // eor r4, r11, r4, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................... + // eor r5, r2, r5, ror #23 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................................... + // eor r6, r9, r6, ror #18 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................................... + // eor r7, r14, r7, ror #5 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................ + // eor r1, r1, r4, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................... + // str r1, [r0, #88] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................... + // bic r1, r7, r6, ror #29 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................................... + // eor r1, r1, r5, ror #18 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................... + // str r1, [r0, #180] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................... + // bic r1, r3, r7, ror #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................... + // eor r1, r1, r6, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................. + // str r1, [r0, #68] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................. + // bic r1, r4, r3, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................. + // eor r1, r1, r7, ror #15 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................ + // str r1, [r0, #152] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................... + // bic r5, r5, r4, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................... + // ldr r1, [sp, #20] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................. + // ldr r4, [r1, #20] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................................ + // eor r3, r3, r5, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................... + // eor r14, r4, r3 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................. + // ldr r3, [r0, #156] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................................... + // ldr r1, [r0, #72] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................................ + // ldr r5, [r0, #196] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................................... + // ldr r11, [r0, #112] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................... + // ldr r12, [r0, #32] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................................. + // str r14, [r0, #4] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................ + // eor r3, r3, r1, ror #12 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................. + // eor r3, r3, r5, ror #19 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................... + // eor r3, r3, r11, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................... + // eor r3, r3, r12, ror #26 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................... + // ldr r7, [r0, #88] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................................ + // ldr r1, [r0, #12] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................. + // ldr r5, [r0, #132] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................... + // ldr r11, [r0, #48] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................ + // ldr r12, [r0, #172] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................... + // eor r7, r7, r5, ror #6 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................................... + // eor r7, r7, r12, ror #22 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................... + // ror r3, #10 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................. + // eor r6, r3, r7, ror #21 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................... + // ldr r4, [r0, #180] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................................. + // ldr r1, [r0, #100] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................................ + // ldr r5, [r0, #16] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................................ + // ldr r11, [r0, #136] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................... + // ldr r12, [r0, #56] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................... + // str r6, [sp, #0] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................... + // eor r4, r4, r1, ror #9 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................................... + // eor r4, r4, r5, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................................... + // eor r4, r4, r11, ror #11 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................... + // eor r4, r4, r12, ror #6 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................. + // eor r6, r3, r4, ror #25 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................ + // ldr r3, [r0, #64] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................. + // ldr r1, [r0, #188] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................................... + // ldr r5, [r0, #108] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................... + // ldr r11, [r0, #28] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................................. + // ldr r12, [r0, #144] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................ + // str r6, [sp, #12] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................. + // eor r3, r3, r1, ror #18 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................... + // eor r3, r3, r5, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................... + // eor r3, r3, r11, ror #18 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................ + // eor r3, r3, r12, ror #1 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................... + // eor r2, r3, r7, ror #22 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................... + // ldr r7, [r0, #0] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................ + // ldr r1, [r0, #120] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................................... + // ldr r5, [r0, #44] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................... + // ldr r11, [r0, #164] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................. + // ldr r12, [r0, #80] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................... + // eor r7, r7, r1, ror #30 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................... + // eor r7, r7, r5, ror #19 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................. + // eor r7, r7, r11, ror #27 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................... + // eor r7, r7, r12, ror #12 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................ + // eor r10, r7, r4, ror #24 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................. + // ldr r4, [r0, #68] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................. + // ldr r1, [r0, #184] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................... + // ldr r5, [r0, #104] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................ + // ldr r11, [r0, #24] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................... + // ldr r12, [r0, #148] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................... + // eor r4, r4, r1, ror #18 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................. + // eor r4, r4, r5, ror #0 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................... + // eor r4, r4, r11, ror #19 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................... + // eor r4, r4, r12, ror #1 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................. + // eor r14, r4, r7 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................... + // ldr r7, [r0, #92] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................ + // ldr r1, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................................ + // ldr r5, [r0, #128] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................. + // ldr r11, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................................ + // ldr r12, [r0, #168] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................... + // eor r7, r7, r1, ror #20 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................................. + // eor r7, r7, r5, ror #7 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................................... + // eor r7, r7, r11, ror #3 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................................... + // eor r7, r7, r12, ror #22 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................... + // ror r7, #21 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................. + // eor r6, r7, r4, ror #31 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................... + // ldr r4, [r0, #152] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................................... + // ldr r1, [r0, #76] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................................... + // ldr r5, [r0, #192] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................... + // ldr r11, [r0, #116] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................... + // ldr r12, [r0, #36] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................... + // str r6, [sp, #16] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................ + // eor r4, r4, r1, ror #12 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................................... + // eor r4, r4, r5, ror #19 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................. + // eor r4, r4, r11, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................................................... + // eor r4, r4, r12, ror #27 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................... + // eor r8, r7, r4, ror #10 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................. + // ldr r7, [r0, #176] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................................... + // ldr r1, [r0, #96] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................ + // ldr r5, [r0, #20] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................................... + // ldr r11, [r0, #140] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................... + // ldr r12, [r0, #60] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................. + // str r8, [sp, #4] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................... + // eor r7, r7, r1, ror #8 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................... + // eor r7, r7, r5, ror #30 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................... + // eor r7, r7, r11, ror #11 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................. + // eor r7, r7, r12, ror #6 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................... + // ror r7, #25 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................. + // eor r9, r7, r4, ror #9 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................. + // ldr r4, [r0, #4] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................................. + // ldr r1, [r0, #124] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................................................. + // ldr r5, [r0, #40] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................. + // ldr r11, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................ + // ldr r12, [r0, #84] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................... + // str r9, [sp, #8] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................... + // eor r4, r4, r1, ror #31 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................................................. + // eor r4, r4, r5, ror #20 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................................ + // eor r4, r4, r11, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................................... + // eor r4, r4, r12, ror #13 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................................ + // eor r11, r4, r7 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................ + // eor r12, r3, r4, ror #31 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................................... + // ldr r3, [r0, #64] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................... + // ldr r4, [r0, #72] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................................ + // ldr r5, [r0, #40] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................... + // ldr r6, [r0, #48] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................... + // ldr r7, [r0, #56] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................................... + // eor r3, r9, r3 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................................... + // eor r4, r12, r4, ror #22 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................................ + // eor r5, r8, r5, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................... + // eor r6, r11, r6, ror #25 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................... + // eor r7, r2, r7, ror #31 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................... + // bic r1, r5, r4, ror #24 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................................ + // eor r1, r1, r3, ror #20 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................................... + // ror r1, r1, #30 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................... + // str r1, [r0, #40] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................................... + // bic r1, r6, r5, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................... + // eor r1, r1, r4, ror #13 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................... + // ror r1, r1, #9 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................. + // str r1, [r0, #48] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................ + // bic r1, r7, r6, ror #8 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................ + // eor r1, r1, r5, ror #29 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................... + // ror r1, r1, #1 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................... + // str r1, [r0, #56] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................... + // bic r1, r3, r7, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................. + // eor r1, r1, r6, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................................. + // ror r1, r1, #18 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................. + // str r1, [r0, #64] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................. + // bic r1, r4, r3, ror #28 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................................. + // eor r1, r1, r7, ror #11 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................................. + // ror r1, r1, #22 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................ + // ldr r3, [r0, #92] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................. + // ldr r4, [r0, #100] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................... + // ldr r5, [r0, #108] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................... + // ldr r6, [r0, #116] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................................... + // ldr r7, [r0, #84] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................ + // str r1, [r0, #72] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................... + // eor r3, r10, r3, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................... + // eor r4, r2, r4, ror #2 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................................ + // eor r5, r9, r5, ror #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................................ + // eor r6, r14, r6, ror #14 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................... + // eor r7, r8, r7, ror #13 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................................... + // bic r1, r5, r4, ror #9 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................... + // eor r1, r1, r3, ror #12 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................... + // ror r1, r1, #20 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................. + // str r1, [r0, #84] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................ + // bic r1, r6, r5, ror #24 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................... + // eor r1, r1, r4, ror #1 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................................... + // ror r1, r1, #28 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................. + // str r1, [r0, #92] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................. + // bic r1, r7, r6, ror #5 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................... + // eor r1, r1, r5, ror #29 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................. + // ror r1, r1, #23 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................... + // str r1, [r0, #100] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................... + // bic r1, r3, r7, ror #23 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................ + // eor r1, r1, r6, ror #28 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................... + // str r1, [r0, #108] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................. + // bic r1, r4, r3, ror #3 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................................... + // eor r1, r1, r7, ror #26 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................................... + // ror r1, r1, #29 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................................... + // ldr r8, [sp, #0] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................ + // ldr r3, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................. + // ldr r4, [r0, #120] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................ + // ldr r5, [r0, #128] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................ + // ldr r6, [r0, #136] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................. + // ldr r7, [r0, #144] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................................. + // str r1, [r0, #116] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................................... + // eor r3, r14, r3, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................................... + // eor r4, r8, r4, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................... + // eor r5, r10, r5, ror #28 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................... + // eor r6, r2, r6, ror #4 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................... + // eor r7, r9, r7, ror #1 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................................... + // bic r1, r5, r4, ror #19 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................ + // eor r1, r1, r3, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................. + // ror r1, r1, #27 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................... + // str r1, [r0, #120] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................... + // bic r1, r6, r5, ror #3 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................... + // eor r1, r1, r4, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................. + // ror r1, r1, #24 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................... + // str r1, [r0, #128] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................... + // bic r1, r7, r6, ror #20 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................... + // eor r1, r1, r5, ror #23 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................. + // ror r1, r1, #4 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................ + // str r1, [r0, #136] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................... + // bic r1, r3, r7, ror #18 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................... + // eor r1, r1, r6, ror #6 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................................... + // ror r1, r1, #18 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................................... + // str r1, [r0, #144] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................................... + // bic r1, r4, r3, ror #4 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................... + // eor r1, r1, r7, ror #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................... + // ror r1, r1, #14 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................................. + // ldr r3, [r0, #180] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................................. + // ldr r4, [r0, #188] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................................ + // ldr r5, [r0, #196] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................... + // ldr r6, [r0, #164] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................. + // ldr r7, [r0, #172] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................. + // str r1, [r0, #152] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................. + // eor r3, r2, r3, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................... + // eor r4, r9, r4, ror #18 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................................................... + // eor r5, r12, r5, ror #29 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................... + // eor r6, r8, r6, ror #27 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................................... + // eor r7, r11, r7, ror #12 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................... + // bic r1, r5, r4, ror #24 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................... + // eor r1, r1, r3, ror #20 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................... + // ror r1, r1, #13 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................ + // str r1, [r0, #164] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................... + // bic r1, r6, r5, ror #1 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................. + // eor r1, r1, r4, ror #25 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................. + // ror r1, r1, #12 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................. + // str r1, [r0, #172] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................... + // bic r1, r7, r6, ror #13 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................... + // eor r1, r1, r5, ror #14 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................ + // ror r1, r1, #31 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................. + // str r1, [r0, #180] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................. + // bic r1, r3, r7, ror #30 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................................... + // eor r1, r1, r6, ror #11 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................... + // ror r1, r1, #1 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................... + // str r1, [r0, #188] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................... + // bic r1, r4, r3, ror #28 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................ + // eor r1, r1, r7, ror #26 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................................ + // ror r1, r1, #5 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................................... + // ldr r9, [sp, #12] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................. + // ldr r3, [r0, #0] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................ + // ldr r4, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................ + // ldr r5, [r0, #16] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................................................ + // ldr r6, [r0, #24] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................................. + // ldr r7, [r0, #32] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................... + // str r1, [r0, #196] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................................... + // eor r3, r8, r3 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................... + // eor r4, r10, r4, ror #9 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................ + // eor r5, r2, r5, ror #23 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................................................ + // eor r6, r9, r6, ror #19 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................................. + // eor r7, r12, r7, ror #4 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................... + // bic r1, r6, r5, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................................... + // eor r1, r1, r4, ror #21 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................................ + // ror r1, r1, #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................... + // str r1, [r0, #8] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................ + // bic r1, r7, r6, ror #28 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................... + // eor r1, r1, r5, ror #17 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................................... + // ror r1, r1, #25 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................................... + // str r1, [r0, #16] // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................... + // bic r1, r3, r7, ror #25 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................... + // eor r1, r1, r6, ror #21 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................... + // str r1, [r0, #24] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................. + // bic r1, r4, r3, ror #22 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................... + // eor r1, r1, r7, ror #15 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................. + // ror r1, r1, #10 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................... + // str r1, [r0, #32] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................ + // bic r5, r5, r4, ror #0 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................................... + // ldr r1, [sp, #20] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................. + // ldr r4, [r1, #24] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................ + // eor r3, r3, r5, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................................... + // eor r1, r4, r3 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................... + // ldr r2, [sp, #16] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................... + // ldr r3, [r0, #68] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................. + // ldr r4, [r0, #76] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................................. + // ldr r5, [r0, #44] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................... + // ldr r6, [r0, #52] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................ + // ldr r7, [r0, #60] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................................... + // str r1, [r0, #0] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................... + // eor r3, r9, r3 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................. + // eor r4, r14, r4, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................................. + // eor r5, r8, r5, ror #19 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................................. + // eor r6, r10, r6, ror #24 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................... + // eor r7, r2, r7, ror #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................... + // bic r1, r5, r4, ror #23 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................... + // eor r1, r1, r3, ror #19 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................... + // ror r1, r1, #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................................ + // str r1, [r0, #44] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................................... + // bic r1, r6, r5, ror #21 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................ + // eor r1, r1, r4, ror #12 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................... + // ror r1, r1, #10 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................. + // str r1, [r0, #52] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................ + // bic r1, r7, r6, ror #8 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................... + // eor r1, r1, r5, ror #29 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................. + // ror r1, r1, #2 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................. + // str r1, [r0, #60] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................... + // bic r1, r3, r7, ror #16 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................... + // eor r1, r1, r6, ror #24 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................... + // ror r1, r1, #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................. + // str r1, [r0, #68] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................. + // bic r1, r4, r3, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................................... + // eor r1, r1, r7, ror #12 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................................... + // ror r1, r1, #22 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................................... + // ldr r3, [r0, #88] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................. + // ldr r4, [r0, #96] // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................... + // ldr r5, [r0, #104] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................... + // ldr r6, [r0, #112] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................ + // ldr r7, [r0, #80] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................................ + // str r1, [r0, #76] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................................... + // eor r3, r11, r3, ror #22 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................................. + // eor r4, r2, r4, ror #1 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................... + // eor r5, r9, r5 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................ + // eor r6, r12, r6, ror #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................. + // eor r7, r8, r7, ror #12 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................................... + // bic r1, r5, r4, ror #10 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................... + // eor r1, r1, r3, ror #12 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................... + // ror r1, r1, #19 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................. + // str r1, [r0, #80] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................. + // bic r1, r6, r5, ror #23 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................... + // eor r1, r1, r4, ror #1 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................... + // ror r1, r1, #28 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................... + // str r1, [r0, #88] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................... + // bic r1, r7, r6, ror #5 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................................... + // eor r1, r1, r5, ror #28 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................................... + // ror r1, r1, #23 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................... + // str r1, [r0, #96] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................... + // bic r1, r3, r7, ror #24 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................ + // eor r1, r1, r6, ror #29 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................................... + // ror r1, r1, #31 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................ + // str r1, [r0, #104] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................................... + // bic r1, r4, r3, ror #2 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................. + // eor r1, r1, r7, ror #26 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................ + // ror r1, r1, #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................ + // ldr r8, [sp, #4] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................... + // ldr r3, [r0, #156] // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................................... + // ldr r4, [r0, #124] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................. + // ldr r5, [r0, #132] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................. + // ldr r6, [r0, #140] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................... + // ldr r7, [r0, #148] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................................ + // str r1, [r0, #112] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................ + // eor r3, r12, r3, ror #10 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................................... + // eor r4, r8, r4, ror #31 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................... + // eor r5, r11, r5, ror #28 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................... + // eor r6, r2, r6, ror #4 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................................. + // eor r7, r9, r7, ror #1 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................................. + // bic r1, r5, r4, ror #19 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................ + // eor r1, r1, r3, ror #24 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................... + // ror r1, r1, #27 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................... + // str r1, [r0, #124] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................... + // bic r1, r6, r5, ror #2 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................................... + // eor r1, r1, r4, ror #21 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................... + // ror r1, r1, #25 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................... + // str r1, [r0, #132] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................. + // bic r1, r7, r6, ror #21 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................................... + // eor r1, r1, r5, ror #23 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................................... + // ror r1, r1, #4 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................................ + // str r1, [r0, #140] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................................... + // bic r1, r3, r7, ror #17 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................... + // eor r1, r1, r6, ror #6 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................ + // ror r1, r1, #19 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................... + // str r1, [r0, #148] // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................... + // bic r1, r4, r3, ror #5 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................... + // eor r1, r1, r7, ror #22 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................. + // ror r1, r1, #14 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................. + // ldr r3, [r0, #176] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................. + // ldr r4, [r0, #184] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................................................... + // ldr r5, [r0, #192] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................ + // ldr r6, [r0, #160] // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................... + // ldr r7, [r0, #168] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................. + // str r1, [r0, #156] // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................. + // eor r3, r2, r3, ror #25 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................... + // eor r4, r9, r4, ror #18 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................................................. + // eor r5, r14, r5, ror #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................ + // eor r6, r8, r6, ror #27 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................... + // eor r7, r10, r7, ror #11 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................... + // bic r1, r5, r4, ror #24 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................... + // eor r1, r1, r3, ror #21 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................... + // ror r1, r1, #12 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................ + // str r1, [r0, #160] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............ + // bic r1, r6, r5, ror #1 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................ + // eor r1, r1, r4, ror #25 // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........................ + // ror r1, r1, #11 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................... + // str r1, [r0, #168] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..................... + // bic r1, r7, r6, ror #12 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......................... + // eor r1, r1, r5, ror #13 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................... + // ror r1, r1, #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................... + // str r1, [r0, #176] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....................... + // bic r1, r3, r7, ror #30 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...................... + // eor r1, r1, r6, ror #10 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................. + // ror r1, r1, #1 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........... + // str r1, [r0, #184] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......... + // bic r1, r4, r3, ror #29 // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................... + // eor r1, r1, r7, ror #27 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................. + // ror r1, r1, #4 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............... + // ldr r9, [sp, #8] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................. + // ldr r3, [r0, #4] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............. + // ldr r4, [r0, #12] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................. + // ldr r5, [r0, #20] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................................. + // ldr r6, [r0, #28] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.................... + // ldr r7, [r0, #36] // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......................... + // str r1, [r0, #192] // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............. + // eor r3, r8, r3 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............. + // eor r4, r11, r4, ror #10 // .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............... + // eor r5, r2, r5, ror #23 // ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.............................. + // eor r6, r9, r6, ror #18 // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................ + // eor r7, r14, r7, ror #5 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*................... + // bic r1, r6, r5, ror #21 // ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............. + // eor r1, r1, r4, ror #20 // .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........... + // ror r1, r1, #22 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......... + // str r1, [r0, #12] // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.... + // bic r1, r7, r6, ror #29 // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............ + // eor r1, r1, r5, ror #18 // ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*......... + // ror r1, r1, #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...... + // str r1, [r0, #20] // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..... + // bic r1, r3, r7, ror #25 // ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*...... + // eor r1, r1, r6, ror #22 // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*. + // str r1, [r0, #28] // ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................* + // bic r1, r4, r3, ror #22 // ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.......... + // eor r1, r1, r7, ror #15 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*... + // ror r1, r1, #10 // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.. + // str r1, [r0, #36] // .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*. + // bic r5, r5, r4, ror #31 // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....... + // ldr r1, [sp, #20] // ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*............................ + // ldr r4, [r1, #28] // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........ + // ldr r7, [r1, #32]! // ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*........ + // str r1, [sp, #20] // .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*....... + // cmp r7, #0xFF // ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.... + // eor r3, r3, r5, ror #11 // ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*..... + // eor r1, r4, r3 // .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*... + // str r1, [r0, #4] // ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................*.. + + mld_keccak_f1600_x1_armv7m_asm_slothy_end: + + + bne mld_keccak_f1600_x1_armv7m_asm_StatePermute_RoundLoop + add sp, #mSize + pop { r4 - r12, pc } + +MLD_ASM_FN_SIZE(keccak_f1600_x1_armv7m_asm) + +/* simpasm: footer-start */ +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_extract_bytes_armv7m.S b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_extract_bytes_armv7m.S new file mode 100644 index 0000000000..98199bcf5f --- /dev/null +++ b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_extract_bytes_armv7m.S @@ -0,0 +1,179 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * This helper adapts the CC0-1.0 bit-interleaving and byte-access routines in + * keccakp1600_fast_cortexm3-4.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + * The bit-interleaving transform is credited there to Henry S. Warren, + * Hacker's Delight, Addison-Wesley, 2002. + */ + +/*yaml + Name: keccak_f1600_x1_state_extract_bytes_asm + Description: Extract bytes from an x1 Keccak state while converting touched lanes from the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_state_extract_bytes_asm(void *state, uint8_t *data, unsigned offset, unsigned length) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read-only + c_parameter: void *state + description: Bit-interleaved x1 Keccak state + r1: + type: buffer + size_bytes: r3 + permissions: write-only + c_parameter: uint8_t *data + description: Output byte buffer + r2: + type: scalar + c_parameter: unsigned offset + description: Byte offset within the 200-byte state + test_with: 7 + r3: + type: scalar + c_parameter: unsigned length + description: Number of output bytes + test_with: 9 + Stack: + bytes: 32 + description: register preservation (24) plus one temporary lane (8) +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp. The caller-saved r0-r3, r12, + * APSR condition flags, and lr may be clobbered. No floating-point or MVE + * registers are accessed. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) +/* simpasm: header-end */ + +.thumb +.syntax unified +.text + +/* Convert one lane from even/odd bit-interleaved form to little-endian bytes. */ +.macro mld_keccak_x1_from_bit_interleaving x0, x1, t + movs \t, \x0 + bfi \x0, \x1, #16, #16 + bfc \x1, #0, #16 + orr \x1, \x1, \t, LSR #16 + + eor \t, \x0, \x0, LSR #8 + and \t, #0x0000FF00 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #8 + + eor \t, \x0, \x0, LSR #4 + and \t, #0x00F000F0 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #4 + + eor \t, \x0, \x0, LSR #2 + and \t, #0x0C0C0C0C + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #2 + + eor \t, \x0, \x0, LSR #1 + and \t, #0x22222222 + eors \x0, \x0, \t + eor \x0, \x0, \t, LSL #1 + + eor \t, \x1, \x1, LSR #8 + and \t, #0x0000FF00 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #8 + + eor \t, \x1, \x1, LSR #4 + and \t, #0x00F000F0 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #4 + + eor \t, \x1, \x1, LSR #2 + and \t, #0x0C0C0C0C + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #2 + + eor \t, \x1, \x1, LSR #1 + and \t, #0x22222222 + eors \x1, \x1, \t + eor \x1, \x1, \t, LSL #1 +.endm + +.macro mld_keccak_x1_extract_lanes +mld_keccak_f1600_x1_state_extract_bytes_lanes_loop: + ldrd r4, r5, [r0], #8 + mld_keccak_x1_from_bit_interleaving r4, r5, r3 + str r4, [r1], #4 + subs r2, r2, #1 + str r5, [r1], #4 + bne mld_keccak_f1600_x1_state_extract_bytes_lanes_loop +.endm + +.macro mld_keccak_x1_extract_bytes_in_lane label + ldrd r4, r5, [r0], #8 + mld_keccak_x1_from_bit_interleaving r4, r5, r6 + sub sp, #8 + strd r4, r5, [sp] + add r2, sp, r2 +mld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_\label: + ldrb r4, [r2], #1 + subs r3, r3, #1 + strb r4, [r1], #1 + bne mld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_\label + add sp, #8 +.endm + +.align 8 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_state_extract_bytes_asm) +.type MLD_ASM_NAMESPACE(keccak_f1600_x1_state_extract_bytes_asm), %function +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_state_extract_bytes_asm) + cmp r3, #0 + beq.w mld_keccak_f1600_x1_state_extract_bytes_exit + push {r4-r8, lr} + bic r4, r2, #7 + adds r0, r0, r4 + ands r2, r2, #7 + beq.w mld_keccak_f1600_x1_state_extract_bytes_check_lanes + movs r4, r3 + rsb r5, r2, #8 + cmp r4, r5 + ble mld_keccak_f1600_x1_state_extract_bytes_align + movs r4, r5 +mld_keccak_f1600_x1_state_extract_bytes_align: + sub r8, r3, r4 + movs r3, r4 + mld_keccak_x1_extract_bytes_in_lane first + mov r3, r8 +mld_keccak_f1600_x1_state_extract_bytes_check_lanes: + lsrs r2, r3, #3 + beq.w mld_keccak_f1600_x1_state_extract_bytes_tail + mov r8, r3 + mld_keccak_x1_extract_lanes + and r3, r8, #7 +mld_keccak_f1600_x1_state_extract_bytes_tail: + cmp r3, #0 + beq.w mld_keccak_f1600_x1_state_extract_bytes_restore + movs r2, #0 + mld_keccak_x1_extract_bytes_in_lane tail +mld_keccak_f1600_x1_state_extract_bytes_restore: + pop {r4-r8, lr} +mld_keccak_f1600_x1_state_extract_bytes_exit: + bx lr + +MLD_ASM_FN_SIZE(keccak_f1600_x1_state_extract_bytes_asm) + +/* simpasm: footer-start */ +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_xor_bytes_armv7m.S b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_xor_bytes_armv7m.S new file mode 100644 index 0000000000..f05c3b26eb --- /dev/null +++ b/dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_xor_bytes_armv7m.S @@ -0,0 +1,188 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * This helper adapts the CC0-1.0 bit-interleaving and byte-access routines in + * keccakp1600_fast_cortexm3-4.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + * The bit-interleaving transform is credited there to Henry S. Warren, + * Hacker's Delight, Addison-Wesley, 2002. + */ + +/*yaml + Name: keccak_f1600_x1_state_xor_bytes_asm + Description: XOR bytes into an x1 Keccak state while converting each touched lane to the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_state_xor_bytes_asm(void *state, const uint8_t *data, unsigned offset, unsigned length) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read/write + c_parameter: void *state + description: Bit-interleaved x1 Keccak state + r1: + type: buffer + size_bytes: r3 + permissions: read-only + c_parameter: const uint8_t *data + description: Bytes to XOR into the state + r2: + type: scalar + c_parameter: unsigned offset + description: Byte offset within the 200-byte state + test_with: 7 + r3: + type: scalar + c_parameter: unsigned length + description: Number of input bytes + test_with: 9 + Stack: + bytes: 32 + description: register preservation (24) plus one temporary lane (8) +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp. The caller-saved r0-r3, r12, + * APSR condition flags, and lr may be clobbered. No floating-point or MVE + * registers are accessed. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) +/* simpasm: header-end */ + +.thumb +.syntax unified +.text + +/* Convert one little-endian lane to the even/odd bit-interleaved form. */ +.macro mld_keccak_x1_to_bit_interleaving x0, x1, s0, s1, t, over + and \t, \x0, #0x55555555 + orr \t, \t, \t, LSR #1 + and \t, \t, #0x33333333 + orr \t, \t, \t, LSR #2 + and \t, \t, #0x0F0F0F0F + orr \t, \t, \t, LSR #4 + and \t, \t, #0x00FF00FF + bfi \t, \t, #8, #8 + .if \over != 0 + lsr \s0, \t, #8 + .else + eor \s0, \s0, \t, LSR #8 + .endif + + and \t, \x1, #0x55555555 + orr \t, \t, \t, LSR #1 + and \t, \t, #0x33333333 + orr \t, \t, \t, LSR #2 + and \t, \t, #0x0F0F0F0F + orr \t, \t, \t, LSR #4 + and \t, \t, #0x00FF00FF + orr \t, \t, \t, LSR #8 + eor \s0, \s0, \t, LSL #16 + + and \t, \x0, #0xAAAAAAAA + orr \t, \t, \t, LSL #1 + and \t, \t, #0xCCCCCCCC + orr \t, \t, \t, LSL #2 + and \t, \t, #0xF0F0F0F0 + orr \t, \t, \t, LSL #4 + and \t, \t, #0xFF00FF00 + orr \t, \t, \t, LSL #8 + .if \over != 0 + lsr \s1, \t, #16 + .else + eor \s1, \s1, \t, LSR #16 + .endif + + and \t, \x1, #0xAAAAAAAA + orr \t, \t, \t, LSL #1 + and \t, \t, #0xCCCCCCCC + orr \t, \t, \t, LSL #2 + and \t, \t, #0xF0F0F0F0 + orr \t, \t, \t, LSL #4 + and \t, \t, #0xFF00FF00 + orr \t, \t, \t, LSL #8 + bfc \t, #0, #16 + eors \s1, \s1, \t +.endm + +.macro mld_keccak_x1_xor_lanes +mld_keccak_f1600_x1_state_xor_bytes_lanes_loop: + ldr r4, [r1], #4 + ldr r5, [r1], #4 + ldrd r6, r7, [r0] + mld_keccak_x1_to_bit_interleaving r4, r5, r6, r7, r3, 0 + strd r6, r7, [r0], #8 + subs r2, r2, #1 + bne mld_keccak_f1600_x1_state_xor_bytes_lanes_loop +.endm + +.macro mld_keccak_x1_xor_bytes_in_lane label + movs r4, #0 + movs r5, #0 + sub sp, #8 + strd r4, r5, [sp] + add r2, r2, sp +mld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_\label: + ldrb r5, [r1], #1 + strb r5, [r2], #1 + subs r3, r3, #1 + bne mld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_\label + ldrd r4, r5, [sp] + add sp, #8 + ldrd r6, r7, [r0] + mld_keccak_x1_to_bit_interleaving r4, r5, r6, r7, r3, 0 + strd r6, r7, [r0], #8 +.endm + +.align 8 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_state_xor_bytes_asm) +.type MLD_ASM_NAMESPACE(keccak_f1600_x1_state_xor_bytes_asm), %function +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_state_xor_bytes_asm) + cmp r3, #0 + beq.w mld_keccak_f1600_x1_state_xor_bytes_exit + push {r4-r8, lr} + bic r4, r2, #7 + adds r0, r0, r4 + ands r2, r2, #7 + beq.w mld_keccak_f1600_x1_state_xor_bytes_check_lanes + movs r4, r3 + rsb r5, r2, #8 + cmp r4, r5 + ble mld_keccak_f1600_x1_state_xor_bytes_align + movs r4, r5 +mld_keccak_f1600_x1_state_xor_bytes_align: + sub r8, r3, r4 + movs r3, r4 + mld_keccak_x1_xor_bytes_in_lane first + mov r3, r8 +mld_keccak_f1600_x1_state_xor_bytes_check_lanes: + lsrs r2, r3, #3 + beq.w mld_keccak_f1600_x1_state_xor_bytes_tail + mov r8, r3 + mld_keccak_x1_xor_lanes + and r3, r8, #7 +mld_keccak_f1600_x1_state_xor_bytes_tail: + cmp r3, #0 + beq.w mld_keccak_f1600_x1_state_xor_bytes_restore + movs r2, #0 + mld_keccak_x1_xor_bytes_in_lane tail +mld_keccak_f1600_x1_state_xor_bytes_restore: + pop {r4-r8, lr} +mld_keccak_f1600_x1_state_xor_bytes_exit: + bx lr + +MLD_ASM_FN_SIZE(keccak_f1600_x1_state_xor_bytes_asm) + +/* simpasm: footer-start */ +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m_opt/src/keccakf1600_round_constants_x1.c b/dev/fips202/armv81m_opt/src/keccakf1600_round_constants_x1.c new file mode 100644 index 0000000000..9f23c41e22 --- /dev/null +++ b/dev/fips202/armv81m_opt/src/keccakf1600_round_constants_x1.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * WARNING: This file is auto-generated from scripts/autogen + * in the mldsa-native repository. + * Do not modify it directly. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +#include "fips202_native_armv81m_x1.h" + +/* + * Scalar x1 Keccak round constants in bit-interleaved form. + * Each 64-bit constant is split into two 32-bit words: + * - low word contains even-indexed bits + * - high word contains odd-indexed bits + * The final word is the permutation loop terminator. + */ +MLD_ALIGN MLD_INTERNAL_DATA_DEFINITION const uint32_t + mld_keccakf1600_round_constants_x1[49] = { + 0x00000001, 0x00000000, /* RC0 */ + 0x00000000, 0x00000089, /* RC1 */ + 0x00000000, 0x8000008b, /* RC2 */ + 0x00000000, 0x80008080, /* RC3 */ + 0x00000001, 0x0000008b, /* RC4 */ + 0x00000001, 0x00008000, /* RC5 */ + 0x00000001, 0x80008088, /* RC6 */ + 0x00000001, 0x80000082, /* RC7 */ + 0x00000000, 0x0000000b, /* RC8 */ + 0x00000000, 0x0000000a, /* RC9 */ + 0x00000001, 0x00008082, /* RC10 */ + 0x00000000, 0x00008003, /* RC11 */ + 0x00000001, 0x0000808b, /* RC12 */ + 0x00000001, 0x8000000b, /* RC13 */ + 0x00000001, 0x8000008a, /* RC14 */ + 0x00000001, 0x80000081, /* RC15 */ + 0x00000000, 0x80000081, /* RC16 */ + 0x00000000, 0x80000008, /* RC17 */ + 0x00000000, 0x00000083, /* RC18 */ + 0x00000000, 0x80008003, /* RC19 */ + 0x00000001, 0x80008088, /* RC20 */ + 0x00000000, 0x80000088, /* RC21 */ + 0x00000001, 0x00008000, /* RC22 */ + 0x00000000, 0x80008082, /* RC23 */ + 0x000000ff, /* loop terminator */ +}; + +#else /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +MLD_EMPTY_CU(fips202_armv81m_round_constants_x1) + +#endif /* !(MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED) \ + */ diff --git a/dev/fips202/armv81m_opt/src/schedule_keccak_m7.py b/dev/fips202/armv81m_opt/src/schedule_keccak_m7.py new file mode 100644 index 0000000000..9c5375375d --- /dev/null +++ b/dev/fips202/armv81m_opt/src/schedule_keccak_m7.py @@ -0,0 +1,352 @@ +#!/usr/bin/env python3 +# Copyright (c) The mldsa-native project authors +# SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + +"""Schedule the scalar Keccak-f[1600] round body for Cortex-M7. + +The input must mark the schedulable region with the labels below and describe +all abstract memory dependencies with ``@slothy:reads`` and +``@slothy:writes`` tags. This driver derives the corresponding hint-register +outputs after macro expansion; it deliberately does not encode a list tied to +one particular Keccak implementation. + +Configuration rationale +----------------------- +* ``inputs_are_outputs`` is required because this is a loop body: all state + carried from one four-round iteration to the next must retain its register. +* ``reserved_regs`` locks r13 (the stack pointer) and flags. r13 is + non-negotiable because the body addresses its fixed stack frame. LR/r14 is + deliberately available for renaming: the function saves it before the + scheduling region and returns with ``pop {..., pc}`` after it, so its entry + value is not live across the region. +* The region is too large for a monolithic solve, so the split heuristic and + its dependency-aware preprocessing are enabled. Factor 18 is retained from + the measured parameter search so that this M7-specific experiment does not + also retune the split factor. Use a larger factor after solver timeouts or + memory pressure, and a smaller factor only if hardware data shows that + window boundaries dominate. +* The M7 search uses two passes, a six-instruction seam extension, and a 0.05 + split step. These replace the M55-derived one-pass/no-seam/automatic-step + settings: the M7 model needs its own search-quality tuning. Treat further + changes as isolated experiments and compare their generated kernels on + N657x0 hardware. +* Whole-body performance estimation is diagnostic only and is disabled by + default: on this body it added roughly four minutes after all scheduling + decisions were complete. Enable ``--estimate-performance`` when a model + estimate is specifically needed; N657x0 measurements remain authoritative. +* The M7 target's store-to-load rule is active. The generic hazard controls + also retain their tested settings, including stack accesses, even though the + M7 target does not consult all of them. They may change only in a separately + benchmarked calibration experiment, not merely to obtain a schedule. +* ``variable_size`` lets each split solve minimize its own stalls. An initial + 64-stall feasibility budget avoids repeated infeasible 16/32-stall solves + for the dense theta and chi regions. The driver defaults to a 60/30-second + primary/retry budget for exploratory runs; the Makefile grants the full + checked-in artifact a 900-second primary ceiling. The checked-in unattended + run found every accepted incumbent within 743 seconds, permitting unattended + regeneration with evidence-based headroom. The driver logs the fixed seed + and output hash to identify results, while a wall-clock-limited CP-SAT solve is not + assumed to be byte-for-byte reproducible. +* Address-offset fixup is disabled because the kernel's address registers have + meanings beyond an isolated load/store stream. Enabling it without a proof + of that precondition is unsound. + +All other SLOTHY options intentionally retain their model defaults: scalar +reordering and renaming are enabled, spills and software pipelining are not, +and the M7 target supplies latency and functional-unit constraints. +""" + +import argparse +import ast +import hashlib +import logging +import math +import re +import sys + +from slothy import Slothy +from slothy.helper import AsmHelper +import slothy.targets.arm_v7m.arch_v7m as Arch_Armv7M +import slothy.targets.arm_v7m.cortex_m7 as Target_CortexM7 + + +KERNEL_START = "mld_keccak_f1600_x1_armv7m_asm_slothy_start" +KERNEL_END = "mld_keccak_f1600_x1_armv7m_asm_slothy_end" +IMMEDIATE_EXPRESSION = re.compile(r"#(?P[0-9][0-9*+\- ]*)") +SCALAR_WIDTH_SUFFIX = re.compile(r"\b(?Peor|ldr|str)\.w\b") +SCALAR_MEMORY_INSTRUCTION = re.compile( + r"^\s*(?P" + r"ldr(?:b|h|sb|sh|d)?|str(?:b|h|d)?|" + r"ldm(?:ia|db)?|stm(?:ia|db)?|push|pop" + r")(?:\.[a-z0-9]+)?\b", + re.IGNORECASE, +) +EQU_EXPRESSION = re.compile( + r"(?P^\s*\.equ\s+[_a-zA-Z][_a-zA-Z0-9]*\s*,\s*)" + r"(?P[0-9][0-9*+\- ]*)(?P\s*(?:@.*)?$)" +) + + +def evaluate_immediate(expression): + """Evaluate the numeric assembler expressions left after macro expansion.""" + node = ast.parse(expression, mode="eval").body + + def visit(current): + if isinstance(current, ast.Constant) and isinstance(current.value, int): + return current.value + if isinstance(current, ast.BinOp) and isinstance( + current.op, (ast.Add, ast.Sub, ast.Mult) + ): + left = visit(current.left) + right = visit(current.right) + if isinstance(current.op, ast.Add): + return left + right + if isinstance(current.op, ast.Sub): + return left - right + return left * right + if isinstance(current, ast.UnaryOp) and isinstance(current.op, ast.USub): + return -visit(current.operand) + raise ValueError(f"unsupported assembler immediate expression: {expression!r}") + + return visit(node) + + +def normalize_immediates(slothy): + """Convert ``#8*4``-style constants to the literal form M7 parsing needs.""" + _, body, _ = AsmHelper.extract(slothy.source, KERNEL_START, KERNEL_END) + + def normalize(text): + def replacement(match): + expression = match.group("expression") + if not any(operator in expression for operator in "+-*"): + return match.group(0) + return f"#{evaluate_immediate(expression)}" + + return IMMEDIATE_EXPRESSION.sub(replacement, text) + + for line in body: + line.transform_text(normalize) + + +def normalize_scalar_load_store_spelling(slothy): + """Normalize scalar spellings consistently for the Arm SLOTHY parser.""" + _, body, _ = AsmHelper.extract(slothy.source, KERNEL_START, KERNEL_END) + for line in body: + line.transform_text(lambda text: SCALAR_WIDTH_SUFFIX.sub(r"\g", text)) + + +def normalize_equ_definitions(slothy): + """Make numeric ``.equ`` aliases parseable after SLOTHY expands them.""" + for line in slothy.source: + + def replacement(match): + expression = match.group("expression") + if not any(operator in expression for operator in "+-*"): + return match.group(0) + return f"{match.group('prefix')}{evaluate_immediate(expression)}{match.group('suffix')}" + + line.transform_text(lambda text: EQU_EXPRESSION.sub(replacement, text)) + + +def kernel_outputs(slothy): + """Return APSR and every symbolic memory-dependency register in the body.""" + _, body, _ = AsmHelper.extract(slothy.source, KERNEL_START, KERNEL_END) + outputs = {"flags"} + + for line in body: + memory_tags = {"reads": 0, "writes": 0} + for access in ("reads", "writes"): + tags = line.tags.get(access, []) + if isinstance(tags, str): + tags = [tags] + for tag in tags: + if not isinstance(tag, str) or "\\" in tag: + raise ValueError( + "unexpanded or malformed SLOTHY memory tag " + f"{tag!r} in the Keccak scheduling region" + ) + outputs.add(f"hint_{tag}") + memory_tags[access] += 1 + + match = SCALAR_MEMORY_INSTRUCTION.match(line.text) + if match: + mnemonic = match.group("mnemonic").lower() + expected_access = ( + "reads" + if mnemonic.startswith(("ldr", "ldm")) or mnemonic == "pop" + else "writes" + ) + if memory_tags[expected_access] == 0: + raise ValueError( + f"memory {expected_access} instruction without a SLOTHY " + f"{expected_access} tag in the Keccak scheduling region: " + f"{line.text!r}" + ) + + if len(outputs) == 1: + raise ValueError("the Keccak scheduling region has no memory-dependency tags") + return sorted(outputs) + + +def configure(slothy, args): + """Apply the evidence-oriented M7 scheduling configuration.""" + normalize_equ_definitions(slothy) + # Expand macros before collecting tags, so macro arguments yield the actual + # symbolic memory locations used by this concrete Keccak implementation. + slothy.unfold(start=KERNEL_START, end=KERNEL_END) + normalize_immediates(slothy) + normalize_scalar_load_store_spelling(slothy) + + slothy.config.outputs = kernel_outputs(slothy) + slothy.config.inputs_are_outputs = True + + # The region has a fixed SP-based frame, but LR was saved before it and is + # restored into PC afterwards. Keep r13 fixed and let SLOTHY use r14. + slothy.config.reserved_regs = ["flags", "r13"] + assert "r13" in slothy.config.locked_registers + assert "r14" not in slothy.config.locked_registers + + slothy.config.unsafe_address_offset_fixup = False + slothy.config.variable_size = True + slothy.config.solver_random_seed = args.seed + slothy.config.timeout = args.timeout + slothy.config.retry_timeout = args.retry_timeout + + slothy.config.constraints.allow_spills = False + slothy.config.constraints.stalls_first_attempt = args.initial_stall_budget + slothy.config.constraints.st_ld_hazard = True + slothy.config.constraints.st_ld_hazard_ignore_stack = False + slothy.config.constraints.st_ld_hazard_ignore_scattergather = False + slothy.config.constraints.minimize_st_ld_hazards = False + + slothy.config.split_heuristic = True + slothy.config.split_heuristic_factor = args.split_factor + slothy.config.split_heuristic_repeat = args.split_repeat + slothy.config.split_heuristic_optimize_seam = args.split_seam + slothy.config.split_heuristic_preprocess_naive_interleaving = True + slothy.config.split_heuristic_estimate_performance = args.estimate_performance + if args.split_step is not None: + slothy.config.split_heuristic_stepsize = args.split_step + + +def integer_at_least(minimum): + """Return an argparse converter for an integer with a lower bound.""" + + def convert(value): + parsed = int(value) + if parsed < minimum: + raise argparse.ArgumentTypeError( + f"expected an integer greater than or equal to {minimum}" + ) + return parsed + + return convert + + +def number_at_least(minimum): + """Return an argparse converter for a finite float with a lower bound.""" + + def convert(value): + parsed = float(value) + if not math.isfinite(parsed) or parsed < minimum: + raise argparse.ArgumentTypeError( + f"expected a finite number greater than or equal to {minimum}" + ) + return parsed + + return convert + + +def portable_seed(value): + """Parse a non-negative seed accepted consistently by CP-SAT hosts.""" + parsed = int(value) + if not 0 <= parsed <= 0x7FFFFFFF: + raise argparse.ArgumentTypeError( + "expected a seed in the inclusive range 0..2147483647" + ) + return parsed + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Schedule a labelled scalar Keccak round body for Cortex-M7" + ) + parser.add_argument("input", help="assembly source containing the labelled body") + parser.add_argument( + "output", nargs="?", help="path for scheduled assembly (omitted for --dry-run)" + ) + parser.add_argument("--timeout", type=integer_at_least(1), default=60) + parser.add_argument("--retry-timeout", type=integer_at_least(1), default=30) + parser.add_argument("--seed", type=portable_seed, default=42) + parser.add_argument("--initial-stall-budget", type=integer_at_least(1), default=64) + parser.add_argument("--split-factor", type=number_at_least(2), default=18.0) + parser.add_argument("--split-repeat", type=integer_at_least(1), default=2) + parser.add_argument("--split-seam", type=integer_at_least(0), default=6) + parser.add_argument("--split-step", type=float, default=0.05) + parser.add_argument("--estimate-performance", action="store_true") + parser.add_argument( + "--dry-run", + action="store_true", + help="expand the body and report derived outputs without scheduling or writing", + ) + args = parser.parse_args() + if not args.dry_run and args.output is None: + parser.error("output is required unless --dry-run is used") + if args.split_step is not None and not (0 < args.split_step <= 1): + parser.error("--split-step must be greater than zero and no larger than one") + return args + + +def main(): + args = parse_args() + logging.basicConfig(level=logging.INFO, stream=sys.stdout) + slothy = Slothy( + Arch_Armv7M, + Target_CortexM7, + logger=logging.getLogger("schedule-keccak-m7"), + ) + slothy.load_source_from_file(args.input) + configure(slothy, args) + logging.info( + "configuration: seed=%d timeout=%d retry_timeout=%d " + "initial_stall_budget=%d split_factor=%g split_repeat=%d " + "split_seam=%d split_step=%s estimate_performance=%s " + "preprocess_naive_interleaving=%s unsafe_address_offset_fixup=%s " + "inputs_are_outputs=%s variable_size=%s", + args.seed, + args.timeout, + args.retry_timeout, + args.initial_stall_budget, + args.split_factor, + args.split_repeat, + args.split_seam, + "auto" if args.split_step is None else args.split_step, + args.estimate_performance, + slothy.config.split_heuristic_preprocess_naive_interleaving, + slothy.config.unsafe_address_offset_fixup, + slothy.config.inputs_are_outputs, + slothy.config.variable_size, + ) + if args.split_step is not None and args.split_step > 1 / args.split_factor: + logging.warning( + "split_step=%g exceeds the window width %g and leaves portions " + "of the body outside all optimization windows", + args.split_step, + 1 / args.split_factor, + ) + logging.info("preserved outputs: %s", ", ".join(slothy.config.outputs)) + + if args.dry_run: + return + + slothy.optimize(start=KERNEL_START, end=KERNEL_END) + slothy.write_source_to_file(args.output) + digest = hashlib.sha256() + with open(args.output, "rb") as output_file: + for chunk in iter(lambda: output_file.read(1024 * 1024), b""): + digest.update(chunk) + logging.info("output sha256: %s", digest.hexdigest()) + + +if __name__ == "__main__": + main() diff --git a/mldsa/mldsa_native.c b/mldsa/mldsa_native.c index 85e9e60f64..c07bc31e1a 100644 --- a/mldsa/mldsa_native.c +++ b/mldsa/mldsa_native.c @@ -98,6 +98,10 @@ #include "src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c" #include "src/fips202/native/armv81m/src/keccakf1600_round_constants.c" #endif +#if defined(MLD_SYS_ARMV81M_MVE) +#include "src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.c" +#include "src/fips202/native/armv81m/src/keccakf1600_round_constants_x1.c" +#endif #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */ /* Macro #undef's @@ -667,12 +671,25 @@ #undef MLD_USE_NATIVE_FIPS202_X4_EXTRACT_BYTES #undef MLD_USE_NATIVE_FIPS202_X4_XOR_BYTES #undef mld_keccak_f1600_x4_native_impl +/* mldsa/src/fips202/native/armv81m/mve_x1.h */ +#undef MLD_FIPS202_ARMV81M_NEED_X1 +#undef MLD_FIPS202_NATIVE_ARMV81M +#undef MLD_FIPS202_NATIVE_ARMV81M_MVE_X1_H +#undef MLD_USE_NATIVE_FIPS202_X1 +#undef MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES +#undef MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES +#undef mld_keccak_f1600_x1_native_impl +#undef mld_keccakf1600_extract_bytes_x1_native_impl +#undef mld_keccakf1600_xor_bytes_x1_native_impl /* mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h */ #undef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_H #undef mld_keccak_f1600_x4_mve_asm #undef mld_keccak_f1600_x4_state_extract_bytes_asm #undef mld_keccak_f1600_x4_state_xor_bytes_asm #undef mld_keccakf1600_round_constants +/* mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m_x1.h */ +#undef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_X1_H +#undef mld_keccakf1600_round_constants_x1 #endif /* MLD_SYS_ARMV81M_MVE */ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_ARITH) diff --git a/mldsa/mldsa_native_asm.S b/mldsa/mldsa_native_asm.S index 61d4186a5f..abead0d010 100644 --- a/mldsa/mldsa_native_asm.S +++ b/mldsa/mldsa_native_asm.S @@ -116,6 +116,11 @@ #include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S" #include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S" #endif +#if defined(MLD_SYS_ARMV81M_MVE) +#include "src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S" +#include "src/fips202/native/armv81m/src/keccak_f1600_x1_state_extract_bytes_armv7m.S" +#include "src/fips202/native/armv81m/src/keccak_f1600_x1_state_xor_bytes_armv7m.S" +#endif #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */ @@ -694,12 +699,25 @@ #undef MLD_USE_NATIVE_FIPS202_X4_EXTRACT_BYTES #undef MLD_USE_NATIVE_FIPS202_X4_XOR_BYTES #undef mld_keccak_f1600_x4_native_impl +/* mldsa/src/fips202/native/armv81m/mve_x1.h */ +#undef MLD_FIPS202_ARMV81M_NEED_X1 +#undef MLD_FIPS202_NATIVE_ARMV81M +#undef MLD_FIPS202_NATIVE_ARMV81M_MVE_X1_H +#undef MLD_USE_NATIVE_FIPS202_X1 +#undef MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES +#undef MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES +#undef mld_keccak_f1600_x1_native_impl +#undef mld_keccakf1600_extract_bytes_x1_native_impl +#undef mld_keccakf1600_xor_bytes_x1_native_impl /* mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h */ #undef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_H #undef mld_keccak_f1600_x4_mve_asm #undef mld_keccak_f1600_x4_state_extract_bytes_asm #undef mld_keccak_f1600_x4_state_xor_bytes_asm #undef mld_keccakf1600_round_constants +/* mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m_x1.h */ +#undef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_X1_H +#undef mld_keccakf1600_round_constants_x1 #endif /* MLD_SYS_ARMV81M_MVE */ #endif /* MLD_CONFIG_USE_NATIVE_BACKEND_FIPS202 */ #if defined(MLD_CONFIG_USE_NATIVE_BACKEND_ARITH) diff --git a/mldsa/src/fips202/keccakf1600.c b/mldsa/src/fips202/keccakf1600.c index 18d2e6e04b..61cd0ed581 100644 --- a/mldsa/src/fips202/keccakf1600.c +++ b/mldsa/src/fips202/keccakf1600.c @@ -40,6 +40,15 @@ void mld_keccakf1600_extract_bytes(uint64_t *state, unsigned char *data, unsigned i; #if defined(MLD_SYS_LITTLE_ENDIAN) uint8_t *state_ptr = (uint8_t *)state + offset; +#endif +#if defined(MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES) + if (mld_keccakf1600_extract_bytes_x1_native(state, data, offset, length) == + MLD_NATIVE_FUNC_SUCCESS) + { + return; + } +#endif /* MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES */ +#if defined(MLD_SYS_LITTLE_ENDIAN) for (i = 0; i < length; i++) __loop__(invariant(i <= length) decreases(length - i)) @@ -64,6 +73,15 @@ void mld_keccakf1600_xor_bytes(uint64_t *state, const unsigned char *data, unsigned i; #if defined(MLD_SYS_LITTLE_ENDIAN) uint8_t *state_ptr = (uint8_t *)state + offset; +#endif +#if defined(MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES) + if (mld_keccakf1600_xor_bytes_x1_native(state, data, offset, length) == + MLD_NATIVE_FUNC_SUCCESS) + { + return; + } +#endif /* MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES */ +#if defined(MLD_SYS_LITTLE_ENDIAN) for (i = 0; i < length; i++) __loop__(invariant(i <= length) decreases(length - i)) diff --git a/mldsa/src/fips202/native/api.h b/mldsa/src/fips202/native/api.h index 7abac85a4e..7e5dac0d9d 100644 --- a/mldsa/src/fips202/native/api.h +++ b/mldsa/src/fips202/native/api.h @@ -66,6 +66,42 @@ __contract__( ); #endif /* MLD_USE_NATIVE_FIPS202_X4 */ +/* + * Native x1 XOR bytes and extract bytes interface. + * + * These hooks let an x1 backend retain a custom internal state + * representation between absorb, permutation, and squeeze operations. + * The custom representation of the zero state must be the all-zero state. + */ + +#if defined(MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES) +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_xor_bytes_x1_native( + uint64_t *state, const unsigned char *data, unsigned offset, + unsigned length) +__contract__( + requires(0 <= offset && offset <= 25 * sizeof(uint64_t) && + 0 <= length && length <= 25 * sizeof(uint64_t) - offset) + requires(memory_no_alias(state, sizeof(uint64_t) * 25)) + requires(memory_no_alias(data, length)) + assigns(memory_slice(state, sizeof(uint64_t) * 25)) + ensures(return_value == MLD_NATIVE_FUNC_FALLBACK || return_value == MLD_NATIVE_FUNC_SUCCESS) + ensures((return_value == MLD_NATIVE_FUNC_FALLBACK) ==> array_unchanged_u64(state, 25))); +#endif /* MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES */ + +#if defined(MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES) +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_extract_bytes_x1_native( + uint64_t *state, unsigned char *data, unsigned offset, unsigned length) +__contract__( + requires(0 <= offset && offset <= 25 * sizeof(uint64_t) && + 0 <= length && length <= 25 * sizeof(uint64_t) - offset) + requires(memory_no_alias(state, sizeof(uint64_t) * 25)) + requires(memory_no_alias(data, length)) + assigns(memory_slice(data, length)) + ensures(return_value == MLD_NATIVE_FUNC_FALLBACK || return_value == MLD_NATIVE_FUNC_SUCCESS)); +#endif /* MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES */ + /* * Native x4 XOR bytes and extract bytes interface. * diff --git a/mldsa/src/fips202/native/armv81m/README.md b/mldsa/src/fips202/native/armv81m/README.md index 9c2c0d26ea..835dbdbe69 100644 --- a/mldsa/src/fips202/native/armv81m/README.md +++ b/mldsa/src/fips202/native/armv81m/README.md @@ -4,7 +4,9 @@ This directory contains the source code for a FIPS202 backend targeting the Armv8.1-M + MVE/Helium architecture. It is automatically derived from -the respective development source in [dev/fips202/armv81m](../../../../../dev/fips202/armv81m). +the respective development sources in +[dev/fips202/armv81m](../../../../../dev/fips202/armv81m) and +[dev/fips202/armv81m_opt](../../../../../dev/fips202/armv81m_opt). **Warning:** This backend is still in active development and has not yet undergone the same level of review as the rest of the code. Use at your own risk! diff --git a/mldsa/src/fips202/native/armv81m/mve_x1.h b/mldsa/src/fips202/native/armv81m/mve_x1.h new file mode 100644 index 0000000000..710a1879f3 --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/mve_x1.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +#ifndef MLD_FIPS202_NATIVE_ARMV81M_MVE_X1_H +#define MLD_FIPS202_NATIVE_ARMV81M_MVE_X1_H + +#define MLD_FIPS202_NATIVE_ARMV81M + +/* Part of backend API */ +#define MLD_USE_NATIVE_FIPS202_X1 +#define MLD_USE_NATIVE_FIPS202_X1_XOR_BYTES +#define MLD_USE_NATIVE_FIPS202_X1_EXTRACT_BYTES +/* Guard for assembly files */ +#define MLD_FIPS202_ARMV81M_NEED_X1 + +#if !defined(__ASSEMBLER__) +#include "../api.h" + +#define mld_keccak_f1600_x1_native_impl \ + MLD_NAMESPACE(keccak_f1600_x1_native_impl) +MLD_INTERNAL_API +int mld_keccak_f1600_x1_native_impl(uint64_t *state); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccak_f1600_x1_native(uint64_t *state) +{ + return mld_keccak_f1600_x1_native_impl(state); +} + +#define mld_keccakf1600_xor_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_xor_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_xor_bytes_x1_native_impl(uint64_t *state, + const uint8_t *data, + unsigned offset, unsigned length); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_xor_bytes_x1_native(uint64_t *state, + const uint8_t *data, + unsigned offset, + unsigned length) +{ + return mld_keccakf1600_xor_bytes_x1_native_impl(state, data, offset, length); +} + +#define mld_keccakf1600_extract_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_extract_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_extract_bytes_x1_native_impl(uint64_t *state, uint8_t *data, + unsigned offset, + unsigned length); + +MLD_MUST_CHECK_RETURN_VALUE +static MLD_INLINE int mld_keccakf1600_extract_bytes_x1_native(uint64_t *state, + uint8_t *data, + unsigned offset, + unsigned length) +{ + return mld_keccakf1600_extract_bytes_x1_native_impl(state, data, offset, + length); +} + +#endif /* !__ASSEMBLER__ */ + +#endif /* !MLD_FIPS202_NATIVE_ARMV81M_MVE_X1_H */ diff --git a/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m_x1.h b/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m_x1.h new file mode 100644 index 0000000000..ee6643957a --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m_x1.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ +#ifndef MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_X1_H +#define MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_X1_H + +#include "../../../../common.h" + +/* Scalar x1 Keccak round constants followed by its loop terminator */ +#define mld_keccakf1600_round_constants_x1 \ + MLD_NAMESPACE(keccakf1600_round_constants_x1) +MLD_INTERNAL_DATA_DECLARATION const uint32_t + mld_keccakf1600_round_constants_x1[49]; + +#endif /* !MLD_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_X1_H */ diff --git a/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.c b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.c new file mode 100644 index 0000000000..58151f9b73 --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.c @@ -0,0 +1,76 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +#include "fips202_native_armv81m_x1.h" + +#define mld_keccak_f1600_x1_armv7m_asm MLD_NAMESPACE(keccak_f1600_x1_armv7m_asm) +void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]); + +#define mld_keccak_f1600_x1_state_xor_bytes_asm \ + MLD_NAMESPACE(keccak_f1600_x1_state_xor_bytes_asm) +void mld_keccak_f1600_x1_state_xor_bytes_asm(void *state, const uint8_t *data, + unsigned offset, unsigned length); + +#define mld_keccak_f1600_x1_state_extract_bytes_asm \ + MLD_NAMESPACE(keccak_f1600_x1_state_extract_bytes_asm) +void mld_keccak_f1600_x1_state_extract_bytes_asm(void *state, uint8_t *data, + unsigned offset, + unsigned length); + +#define mld_keccak_f1600_x1_native_impl \ + MLD_NAMESPACE(keccak_f1600_x1_native_impl) +MLD_INTERNAL_API +int mld_keccak_f1600_x1_native_impl(uint64_t *state) +{ + /* The x1 native xor/extract hooks keep state bit-interleaved in-place. */ + mld_keccak_f1600_x1_armv7m_asm((uint32_t *)state, + mld_keccakf1600_round_constants_x1); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#define mld_keccakf1600_xor_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_xor_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_xor_bytes_x1_native_impl(uint64_t *state, + const uint8_t *data, + unsigned offset, unsigned length) +{ + mld_keccak_f1600_x1_state_xor_bytes_asm(state, data, offset, length); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#define mld_keccakf1600_extract_bytes_x1_native_impl \ + MLD_NAMESPACE(keccakf1600_extract_bytes_x1_native_impl) +MLD_INTERNAL_API +int mld_keccakf1600_extract_bytes_x1_native_impl(uint64_t *state, uint8_t *data, + unsigned offset, + unsigned length) +{ + mld_keccak_f1600_x1_state_extract_bytes_asm(state, data, offset, length); + return MLD_NATIVE_FUNC_SUCCESS; +} + +#else /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +MLD_EMPTY_CU(keccak_f1600_x1_armv7m) + +#endif /* !(MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED) \ + */ + +/* To facilitate single-compilation-unit (SCU) builds, undefine all macros. + * Don't modify by hand -- this is auto-generated by scripts/autogen. */ +#undef mld_keccak_f1600_x1_armv7m_asm +#undef mld_keccak_f1600_x1_state_xor_bytes_asm +#undef mld_keccak_f1600_x1_state_extract_bytes_asm +/* Some macros are kept because they are also defined in a header. */ +/* Keep: mld_keccak_f1600_x1_native_impl (mve_x1.h) */ +/* Keep: mld_keccakf1600_xor_bytes_x1_native_impl (mve_x1.h) */ +/* Keep: mld_keccakf1600_extract_bytes_x1_native_impl (mve_x1.h) */ diff --git a/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S new file mode 100644 index 0000000000..c74189588b --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m_opt_m7.S @@ -0,0 +1,1655 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* References + * ========== + * + * - [ADOMNICAI23] + * An update on Keccak performance on ARMv7-M + * Alexandre Adomnicai + * https://eprint.iacr.org/2023/773 + * + * - [SLOTHYM7] + * Enabling Microarchitectural Agility: Taking ML-KEM and ML-DSA from + * Cortex-M4 to M7 with SLOTHY + * Abdulrahman, Kannwischer, Lim + * https://eprint.iacr.org/2025/366 + * + * - [XKCP] + * eXtended Keccak Code Package + * Bertoni, Daemen, Peeters, Van Assche, Van Keer + * https://github.com/XKCP/XKCP + */ + +/* + * This file is adapted from the CC0-1.0 sources + * keccakp1600_fast_cortexm3-4.S and keccakp1600_cortexm7.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + */ + +/*yaml + Name: keccak_f1600_x1_armv7m_asm + Description: Scalar x1 Keccak-f[1600] permutation using the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read/write + c_parameter: uint32_t state[50] + description: Bit-interleaved x1 state as even/odd 32-bit halves for each Keccak lane + r1: + type: buffer + size_bytes: 196 + permissions: read + c_parameter: const uint32_t rc[49] + description: 24 bit-interleaved round constants followed by the 0xff loop terminator + test_bytes: + 192: 0xff + 193: 0x00 + 194: 0x00 + 195: 0x00 + Stack: + bytes: 64 + description: register preservation (40) + scalar scratch/intermediate state (24); no MVE/Q-register scratch +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp; d8-d15 are not accessed. + * The caller-saved r0-r3, r12, and APSR condition flags may be clobbered. + * The 200-byte state buffer is modified; the round-constant buffer is read-only. + */ + +/* + * This file is derived from the CC0-1.0 implementation @[XKCP]. + * Optimizations for Armv7-M are described in @[ADOMNICAI23]. + * Further optimizations using SLOTHY are described in @[SLOTHYM7]. + */ +/* WARNING: This implementation requires a little-endian Armv7-M or Armv8-M Mainline CPU. */ + +#include "../../../../common.h" +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +/* + * WARNING: This file is auto-derived from the mldsa-native source file + * dev/fips202/armv81m_opt/src/keccak_f1600_x1_armv7m_opt_m7.S using scripts/simpasm. Do not modify it directly. + */ + +.thumb +.syntax unified + +.text +.balign 4 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_armv7m_asm) +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_armv7m_asm) + + .cfi_startproc + push.w {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} + .cfi_adjust_cfa_offset 0x28 + .cfi_rel_offset r4, 0x0 + .cfi_rel_offset r5, 0x4 + .cfi_rel_offset r6, 0x8 + .cfi_rel_offset r7, 0xc + .cfi_rel_offset r8, 0x10 + .cfi_rel_offset r9, 0x14 + .cfi_rel_offset r10, 0x18 + .cfi_rel_offset r11, 0x1c + .cfi_rel_offset lr, 0x24 + sub sp, #0x18 + .cfi_adjust_cfa_offset 0x18 + str r1, [sp, #0x14] + +Lmld_keccak_f1600_x1_armv7m_asm_slothy_start: + ldr.w r11, [r0, #0x4c] + ldr.w r8, [r0, #0x30] + ldr.w lr, [r0, #0x24] + ldr r3, [r0, #0x8] + ldr.w r10, [r0, #0x74] + ldr r5, [r0, #0x58] + eor.w r11, lr, r11 + ldr.w r12, [r0, #0x34] + eor.w r9, r3, r8 + ldr r6, [r0, #0xc] + eor.w r4, r11, r10 + ldr r2, [r0, #0x44] + eor.w r7, r9, r5 + ldr.w lr, [r0, #0x1c] + eor.w r3, r6, r12 + ldr.w r6, [r0, #0x9c] + eor.w r2, lr, r2 + ldr.w r10, [r0, #0x48] + ldr.w r12, [r0, #0x20] + ldr r5, [r0, #0x5c] + eor.w r1, r4, r6 + ldr.w r6, [r0, #0x80] + eor.w r10, r12, r10 + ldr.w r11, [r0, #0x3c] + eor.w r9, r3, r5 + ldr r3, [r0, #0x14] + eor.w r5, r7, r6 + ldr r7, [r0, #0x6c] + eor.w r11, r3, r11 + ldr.w r12, [r0, #0x28] + ldr.w lr, [r0] + ldr r3, [r0, #0x64] + eor.w r7, r2, r7 + ldr.w r8, [r0, #0x40] + eor.w r12, lr, r12 + ldr r2, [r0, #0x18] + eor.w lr, r11, r3 + ldr.w r6, [r0, #0xc4] + eor.w r11, r2, r8 + ldr r3, [r0, #0x70] + ldr.w r2, [r0, #0x84] + ldr.w r8, [r0, #0xa8] + eor.w r4, r1, r6 + ldr r6, [r0, #0x68] + eor.w r1, r10, r3 + ldr r3, [r0, #0x50] + eor.w r2, r9, r2 + ldr.w r10, [r0, #0x8c] + eor.w r5, r5, r8 + ldr.w r9, [r0, #0x94] + eor.w r11, r11, r6 + ldr.w r6, [r0, #0x98] + eor.w r3, r12, r3 + eor.w r8, r4, r5 + eor.w lr, lr, r10 + ldr.w r10, [r0, #0x90] + eor.w r9, r7, r9 + ldr.w r7, [r0, #0xac] + eor.w r1, r1, r6 + ldr r6, [r0, #0x78] + eor.w r10, r11, r10 + ldr.w r11, [r0, #0xb4] + eor.w r12, r2, r7 + ldr.w r7, [r0, #0xc0] + eor.w r2, r3, r6 + ldr.w r6, [r0, #0xbc] + eor.w r11, lr, r11 + ldr.w r3, [r0, #0xb8] + eor.w r1, r1, r7 + ldr.w lr, [r0, #0xa0] + eor.w r6, r9, r6 + ldr r7, [r0, #0x38] + eor.w r3, r10, r3 + eor.w r9, r1, r11 + eor.w r10, r2, lr + ldr.w lr, [r0, #0x10] + str.w r9, [sp, #0xc] + ldr.w r9, [r0, #0x2c] + eor.w r2, lr, r7 + ldr r7, [r0, #0x4] + eor.w lr, r1, r12, ror #31 + ldr r1, [r0, #0x54] + eor.w r7, r7, r9 + ldr.w r9, [r0, #0x60] + str.w lr, [sp] + ldr.w lr, [r0, #0x7c] + eor.w r1, r7, r1 + ldr.w r7, [r0, #0x88] + eor.w r9, r2, r9 + ldr.w r2, [r0, #0xa4] + eor.w lr, r1, lr + ldr.w r1, [r0, #0xb0] + eor.w r9, r9, r7 + eor.w r7, lr, r2 + eor.w r2, r12, r3 + eor.w r1, r9, r1 + ldr.w r9, [r0, #0x84] + eor.w lr, r6, r10 + eor.w r10, r10, r11, ror #31 + eor.w r11, r7, r1 + eor.w r12, r3, r7, ror #31 + eor.w r3, r11, r9 + ldr.w r9, [r0, #0xb4] + eor.w r7, r2, r9 + eor.w r9, r1, r4, ror #31 + bic.w r1, r7, r3, ror #8 + str.w r8, [sp, #0x4] + eor.w r4, r5, r6, ror #31 + ldr r6, [r0, #0x18] + eor.w r5, r9, r6 + ldr r6, [r0, #0x48] + str r4, [sp, #0x10] + eor.w r6, r12, r6 + bic.w r4, r6, r5, ror #28 + str.w r9, [sp, #0x8] + eor.w r4, r4, r7, ror #11 + str r4, [r0, #0x48] + bic.w r4, r5, r7, ror #15 + ldr r7, [r0, #0x54] + eor.w r7, r8, r7 + eor.w r4, r4, r3, ror #23 + str r4, [r0, #0x18] + ldr r4, [r0, #0x68] + eor.w r1, r1, r7, ror #29 + str.w r1, [r0, #0xb4] + bic.w r3, r3, r7, ror #21 + ldr.w r1, [r0, #0x9c] + eor.w r3, r3, r6, ror #13 + str.w r3, [r0, #0x84] + eor.w r3, r9, r4 + eor.w r1, lr, r1 + bic.w r4, r7, r6, ror #24 + ldr.w r6, [r0, #0xa4] + eor.w r7, r4, r5, ror #20 + eor.w r4, r8, r6 + bic.w r5, r1, r3, ror #24 + ldr.w r8, [r0, #0x8] + eor.w r6, r10, r8 + bic.w r8, r4, r1, ror #5 + str r7, [r0, #0x54] + bic.w r7, r6, r4, ror #23 + eor.w r1, r7, r1, ror #28 + str r1, [r0, #0x68] + eor.w r7, r8, r3, ror #29 + ldr.w r8, [r0, #0x3c] + str r7, [r0, #0x3c] + eor.w r1, r2, r8 + ldr.w r8, [sp] + bic.w r7, r1, r6, ror #3 + eor.w r5, r5, r1, ror #1 + str r5, [r0, #0x8] + bic.w r3, r3, r1, ror #9 + ldr r1, [r0, #0x58] + eor.w r5, r3, r6, ror #12 + ldr r6, [r0, #0x28] + str.w r5, [r0, #0xa4] + eor.w r5, r7, r4, ror #26 + eor.w r7, r8, r6 + ldr r3, [r0, #0x24] + eor.w r1, r10, r1 + ldr.w r4, [r0, #0x8c] + eor.w r6, lr, r3 + str.w r5, [r0, #0x9c] + eor.w r5, r2, r4 + bic.w r4, r1, r7, ror #19 + ldr.w r3, [r0, #0xb8] + eor.w r4, r4, r6, ror #23 + str r4, [r0, #0x28] + bic.w r4, r5, r1, ror #3 + eor.w r3, r9, r3 + eor.w r4, r4, r7, ror #22 + str r4, [r0, #0x58] + bic.w r4, r3, r5, ror #20 + eor.w r1, r4, r1, ror #23 + str.w r1, [r0, #0x8c] + bic.w r4, r6, r3, ror #18 + ldr r1, [r0, #0x70] + eor.w r5, r4, r5, ror #6 + str.w r5, [r0, #0xb8] + bic.w r5, r7, r6, ror #4 + ldr.w r6, [r0, #0xac] + eor.w r4, r5, r3, ror #22 + ldr r7, [r0, #0x40] + eor.w r3, r9, r7 + ldr r5, [r0, #0x14] + eor.w r7, r2, r5 + eor.w r1, r12, r1 + str r4, [r0, #0x24] + bic.w r4, r1, r3, ror #24 + eor.w r9, r4, r7, ror #20 + eor.w r5, r11, r6 + ldr r4, [r0, #0x78] + bic.w r6, r3, r7, ror #28 + eor.w r4, r8, r4 + bic.w r7, r7, r5, ror #30 + str.w r9, [r0, #0x78] + bic.w r9, r4, r1, ror #1 + eor.w r9, r9, r3, ror #25 + str.w r9, [r0, #0xac] + ldr.w r9, [r0, #0x64] + bic.w r3, r5, r4, ror #13 + eor.w r3, r3, r1, ror #14 + str r3, [r0, #0x14] + eor.w r1, r2, r9 + ldr.w r9, [sp, #0xc] + eor.w r4, r7, r4, ror #11 + ldr.w r2, [r0, #0x94] + str r4, [r0, #0x40] + eor.w r3, r9, r2 + eor.w r7, r6, r5, ror #26 + ldr.w r4, [r0, #0xc0] + eor.w r5, r12, r4 + ldr r4, [r0, #0x30] + eor.w r2, r10, r4 + bic.w r6, r3, r1, ror #21 + str r7, [r0, #0x70] + bic.w r7, r5, r3, ror #28 + eor.w r4, r6, r2, ror #21 + str r4, [r0, #0x30] + eor.w r7, r7, r1, ror #17 + ldr r6, [r0] + eor.w r4, r8, r6 + bic.w r1, r1, r2 + str r7, [r0, #0x64] + bic.w r7, r4, r5, ror #25 + ldr.w r6, [r0, #0x80] + eor.w r1, r4, r1, ror #10 + eor.w r6, r10, r6 + bic.w r4, r2, r4, ror #22 + ldr r2, [sp, #0x10] + eor.w r5, r4, r5, ror #15 + ldr r4, [sp, #0x14] + str.w r5, [r0, #0xc0] + eor.w r5, r7, r3, ror #21 + ldr r3, [r0, #0x50] + ldr r7, [r0, #0x4c] + ldr r4, [r4] + eor.w r3, r8, r3 + eor.w r4, r4, r1 + str.w r5, [r0, #0x94] + eor.w r1, lr, r7 + ldr r7, [r0, #0x1c] + str r4, [r0] + bic.w r4, r6, r3, ror #21 + eor.w r4, r4, r1, ror #12 + eor.w r7, r9, r7 + str.w r4, [r0, #0x80] + bic.w r5, r3, r1, ror #23 + ldr.w r4, [r0, #0xb0] + eor.w r5, r5, r7, ror #19 + str r5, [r0, #0x50] + eor.w r5, r2, r4 + bic.w r4, r5, r6, ror #8 + eor.w r3, r4, r3, ror #29 + str.w r3, [r0, #0xb0] + bic.w r3, r7, r5, ror #16 + ldr r4, [r0, #0x6c] + eor.w r4, r9, r4 + eor.w r6, r3, r6, ror #24 + ldr.w r3, [r0, #0x98] + str r6, [r0, #0x1c] + eor.w r3, r12, r3 + bic.w r1, r1, r7, ror #28 + ldr r6, [r0, #0xc] + ldr r7, [r0, #0x38] + eor.w r7, r2, r7 + eor.w r6, r11, r6 + eor.w r1, r1, r5, ror #12 + str r1, [r0, #0x4c] + bic.w r5, r4, r7, ror #10 + ldr.w r1, [r0, #0xa0] + eor.w r5, r5, r6, ror #12 + str.w r5, [r0, #0xa0] + bic.w r5, r3, r4, ror #23 + eor.w r1, r8, r1 + eor.w r5, r5, r7, ror #1 + str r5, [r0, #0xc] + ldr.w r8, [sp, #0x4] + bic.w r5, r1, r3, ror #5 + eor.w r4, r5, r4, ror #28 + str r4, [r0, #0x38] + ldr r5, [r0, #0x5c] + bic.w r4, r6, r1, ror #24 + eor.w r4, r4, r3, ror #29 + str r4, [r0, #0x6c] + ldr.w r4, [r0, #0x88] + eor.w r3, r11, r5 + bic.w r6, r7, r6, ror #2 + eor.w r4, r2, r4 + ldr r7, [r0, #0x2c] + ldr r5, [r0, #0x20] + eor.w r12, r12, r5 + eor.w r7, r8, r7 + eor.w r6, r6, r1, ror #26 + str.w r6, [r0, #0x98] + ldr.w r1, [r0, #0xbc] + bic.w r5, r3, r7, ror #19 + eor.w r6, r9, r1 + eor.w r5, r5, r12, ror #24 + ldr r1, [r0, #0x44] + str r5, [r0, #0x2c] + eor.w r9, r9, r1 + bic.w r1, r4, r3, ror #2 + ldr r5, [r0, #0x74] + eor.w r1, r1, r7, ror #21 + str r1, [r0, #0x5c] + bic.w r1, r6, r4, ror #21 + eor.w r5, lr, r5 + eor.w r3, r1, r3, ror #23 + str.w r3, [r0, #0x88] + bic.w r3, r12, r6, ror #17 + ldr r1, [r0, #0x7c] + eor.w r4, r3, r4, ror #6 + eor.w r1, r8, r1 + str.w r4, [r0, #0xbc] + bic.w r7, r7, r12, ror #5 + ldr r3, [r0, #0x10] + eor.w r6, r7, r6, ror #22 + eor.w r4, r2, r3 + ldr.w r12, [sp, #0x8] + ldr.w r7, [r0, #0xa8] + str r6, [r0, #0x20] + eor.w r3, r10, r7 + bic.w r10, r5, r9, ror #24 + eor.w r7, r10, r4, ror #21 + str r7, [r0, #0x7c] + bic.w r6, r1, r5, ror #1 + ldr r7, [r0, #0x60] + eor.w r6, r6, r9, ror #25 + str.w r6, [r0, #0xa8] + bic.w r6, r3, r1, ror #12 + eor.w r2, r2, r7 + eor.w r5, r6, r5, ror #13 + str r5, [r0, #0x10] + bic.w r5, r4, r3, ror #30 + ldr.w r6, [r0, #0x90] + eor.w r10, r5, r1, ror #10 + eor.w r5, r12, r6 + str.w r10, [r0, #0x44] + bic.w r9, r9, r4, ror #29 + ldr r7, [r0, #0x4] + eor.w r1, r9, r3, ror #27 + ldr r6, [r0, #0x34] + eor.w r3, r8, r7 + eor.w r6, r11, r6 + ldr.w r12, [r0, #0xc4] + eor.w r8, lr, r12 + str r1, [r0, #0x74] + bic.w r4, r5, r2, ror #21 + ldr.w r12, [sp, #0x14] + eor.w r11, r4, r6, ror #20 + str.w r11, [r0, #0x34] + bic.w lr, r8, r5, ror #29 + ldr.w r11, [r12, #0x4] + eor.w lr, lr, r2, ror #18 + str.w lr, [r0, #0x60] + bic.w lr, r2, r6, ror #31 + ldr.w r9, [r0, #0x48] + bic.w r7, r3, r8, ror #25 + ldr.w r4, [r0, #0xc0] + eor.w r5, r7, r5, ror #22 + str.w r5, [r0, #0x90] + bic.w r12, r6, r3, ror #22 + ldr.w r7, [r0, #0x98] + eor.w r10, r12, r8, ror #15 + str.w r10, [r0, #0xc4] + eor.w r8, r3, lr, ror #11 + ldr.w lr, [r0, #0x24] + ldr.w r10, [r0, #0x74] + ldr r5, [r0, #0x60] + eor.w r9, r4, r9, ror #12 + ldr.w r4, [r0, #0x80] + ldr r1, [r0, #0x34] + ldr.w r12, [r0, #0xb0] + eor.w r6, r11, r8 + eor.w r2, r9, r7, ror #19 + eor.w r11, r1, r4, ror #20 + ldr r3, [r0, #0x3c] + eor.w r4, r5, r12, ror #9 + ldr r1, [r0, #0x5c] + eor.w r5, r2, lr, ror #4 + ldr.w lr, [r0, #0x8] + ldr.w r8, [r0, #0x88] + eor.w r12, r4, r3, ror #30 + str r6, [r0, #0x4] + ldr r2, [r0, #0x18] + eor.w r7, r11, lr, ror #6 + ldr.w r9, [r0, #0xac] + eor.w lr, r5, r10, ror #26 + ldr r3, [r0, #0x30] + eor.w r11, r7, r1, ror #3 + ldr.w r7, [r0, #0x84] + eor.w r4, r12, r8, ror #11 + ldr.w r12, [r0, #0x4c] + eor.w r6, r11, r9, ror #22 + ldr.w r5, [r0, #0x94] + ldr.w r8, [r0, #0x6c] + eor.w r3, r3, r7, ror #20 + ldr.w r11, [r0, #0xc4] + ror.w lr, lr, #0xa + eor.w r9, lr, r6, ror #21 + str.w r9, [sp] + eor.w r9, r11, r12, ror #12 + ldr.w r10, [r0, #0x14] + ldr.w r7, [r0, #0xb4] + eor.w r5, r5, r2, ror #18 + ldr.w r12, [r0, #0xb8] + ldr.w r2, [r0, #0x9c] + eor.w r1, r5, r8, ror #31 + ldr.w r8, [r0, #0xc] + eor.w r10, r4, r10, ror #6 + ldr r5, [r0, #0x64] + eor.w r11, r1, r12, ror #18 + ldr.w r12, [r0, #0x90] + eor.w r4, r5, r7, ror #8 + ldr r1, [r0, #0x44] + eor.w lr, lr, r10, ror #25 + ldr r5, [r0, #0x1c] + eor.w r7, r3, r8, ror #7 + ldr.w r8, [r0, #0x50] + eor.w r3, r11, r1, ror #1 + ldr.w r11, [r0, #0x4] + eor.w r12, r12, r5, ror #18 + ldr r1, [r0, #0x54] + eor.w r9, r9, r2, ror #19 + ldr r5, [r0, #0x68] + eor.w r2, r3, r6, ror #22 + ldr r6, [r0] + eor.w r11, r11, r8, ror #31 + ldr.w r8, [r0, #0x38] + eor.w r1, r6, r1, ror #30 + ldr.w r6, [r0, #0xa4] + eor.w r5, r12, r5 + ldr.w r12, [r0, #0xa0] + eor.w r4, r4, r8, ror #30 + ldr.w r8, [r0, #0x58] + eor.w r6, r11, r6, ror #20 + ldr.w r11, [r0, #0x28] + eor.w r12, r1, r12, ror #19 + ldr r1, [r0, #0x20] + eor.w r8, r7, r8, ror #3 + ldr r7, [r0, #0x7c] + eor.w r12, r12, r11, ror #27 + ldr.w r11, [r0, #0x8c] + eor.w r9, r9, r1, ror #4 + str.w lr, [sp, #0xc] + eor.w lr, r12, r7, ror #12 + ldr r7, [r0, #0x70] + eor.w r4, r4, r11, ror #11 + ldr.w r11, [r0, #0xbc] + eor.w r10, lr, r10, ror #24 + ldr.w r1, [r0, #0xa8] + eor.w r9, r9, r7, ror #27 + ldr.w r12, [r0, #0x40] + eor.w r11, r5, r11, ror #19 + ldr r5, [r0, #0x2c] + eor.w r7, r8, r1, ror #22 + ldr r1, [r0, #0x10] + eor.w r12, r11, r12, ror #1 + ldr.w r8, [r0, #0x78] + ror.w r7, r7, #0x15 + eor.w r11, r6, r5, ror #27 + eor.w lr, r12, lr + eor.w r6, r7, r9, ror #10 + eor.w r11, r11, r8, ror #13 + ldr.w r8, [r0, #0xa4] + eor.w r1, r4, r1, ror #6 + ldr r4, [r0, #0x5c] + eor.w r7, r7, r12, ror #31 + ldr r5, [r0, #0x48] + eor.w r12, r3, r11, ror #31 + ror.w r1, r1, #0x19 + str r7, [sp, #0x10] + eor.w r8, r6, r8, ror #20 + eor.w r11, r11, r1 + eor.w r5, r12, r5, ror #22 + str r6, [sp, #0x4] + eor.w r4, r11, r4, ror #25 + eor.w r1, r1, r9, ror #9 + ldr r7, [r0, #0x78] + ldr.w r9, [r0, #0x14] + bic.w r3, r4, r8, ror #21 + eor.w r3, r3, r5, ror #13 + str r3, [r0, #0x5c] + eor.w r6, r6, r7, ror #13 + ldr.w r3, [r0, #0x94] + eor.w r7, r1, r3 + eor.w r3, r2, r9, ror #31 + bic.w r9, r8, r5, ror #24 + bic.w r5, r5, r7, ror #28 + eor.w r9, r9, r7, ror #20 + str.w r9, [r0, #0xa4] + ldr.w r9, [r0, #0x20] + bic.w r7, r7, r3, ror #15 + eor.w r5, r5, r3, ror #11 + str r5, [r0, #0x48] + bic.w r3, r3, r4, ror #8 + ldr r5, [r0, #0x30] + eor.w r8, r3, r8, ror #29 + str.w r8, [r0, #0x14] + eor.w r3, lr, r9, ror #14 + eor.w r9, r10, r5, ror #21 + ldr r5, [r0, #0x6c] + eor.w r7, r7, r4, ror #23 + str.w r7, [r0, #0x94] + bic.w r7, r9, r6, ror #23 + eor.w r4, r7, r3, ror #28 + ldr.w r7, [r0, #0xb0] + eor.w r5, r1, r5, ror #31 + str r4, [r0, #0x6c] + bic.w r4, r6, r3, ror #5 + str r1, [sp, #0x8] + eor.w r7, r2, r7, ror #2 + bic.w r8, r3, r5, ror #24 + ldr r3, [r0, #0x54] + eor.w r4, r4, r5, ror #29 + str.w r4, [r0, #0xb0] + eor.w r8, r8, r7, ror #1 + str.w r8, [r0, #0x30] + ldr.w r8, [r0, #0x18] + bic.w r4, r7, r9, ror #3 + eor.w r4, r4, r6, ror #26 + ldr r6, [r0, #0x44] + str r4, [r0, #0x20] + bic.w r7, r5, r7, ror #9 + eor.w r5, r1, r8, ror #18 + ldr.w r8, [sp] + eor.w r1, r1, r6, ror #1 + ldr.w r6, [r0, #0x88] + eor.w r4, r8, r3, ror #30 + ldr.w r3, [r0, #0xc4] + eor.w r9, r7, r9, ror #12 + ldr r7, [r0, #0xc] + str.w r9, [r0, #0x78] + eor.w r6, r2, r6, ror #4 + eor.w r3, lr, r3, ror #10 + eor.w r7, r10, r7, ror #28 + bic.w r9, r3, r1, ror #18 + eor.w r9, r9, r6, ror #6 + str.w r9, [r0, #0x44] + bic.w r9, r4, r3, ror #4 + eor.w r9, r9, r1, ror #22 + bic.w r1, r1, r6, ror #20 + str.w r9, [r0, #0xc4] + eor.w r9, r1, r7, ror #23 + str.w r9, [r0, #0x88] + bic.w r1, r6, r7, ror #3 + ldr r6, [r0, #0x60] + bic.w r9, r7, r4, ror #19 + eor.w r7, r1, r4, ror #22 + ldr r4, [r0, #0x3c] + eor.w r9, r9, r3, ror #23 + ldr.w r1, [r0, #0x98] + str r7, [r0, #0xc] + eor.w r7, r2, r6, ror #25 + ldr.w r3, [r0, #0xac] + eor.w r6, r2, r4, ror #23 + eor.w r2, r12, r1, ror #29 + str.w r9, [r0, #0x54] + ldr.w r9, [r0, #0x28] + bic.w r4, r5, r7, ror #28 + eor.w r1, r11, r3, ror #12 + bic.w r3, r2, r5, ror #24 + eor.w r3, r3, r7, ror #20 + str r3, [r0, #0x28] + eor.w r9, r8, r9, ror #27 + ldr r3, [r0] + eor.w r4, r4, r1, ror #26 + str.w r4, [r0, #0x98] + ldr.w r4, [r0, #0x84] + bic.w r7, r7, r1, ror #30 + eor.w r7, r7, r9, ror #11 + str r7, [r0, #0x18] + eor.w r3, r8, r3 + bic.w r7, r1, r9, ror #13 + ldr r1, [r0, #0x74] + eor.w r7, r7, r2, ror #14 + eor.w r4, r10, r4, ror #9 + str r7, [r0, #0x60] + bic.w r7, r9, r2, ror #1 + ldr.w r9, [sp, #0xc] + ldr.w r2, [r0, #0xbc] + eor.w r7, r7, r5, ror #25 + bic.w r5, r6, r4 + str.w r7, [r0, #0xac] + eor.w r7, r12, r1, ror #4 + ldr r1, [sp, #0x14] + eor.w r5, r3, r5, ror #10 + ldr r1, [r1, #0x8] + eor.w r2, r9, r2, ror #19 + eor.w r5, r1, r5 + bic.w r1, r4, r3, ror #22 + str r5, [r0] + bic.w r3, r3, r7, ror #25 + eor.w r1, r1, r7, ror #15 + str r1, [r0, #0x74] + bic.w r7, r7, r2, ror #28 + ldr r5, [r0, #0x58] + ldr r1, [r0, #0x4c] + eor.w r7, r7, r6, ror #17 + eor.w r3, r3, r2, ror #21 + str.w r3, [r0, #0xbc] + str r7, [r0, #0x3c] + eor.w r7, r10, r5, ror #24 + eor.w r5, lr, r1, ror #22 + ldr.w r3, [r0, #0xa0] + bic.w r6, r2, r6, ror #21 + ldr r1, [r0, #0x7c] + eor.w r4, r6, r4, ror #21 + str.w r4, [r0, #0x84] + eor.w r4, r8, r3, ror #19 + ldr.w r3, [r0, #0x90] + eor.w r1, r8, r1, ror #12 + eor.w r6, r9, r3 + bic.w r3, r4, r5, ror #23 + ldr.w r8, [r0, #0x10] + eor.w r3, r3, r6, ror #19 + ldr r2, [sp, #0x10] + str.w r3, [r0, #0xa0] + bic.w r3, r7, r4, ror #21 + eor.w r8, r2, r8, ror #31 + eor.w r3, r3, r5, ror #12 + str r3, [r0, #0x58] + bic.w r5, r5, r6, ror #28 + eor.w r5, r5, r8, ror #12 + str r5, [r0, #0x4c] + bic.w r5, r6, r8, ror #16 + ldr.w r3, [r0, #0xa8] + ldr r6, [r0, #0x34] + eor.w r5, r5, r7, ror #24 + bic.w r7, r8, r7, ror #8 + ldr.w r8, [r0, #0xb4] + eor.w r7, r7, r4, ror #29 + ldr r4, [r0, #0x24] + str r7, [r0, #0x10] + eor.w r7, r10, r3, ror #11 + eor.w r10, r11, r6, ror #22 + eor.w r8, r2, r8, ror #1 + str.w r5, [r0, #0x90] + eor.w r6, r12, r4, ror #14 + ldr.w r4, [r0, #0xc0] + bic.w r3, r8, r10, ror #2 + eor.w r3, r3, r1, ror #26 + str r3, [r0, #0x24] + bic.w r5, r10, r1, ror #24 + ldr r3, [r0, #0x68] + eor.w r5, r5, r6, ror #29 + eor.w r3, r9, r3 + str r5, [r0, #0x68] + eor.w r12, r12, r4, ror #10 + ldr.w r5, [r0, #0x9c] + bic.w r4, r6, r3, ror #23 + eor.w r4, r4, r8, ror #1 + bic.w r6, r1, r6, ror #5 + ldr r1, [r0, #0x1c] + str r4, [r0, #0x34] + eor.w r5, lr, r5, ror #29 + bic.w r4, r3, r8, ror #10 + ldr.w r8, [r0, #0x8] + eor.w r3, r6, r3, ror #28 + ldr.w r6, [r0, #0x8c] + eor.w r4, r4, r10, ror #12 + ldr.w r10, [r0, #0x40] + str r4, [r0, #0x7c] + eor.w r4, r9, r1, ror #18 + str.w r3, [r0, #0xb4] + eor.w r6, r2, r6, ror #4 + eor.w r1, r9, r10, ror #1 + ldr.w r9, [r0, #0x50] + eor.w r3, r11, r8, ror #28 + ldr.w r8, [sp, #0x4] + bic.w r10, r1, r6, ror #21 + eor.w r9, r8, r9, ror #31 + eor.w r10, r10, r3, ror #23 + str.w r10, [r0, #0x8c] + bic.w r10, r6, r3, ror #2 + eor.w r10, r10, r9, ror #21 + str.w r10, [r0, #0x8] + bic.w r10, r12, r1, ror #17 + eor.w r10, r10, r6, ror #6 + str.w r10, [r0, #0x40] + ldr.w r10, [r0, #0x64] + bic.w r3, r3, r9, ror #19 + eor.w r6, r3, r12, ror #24 + str r6, [r0, #0x50] + bic.w r3, r9, r12, ror #5 + ldr r6, [r0, #0x2c] + eor.w r1, r3, r1, ror #22 + str.w r1, [r0, #0xc0] + eor.w r12, r2, r10, ror #25 + ldr.w r10, [r0, #0x38] + bic.w r1, r5, r4, ror #24 + ldr.w r9, [sp, #0x8] + ldr.w r3, [r0, #0x80] + eor.w r6, r8, r6, ror #27 + eor.w r1, r1, r12, ror #21 + str r1, [r0, #0x2c] + eor.w r10, r2, r10, ror #23 + ldr r1, [r0, #0x4] + eor.w r8, r8, r1 + bic.w r1, r6, r5, ror #1 + ldr.w r2, [r0, #0xb8] + eor.w r1, r1, r4, ror #25 + str.w r1, [r0, #0xa8] + bic.w r1, r7, r6, ror #12 + eor.w r5, r1, r5, ror #13 + str r5, [r0, #0x64] + eor.w r9, r9, r2, ror #18 + ldr r2, [r0, #0x70] + ldr r5, [sp, #0x14] + bic.w r1, r12, r7, ror #30 + eor.w r1, r1, r6, ror #10 + str r1, [r0, #0x1c] + bic.w r6, r4, r12, ror #29 + ldr r1, [r5, #0xc] + eor.w r5, r11, r3, ror #10 + ldr r4, [r0, #0x48] + eor.w r3, r6, r7, ror #27 + str.w r3, [r0, #0x9c] + eor.w r6, lr, r2, ror #5 + ldr r3, [r0, #0x74] + ldr r2, [r0, #0x24] + bic.w lr, r9, r10, ror #21 + eor.w r7, lr, r5, ror #20 + str.w r7, [r0, #0x80] + bic.w r11, r6, r9, ror #29 + ldr.w r7, [r0, #0xc4] + eor.w r11, r11, r10, ror #18 + str.w r11, [r0, #0x38] + ldr.w lr, [r0, #0x9c] + bic.w r11, r8, r6, ror #25 + eor.w r9, r11, r9, ror #22 + str.w r9, [r0, #0xb8] + bic.w r12, r10, r5, ror #31 + ldr.w r10, [r0, #0x80] + bic.w r5, r5, r8, ror #22 + ldr.w r9, [r0, #0x38] + eor.w r3, r3, r4, ror #12 + ldr.w r11, [r0, #0x58] + eor.w r6, r5, r6, ror #15 + str r6, [r0, #0x70] + ldr r4, [r0, #0x10] + eor.w r6, r3, r2, ror #19 + ldr.w r2, [r0, #0x94] + eor.w r3, r10, r11, ror #20 + eor.w r11, r6, r7, ror #4 + ldr.w r7, [r0, #0x8c] + ldr.w r10, [r0, #0xb0] + eor.w r6, r9, r4, ror #9 + eor.w r5, r11, lr, ror #26 + ldr r4, [r0, #0x30] + ldr.w r11, [r0, #0x8] + eor.w lr, r8, r12, ror #11 + eor.w r9, r6, r10, ror #30 + ldr r6, [r0, #0x5c] + eor.w r3, r3, r4, ror #6 + ldr.w r12, [r0, #0x84] + eor.w r8, r1, lr + str.w r8, [r0, #0x4] + ldr r1, [r0, #0x34] + ldr.w lr, [r0, #0xc] + eor.w r4, r12, r6, ror #20 + ldr r6, [r0, #0x60] + eor.w r10, r9, r7, ror #11 + eor.w r12, r4, r1, ror #7 + ldr.w r7, [r0, #0xa8] + ldr.w r4, [r0, #0xbc] + ror.w r5, r5, #0xa + eor.w r1, r12, lr, ror #3 + ldr.w lr, [r0, #0x90] + eor.w r2, r4, r2, ror #18 + ldr.w r8, [r0, #0xb8] + eor.w r7, r1, r7, ror #22 + ldr r4, [r0, #0x68] + eor.w r11, r3, r11, ror #3 + ldr.w r12, [r0, #0xac] + ror.w r7, r7, #0x15 + eor.w r3, r10, r6, ror #6 + eor.w r9, r2, r4, ror #31 + ldr r6, [r0, #0x4c] + eor.w r12, r11, r12, ror #22 + ldr.w r10, [r0, #0x70] + eor.w r4, r5, r3, ror #25 + ldr.w r1, [r0, #0xa0] + eor.w lr, r8, lr, ror #18 + ldr.w r8, [r0, #0x4] + eor.w r2, r5, r12, ror #21 + ldr r5, [r0, #0x14] + eor.w r6, r10, r6, ror #12 + ldr.w r10, [r0, #0x3c] + eor.w r1, r8, r1, ror #31 + ldr.w r8, [r0, #0x20] + eor.w r11, r10, r5, ror #8 + ldr r5, [r0, #0x6c] + str r4, [sp, #0xc] + ldr.w r4, [r0, #0xc0] + eor.w r8, r6, r8, ror #19 + ldr r6, [r0, #0x40] + eor.w r10, lr, r5 + ldr.w lr, [r0, #0x98] + eor.w r8, r8, r4, ror #4 + ldr r4, [r0, #0x18] + eor.w r10, r10, r6, ror #19 + ldr.w r6, [r0, #0xa4] + eor.w r5, r8, lr, ror #27 + ldr.w lr, [r0] + str r2, [sp] + eor.w r4, r10, r4, ror #1 + eor.w r6, lr, r6, ror #30 + ldr.w lr, [r0, #0x7c] + ldr r2, [r0, #0x44] + eor.w r8, r7, r5, ror #10 + eor.w r7, r7, r4, ror #31 + ldr.w r10, [r0, #0x54] + eor.w lr, r6, lr, ror #19 + ldr r6, [r0, #0x1c] + eor.w r9, r9, r2, ror #18 + ldr r2, [r0, #0x2c] + str r7, [sp, #0x10] + eor.w r10, lr, r10, ror #27 + eor.w r9, r9, r6, ror #1 + ldr r7, [r0, #0x78] + eor.w lr, r10, r2, ror #12 + ldr.w r6, [r0, #0xb4] + eor.w r2, r9, r12, ror #22 + ldr.w r12, [r0, #0x50] + eor.w r10, lr, r3, ror #24 + eor.w lr, r4, lr + eor.w r4, r1, r7, ror #20 + ldr.w r1, [r0, #0x88] + eor.w r11, r11, r6, ror #30 + ldr r6, [r0, #0x28] + eor.w r3, r4, r12, ror #27 + ldr.w r12, [r0, #0x64] + eor.w r1, r11, r1, ror #11 + ldr r7, [r0, #0x60] + eor.w r11, r3, r6, ror #13 + ldr r4, [r0, #0x8] + ldr r6, [r0, #0x28] + eor.w r1, r1, r12, ror #6 + ldr r3, [r0, #0x78] + eor.w r7, r2, r7, ror #31 + ror.w r1, r1, #0x19 + eor.w r12, r9, r11, ror #31 + eor.w r11, r11, r1 + eor.w r9, r8, r6, ror #13 + eor.w r5, r1, r5, ror #9 + ldr r1, [r0, #0x48] + eor.w r6, r11, r4, ror #25 + str.w r8, [sp, #0x4] + eor.w r4, r8, r3, ror #20 + ldr.w r3, [r0, #0xbc] + eor.w r1, r12, r1, ror #22 + eor.w r3, r5, r3 + bic.w r8, r7, r6, ror #8 + eor.w r8, r8, r4, ror #29 + str.w r8, [r0, #0x60] + bic.w r8, r4, r1, ror #24 + bic.w r4, r6, r4, ror #21 + eor.w r8, r8, r3, ror #20 + str.w r8, [r0, #0x78] + eor.w r4, r4, r1, ror #13 + str r4, [r0, #0x8] + bic.w r8, r1, r3, ror #28 + ldr r4, [r0, #0x68] + ldr.w r1, [r0, #0x84] + bic.w r3, r3, r7, ror #15 + eor.w r8, r8, r7, ror #11 + str.w r8, [r0, #0x48] + eor.w r4, r5, r4, ror #31 + ldr r7, [r0, #0x10] + ldr.w r8, [r0, #0xc0] + eor.w r6, r3, r6, ror #23 + eor.w r3, r10, r1, ror #21 + str r5, [sp, #0x8] + eor.w r1, r2, r7, ror #2 + eor.w r8, lr, r8, ror #14 + str.w r6, [r0, #0xbc] + bic.w r6, r3, r9, ror #23 + bic.w r7, r4, r1, ror #9 + eor.w r6, r6, r8, ror #28 + str r6, [r0, #0x68] + eor.w r6, r7, r3, ror #12 + str r6, [r0, #0x28] + ldr.w r6, [r0, #0xa4] + bic.w r7, r1, r3, ror #3 + eor.w r7, r7, r9, ror #26 + str.w r7, [r0, #0xc0] + bic.w r3, r9, r8, ror #5 + ldr.w r9, [r0, #0x34] + eor.w r3, r3, r4, ror #29 + str r3, [r0, #0x10] + bic.w r4, r8, r4, ror #24 + ldr.w r8, [sp] + ldr r3, [r0, #0x70] + eor.w r7, r4, r1, ror #1 + ldr r4, [r0, #0x1c] + eor.w r6, r8, r6, ror #30 + eor.w r1, r10, r9, ror #28 + ldr.w r9, [r0, #0x94] + eor.w r3, lr, r3, ror #10 + str.w r7, [r0, #0x84] + eor.w r7, r5, r4, ror #1 + eor.w r9, r5, r9, ror #18 + ldr.w r5, [r0, #0x8c] + bic.w r4, r1, r6, ror #19 + eor.w r4, r4, r3, ror #23 + str.w r4, [r0, #0xa4] + eor.w r4, r2, r5, ror #4 + bic.w r5, r6, r3, ror #4 + eor.w r5, r5, r7, ror #22 + str r5, [r0, #0x70] + bic.w r5, r4, r1, ror #3 + eor.w r5, r5, r6, ror #22 + str r5, [r0, #0x34] + bic.w r6, r3, r7, ror #18 + ldr r3, [r0, #0x54] + bic.w r7, r7, r4, ror #20 + ldr r5, [r0, #0x24] + eor.w r1, r7, r1, ror #23 + str.w r1, [r0, #0x8c] + eor.w r1, r8, r3, ror #27 + ldr r3, [r0, #0x38] + eor.w r4, r6, r4, ror #6 + str r4, [r0, #0x1c] + eor.w r4, r12, r5, ror #29 + ldr.w r5, [r0, #0xac] + eor.w r7, r2, r3, ror #25 + bic.w r3, r4, r9, ror #24 + eor.w r5, r11, r5, ror #12 + eor.w r3, r3, r7, ror #20 + str r3, [r0, #0x54] + bic.w r3, r1, r4, ror #1 + eor.w r3, r3, r9, ror #25 + str.w r3, [r0, #0xac] + bic.w r9, r9, r7, ror #28 + ldr r3, [r0, #0x40] + ldr r6, [r0, #0x5c] + eor.w r9, r9, r5, ror #26 + str.w r9, [r0, #0x24] + bic.w r7, r7, r5, ror #30 + bic.w r9, r5, r1, ror #13 + ldr.w r5, [r0, #0xb0] + eor.w r4, r9, r4, ror #14 + ldr.w r9, [sp, #0xc] + str r4, [r0, #0x38] + eor.w r4, r7, r1, ror #11 + ldr.w r1, [r0, #0x9c] + eor.w r7, r9, r3, ror #19 + str.w r4, [r0, #0x94] + eor.w r2, r2, r5, ror #23 + eor.w r5, r10, r6, ror #9 + ldr r4, [r0] + eor.w r1, r12, r1, ror #4 + bic.w r6, r7, r2, ror #21 + ldr r3, [sp, #0x14] + eor.w r6, r6, r5, ror #21 + str r6, [r0, #0x5c] + bic.w r6, r1, r7, ror #28 + eor.w r4, r8, r4 + eor.w r6, r6, r2, ror #17 + str.w r6, [r0, #0xb0] + bic.w r6, r2, r5 + ldr r2, [r3, #0x10] + bic.w r3, r4, r1, ror #25 + eor.w r3, r3, r7, ror #21 + ldr r7, [r0, #0x7c] + str r3, [r0, #0x40] + bic.w r3, r5, r4, ror #22 + eor.w r4, r4, r6, ror #10 + ldr r5, [r0, #0xc] + eor.w r6, r8, r7, ror #19 + ldr r7, [r0, #0x4c] + eor.w r3, r3, r1, ror #15 + eor.w r4, r2, r4 + ldr r1, [r0, #0x64] + eor.w r5, r10, r5, ror #24 + eor.w r7, lr, r7, ror #22 + ldr r2, [sp, #0x10] + str r4, [r0] + bic.w r4, r5, r6, ror #21 + str.w r3, [r0, #0x9c] + eor.w r1, r2, r1, ror #31 + eor.w r4, r4, r7, ror #12 + str r4, [r0, #0xc] + bic.w r4, r1, r5, ror #8 + ldr.w r3, [r0, #0xb8] + eor.w r4, r4, r6, ror #29 + eor.w r3, r9, r3 + str r4, [r0, #0x64] + bic.w r4, r6, r7, ror #23 + ldr r6, [r0, #0x2c] + bic.w r7, r7, r3, ror #28 + eor.w r4, r4, r3, ror #19 + str r4, [r0, #0x7c] + eor.w r7, r7, r1, ror #12 + str r7, [r0, #0x4c] + eor.w r6, r8, r6, ror #12 + ldr.w r8, [r0, #0x14] + ldr.w r4, [r0, #0xa8] + bic.w r7, r3, r1, ror #16 + eor.w r7, r7, r5, ror #24 + ldr.w r1, [r0, #0x80] + str.w r7, [r0, #0xb8] + eor.w r8, r2, r8, ror #1 + eor.w r7, r10, r4, ror #11 + ldr.w r10, [r0, #0x6c] + eor.w r4, r9, r10 + eor.w r3, r11, r1, ror #22 + bic.w r1, r4, r8, ror #10 + ldr.w r5, [r0, #0xc4] + bic.w r10, r3, r6, ror #24 + eor.w r1, r1, r3, ror #12 + str r1, [r0, #0x2c] + eor.w r1, r12, r5, ror #14 + ldr.w r5, [r0, #0x88] + bic.w r3, r8, r3, ror #2 + eor.w r3, r3, r6, ror #26 + eor.w r10, r10, r1, ror #29 + str.w r10, [r0, #0x6c] + eor.w r10, r2, r5, ror #4 + str.w r3, [r0, #0xc4] + bic.w r5, r1, r4, ror #23 + ldr r3, [r0, #0x30] + eor.w r5, r5, r8, ror #1 + ldr.w r8, [r0, #0x74] + str.w r5, [r0, #0x80] + bic.w r5, r6, r1, ror #5 + eor.w r5, r5, r4, ror #28 + ldr r4, [r0, #0x18] + eor.w r1, r12, r8, ror #10 + ldr.w r8, [r0, #0x90] + eor.w r3, r11, r3, ror #28 + ldr.w r12, [r0, #0xa0] + eor.w r4, r9, r4, ror #1 + ldr r6, [sp, #0x4] + str r5, [r0, #0x14] + eor.w r5, r9, r8, ror #18 + eor.w r9, r6, r12, ror #31 + bic.w r12, r4, r10, ror #21 + bic.w r8, r9, r1, ror #5 + eor.w r8, r8, r4, ror #22 + str.w r8, [r0, #0x74] + bic.w r4, r1, r4, ror #17 + eor.w r8, r12, r3, ror #23 + str.w r8, [r0, #0x88] + bic.w r8, r3, r9, ror #19 + ldr.w r12, [r0, #0x50] + eor.w r1, r8, r1, ror #24 + str.w r1, [r0, #0xa0] + bic.w r3, r10, r3, ror #2 + ldr.w r8, [r0, #0x3c] + eor.w r12, r6, r12, ror #27 + ldr.w r1, [r0, #0xb4] + eor.w r4, r4, r10, ror #6 + eor.w r10, r2, r8, ror #25 + str r4, [r0, #0x18] + eor.w r3, r3, r9, ror #21 + str r3, [r0, #0x30] + eor.w r3, r2, r1, ror #23 + ldr.w r8, [r0, #0x20] + bic.w r2, r10, r7, ror #30 + ldr.w r9, [r0, #0x44] + eor.w r2, r2, r12, ror #10 + ldr r1, [sp, #0x8] + str.w r2, [r0, #0x90] + eor.w r2, lr, r8, ror #29 + eor.w r9, r1, r9, ror #18 + ldr.w r8, [r0, #0x4] + eor.w r4, r6, r8 + bic.w r8, r7, r12, ror #12 + ldr.w r6, [r0, #0x98] + eor.w r1, r8, r2, ror #13 + bic.w r8, r2, r5, ror #24 + str r1, [r0, #0x3c] + eor.w r8, r8, r10, ror #21 + str.w r8, [r0, #0x50] + ldr r1, [r0, #0x58] + bic.w r10, r5, r10, ror #29 + ldr.w r8, [sp, #0x14] + bic.w r2, r12, r2, ror #1 + ldr.w r12, [r0, #0x48] + eor.w r2, r2, r5, ror #25 + eor.w r11, r11, r1, ror #10 + str.w r2, [r0, #0xa8] + eor.w r5, r10, r7, ror #27 + str r5, [r0, #0x20] + eor.w r6, lr, r6, ror #5 + ldr.w r1, [r8, #0x14] + bic.w r5, r9, r3, ror #21 + ldr.w r10, [r0, #0x9c] + eor.w r5, r5, r11, ror #20 + str r5, [r0, #0x58] + bic.w r7, r6, r9, ror #29 + ldr.w r2, [r0, #0xc4] + eor.w r8, r7, r3, ror #18 + str.w r8, [r0, #0xb4] + bic.w r8, r3, r11, ror #31 + ldr r7, [r0, #0x70] + bic.w r3, r4, r6, ror #25 + ldr.w lr, [r0, #0x20] + eor.w r5, r3, r9, ror #22 + str r5, [r0, #0x44] + bic.w r9, r11, r4, ror #22 + ldr r5, [r0, #0x58] + eor.w r9, r9, r6, ror #15 + str.w r9, [r0, #0x98] + eor.w r9, r4, r8, ror #11 + ldr.w r3, [r0, #0xb4] + eor.w r8, r10, r12, ror #12 + ldr r6, [r0, #0xc] + eor.w r12, r1, r9 + str.w r12, [r0, #0x4] + ldr.w r12, [r0, #0x64] + eor.w r2, r8, r2, ror #19 + eor.w r1, r5, r6, ror #20 + ldr.w r9, [r0, #0xbc] + ldr.w r5, [r0, #0x84] + eor.w r2, r2, r7, ror #4 + eor.w r7, r3, r12, ror #9 + ldr.w r8, [r0, #0x10] + ldr r4, [r0, #0x30] + eor.w r3, r2, lr, ror #26 + eor.w r12, r1, r5, ror #6 + ldr.w r2, [r0, #0x88] + eor.w r11, r7, r8, ror #30 + ldr.w r8, [r0, #0xac] + eor.w r4, r12, r4, ror #3 + ldr r5, [r0, #0x38] + ldr r1, [r0, #0x6c] + eor.w r6, r11, r2, ror #11 + eor.w r10, r4, r8, ror #22 + ldr r7, [r0, #0x40] + ldr r2, [r0, #0x1c] + eor.w r4, r6, r5, ror #6 + ror.w r3, r3, #0xa + ldr r5, [r0, #0x8] + ldr r6, [r0, #0x5c] + ldr.w r12, [r0, #0xb8] + eor.w r7, r7, r9, ror #18 + ldr.w lr, [r0, #0x44] + eor.w r8, r6, r5, ror #20 + ldr.w r9, [r0, #0x80] + eor.w r11, lr, r12, ror #18 + ldr.w lr, [r0, #0x34] + ldr.w r12, [r0, #0x90] + eor.w r5, r3, r10, ror #21 + eor.w r9, r8, r9, ror #7 + ldr.w r8, [r0, #0x78] + eor.w r1, r7, r1, ror #31 + ldr.w r6, [r0, #0xa8] + eor.w r7, r9, lr, ror #3 + ldr.w lr, [r0, #0x68] + eor.w r1, r1, r2, ror #18 + ldr.w r9, [r0, #0x4c] + eor.w r6, r7, r6, ror #22 + ldr.w r2, [r0, #0x98] + eor.w r7, r11, lr + ldr.w r11, [r0, #0x18] + eor.w r9, r2, r9, ror #12 + ldr.w lr, [r0, #0xc0] + eor.w r2, r1, r12, ror #1 + ldr.w r1, [r0, #0x94] + eor.w r12, r7, r11, ror #19 + ldr r7, [r0, #0x7c] + eor.w r9, r9, lr, ror #19 + ldr.w r11, [r0, #0x4] + eor.w lr, r12, r1, ror #1 + ldr.w r12, [r0] + eor.w r3, r3, r4, ror #25 + ldr r1, [r0, #0x2c] + eor.w r8, r12, r8, ror #30 + ldr.w r12, [r0, #0x28] + eor.w r11, r11, r7, ror #31 + ldr.w r7, [r0, #0xa4] + eor.w r1, r8, r1, ror #19 + ldr.w r8, [r0, #0xa0] + eor.w r11, r11, r12, ror #20 + ldr.w r12, [r0, #0x74] + eor.w r1, r1, r7, ror #27 + ldr r7, [r0, #0x54] + eor.w r11, r11, r8, ror #27 + ldr.w r8, [r0, #0x24] + eor.w r9, r9, r12, ror #4 + ldr.w r12, [r0, #0x60] + eor.w r11, r11, r7, ror #13 + ldr.w r7, [r0, #0xb0] + eor.w r9, r9, r8, ror #27 + ldr.w r8, [r0, #0x14] + str r5, [sp] + eor.w r7, r7, r12, ror #8 + eor.w r12, r2, r11, ror #31 + ldr.w r5, [r0, #0x8c] + eor.w r7, r7, r8, ror #30 + ldr.w r8, [r0, #0x50] + eor.w r2, r2, r10, ror #22 + ldr.w r10, [r0, #0x3c] + str r3, [sp, #0xc] + eor.w r5, r7, r5, ror #11 + ror.w r6, r6, #0x15 + eor.w r7, r1, r8, ror #12 + ldr r3, [r0, #0x48] + eor.w r1, r5, r10, ror #6 + ldr r5, [r0, #0x28] + eor.w r8, r6, r9, ror #10 + eor.w r10, r7, r4, ror #24 + ror.w r1, r1, #0x19 + eor.w r9, r1, r9, ror #9 + eor.w r11, r11, r1 + eor.w r4, r12, r3, ror #22 + ldr r1, [r0, #0x30] + eor.w r5, r8, r5, ror #20 + ldr r3, [r0, #0x40] + eor.w r3, r9, r3 + eor.w r6, r6, lr, ror #31 + eor.w lr, lr, r7 + bic.w r7, r5, r4, ror #24 + str r6, [sp, #0x10] + eor.w r6, r7, r3, ror #20 + eor.w r7, r11, r1, ror #25 + ldr r1, [r0, #0x38] + str.w r8, [sp, #0x4] + ror.w r6, r6, #0x1e + str r6, [r0, #0x28] + bic.w r6, r7, r5, ror #21 + eor.w r1, r2, r1, ror #31 + eor.w r6, r6, r4, ror #13 + str.w r9, [sp, #0x8] + bic.w r4, r4, r3, ror #28 + bic.w r3, r3, r1, ror #15 + ror.w r6, r6, #0x9 + eor.w r3, r3, r7, ror #23 + str r6, [r0, #0x30] + bic.w r7, r1, r7, ror #8 + ldr r6, [r0, #0x64] + eor.w r5, r7, r5, ror #29 + ror.w r3, r3, #0x12 + eor.w r1, r4, r1, ror #11 + ldr r4, [r0, #0x5c] + str r3, [r0, #0x40] + ldr r3, [r0, #0x54] + eor.w r7, r2, r6, ror #2 + ldr r6, [r0, #0x6c] + ror.w r5, r5, #0x1 + eor.w r4, r10, r4, ror #21 + eor.w r8, r8, r3, ror #13 + ldr r3, [r0, #0x74] + str r5, [r0, #0x38] + eor.w r6, r9, r6, ror #31 + ror.w r5, r1, #0x16 + bic.w r1, r7, r4, ror #3 + str r5, [r0, #0x48] + eor.w r3, lr, r3, ror #14 + eor.w r5, r1, r8, ror #26 + bic.w r1, r3, r6, ror #24 + eor.w r1, r1, r7, ror #1 + ror.w r5, r5, #0x1d + bic.w r7, r6, r7, ror #9 + str r5, [r0, #0x74] + eor.w r7, r7, r4, ror #12 + ror.w r1, r1, #0x1c + str r1, [r0, #0x5c] + ldr.w r5, [r0, #0x98] + ror.w r1, r7, #0x14 + bic.w r7, r4, r8, ror #23 + str r1, [r0, #0x54] + bic.w r8, r8, r3, ror #5 + eor.w r3, r7, r3, ror #28 + ldr.w r1, [r0, #0x90] + eor.w r4, r8, r6, ror #29 + ldr.w r6, [r0, #0x88] + str r3, [r0, #0x6c] + ldr.w r8, [sp] + ldr.w r3, [r0, #0xbc] + eor.w r7, lr, r5, ror #10 + ror.w r5, r4, #0x17 + eor.w r4, r9, r1, ror #1 + str r5, [r0, #0x64] + eor.w r5, r2, r6, ror #4 + eor.w r9, r9, r3, ror #18 + ldr r6, [r0, #0x78] + ldr.w r1, [r0, #0x80] + bic.w r3, r7, r4, ror #18 + eor.w r3, r3, r5, ror #6 + eor.w r6, r8, r6, ror #30 + ror.w r3, r3, #0x12 + eor.w r1, r10, r1, ror #28 + str.w r3, [r0, #0x90] + bic.w r3, r6, r7, ror #4 + eor.w r3, r3, r4, ror #22 + bic.w r4, r4, r5, ror #20 + bic.w r5, r5, r1, ror #3 + ror.w r3, r3, #0xe + eor.w r5, r5, r6, ror #22 + str.w r3, [r0, #0x98] + eor.w r3, r4, r1, ror #23 + ldr r4, [r0, #0x10] + bic.w r6, r1, r6, ror #19 + ror.w r5, r5, #0x18 + str.w r5, [r0, #0x80] + ldr.w r5, [r0, #0xb4] + eor.w r7, r6, r7, ror #23 + ldr.w r1, [r0, #0xac] + ldr.w r6, [r0, #0xa4] + eor.w r4, r2, r4, ror #23 + ror.w r3, r3, #0x4 + eor.w r5, r2, r5, ror #25 + eor.w r2, r11, r1, ror #12 + str.w r3, [r0, #0x88] + eor.w r1, r8, r6, ror #27 + ror.w r6, r7, #0x1b + str r6, [r0, #0x78] + bic.w r6, r9, r5, ror #28 + eor.w r6, r6, r2, ror #26 + ldr.w r7, [r0, #0xc4] + bic.w r3, r5, r2, ror #30 + eor.w r3, r3, r1, ror #11 + ror.w r6, r6, #0x5 + str.w r6, [r0, #0xc4] + eor.w r6, r12, r7, ror #29 + bic.w r7, r2, r1, ror #13 + ror.w r3, r3, #0x1 + str.w r3, [r0, #0xbc] + bic.w r2, r6, r9, ror #24 + bic.w r3, r1, r6, ror #1 + ldr r1, [r0, #0x18] + eor.w r3, r3, r9, ror #25 + ldr.w r9, [sp, #0xc] + eor.w r6, r7, r6, ror #14 + ldr r7, [r0, #0x8] + eor.w r2, r2, r5, ror #20 + ldr r5, [r0, #0x20] + ror.w r6, r6, #0x1f + eor.w r1, r9, r1, ror #19 + str.w r6, [r0, #0xb4] + ror.w r6, r3, #0xc + eor.w r3, r10, r7, ror #9 + ror.w r7, r2, #0xd + str.w r7, [r0, #0xa4] + eor.w r7, r12, r5, ror #4 + str.w r6, [r0, #0xac] + bic.w r6, r1, r4, ror #21 + bic.w r5, r7, r1, ror #28 + eor.w r2, r5, r4, ror #17 + ldr r5, [r0] + eor.w r6, r6, r3, ror #21 + eor.w r5, r8, r5 + ror.w r2, r2, #0x19 + bic.w r4, r4, r3 + str r2, [r0, #0x10] + bic.w r2, r3, r5, ror #22 + eor.w r4, r5, r4, ror #10 + ror.w r6, r6, #0x15 + bic.w r3, r5, r7, ror #25 + ldr r5, [r0, #0x2c] + eor.w r3, r3, r1, ror #21 + ldr r1, [r0, #0x4c] + eor.w r2, r2, r7, ror #15 + ldr r7, [sp, #0x14] + eor.w r5, r8, r5, ror #19 + str r6, [r0, #0x8] + ldr r6, [r7, #0x18] + ror.w r2, r2, #0xa + eor.w r7, r6, r4 + eor.w r4, lr, r1, ror #22 + str r3, [r0, #0x18] + ldr r6, [r0, #0x44] + eor.w r3, r9, r6 + str r2, [r0, #0x20] + ldr r1, [r0, #0x50] + bic.w r6, r5, r4, ror #23 + str r7, [r0] + ldr r7, [r0, #0x3c] + ldr r2, [sp, #0x10] + eor.w r6, r6, r3, ror #19 + eor.w r8, r8, r1, ror #12 + ldr r1, [r0, #0x34] + ror.w r6, r6, #0x1f + eor.w r7, r2, r7, ror #31 + str r6, [r0, #0x2c] + bic.w r6, r4, r3, ror #28 + eor.w r1, r10, r1, ror #24 + eor.w r6, r6, r7, ror #12 + bic.w r3, r3, r7, ror #16 + ror.w r6, r6, #0x16 + eor.w r3, r3, r1, ror #24 + bic.w r7, r7, r1, ror #8 + str r6, [r0, #0x4c] + ror.w r3, r3, #0x12 + str r3, [r0, #0x44] + eor.w r6, r7, r5, ror #29 + ldr r7, [r0, #0x58] + ldr r3, [r0, #0x70] + bic.w r1, r1, r5, ror #21 + eor.w r4, r1, r4, ror #12 + ldr.w r1, [r0, #0x9c] + ror.w r6, r6, #0x2 + eor.w r5, r11, r7, ror #22 + ror.w r7, r4, #0xa + eor.w r4, r12, r3, ror #14 + str r7, [r0, #0x34] + bic.w r3, r5, r8, ror #24 + eor.w r1, r12, r1, ror #10 + ldr.w r12, [r0, #0x60] + str r6, [r0, #0x3c] + eor.w r6, r3, r4, ror #29 + ldr r3, [r0, #0x68] + bic.w r7, r8, r4, ror #5 + ror.w r6, r6, #0x1f + eor.w r3, r9, r3 + str r6, [r0, #0x68] + eor.w r6, r2, r12, ror #1 + eor.w r12, r7, r3, ror #28 + bic.w r7, r4, r3, ror #23 + ldr.w r4, [r0, #0xb8] + bic.w r3, r3, r6, ror #10 + ror.w r12, r12, #0x17 + eor.w r3, r3, r5, ror #12 + str.w r12, [r0, #0x60] + ldr.w r12, [r0, #0x8c] + eor.w r4, r9, r4, ror #18 + ror.w r3, r3, #0x13 + str r3, [r0, #0x50] + bic.w r3, r6, r5, ror #2 + ldr.w r5, [r0, #0x94] + eor.w r3, r3, r8, ror #26 + ldr.w r8, [sp, #0x4] + eor.w r6, r7, r6, ror #1 + ldr.w r7, [r0, #0x84] + eor.w r9, r9, r5, ror #1 + ldr r5, [r0, #0x7c] + eor.w r12, r2, r12, ror #4 + ror.w r3, r3, #0x1d + str r3, [r0, #0x70] + eor.w r3, r11, r7, ror #28 + ror.w r7, r6, #0x1c + eor.w r6, r8, r5, ror #31 + bic.w r5, r9, r12, ror #21 + str r7, [r0, #0x58] + eor.w r5, r5, r3, ror #23 + bic.w r7, r3, r6, ror #19 + ror.w r5, r5, #0x4 + eor.w r7, r7, r1, ror #24 + str.w r5, [r0, #0x8c] + bic.w r3, r12, r3, ror #2 + ror.w r5, r7, #0x1b + bic.w r7, r1, r9, ror #17 + str r5, [r0, #0x7c] + eor.w r3, r3, r6, ror #21 + bic.w r6, r6, r1, ror #5 + ldr.w r5, [r0, #0xa0] + ror.w r1, r3, #0x19 + ldr.w r3, [r0, #0xa8] + eor.w r6, r6, r9, ror #22 + str.w r1, [r0, #0x84] + ldr r1, [r0, #0x14] + eor.w r9, r7, r12, ror #6 + ldr.w r12, [r0, #0xc0] + eor.w r5, r8, r5, ror #27 + eor.w r7, r10, r3, ror #11 + ldr.w r10, [r0, #0xb0] + eor.w r1, r2, r1, ror #23 + ror.w r3, r6, #0xe + str.w r3, [r0, #0x9c] + eor.w r6, lr, r12, ror #29 + ldr.w r12, [sp, #0x14] + eor.w r10, r2, r10, ror #25 + ror.w r9, r9, #0x13 + bic.w r3, r7, r5, ror #12 + str.w r9, [r0, #0x94] + eor.w r2, r3, r6, ror #13 + ldr r3, [r0, #0x24] + bic.w r9, r5, r6, ror #1 + eor.w r9, r9, r4, ror #25 + ror.w r2, r2, #0x1f + str.w r2, [r0, #0xb0] + bic.w r2, r10, r7, ror #30 + ror.w r9, r9, #0xb + bic.w r6, r6, r4, ror #24 + str.w r9, [r0, #0xa8] + bic.w r4, r4, r10, ror #29 + ldr.w r9, [r0, #0x1c] + eor.w r6, r6, r10, ror #21 + eor.w lr, lr, r3, ror #5 + ldr.w r10, [sp, #0x8] + eor.w r3, r4, r7, ror #27 + ldr r4, [r0, #0xc] + eor.w r5, r2, r5, ror #10 + ror.w r6, r6, #0xc + eor.w r7, r10, r9, ror #18 + ror.w r3, r3, #0x4 + eor.w r4, r11, r4, ror #10 + ldr.w r10, [r0, #0x4] + str.w r3, [r0, #0xc0] + bic.w r2, r7, r1, ror #21 + eor.w r3, r8, r10 + bic.w r9, lr, r7, ror #29 + str.w r6, [r0, #0xa0] + eor.w r8, r2, r4, ror #20 + ror.w r6, r5, #0x1 + bic.w r2, r4, r3, ror #22 + ror.w r5, r8, #0x16 + eor.w r9, r9, r1, ror #18 + str.w r6, [r0, #0xb8] + ldr.w r6, [r12, #0x1c] + ldr r8, [r12, #32]! + str.w r12, [sp, #0x14] + bic.w r4, r1, r4, ror #31 + ror.w r12, r9, #0x19 + bic.w r10, r3, lr, ror #25 + str.w r12, [r0, #0x14] + eor.w r9, r3, r4, ror #11 + cmp.w r8, #0xff + str r5, [r0, #0xc] + eor.w r11, r2, lr, ror #15 + eor.w r2, r6, r9 + str r2, [r0, #0x4] + ror.w r12, r11, #0xa + str.w r12, [r0, #0x24] + eor.w r2, r10, r7, ror #22 + str r2, [r0, #0x1c] + +Lmld_keccak_f1600_x1_armv7m_asm_slothy_end: + bne.w Lmld_keccak_f1600_x1_armv7m_asm_slothy_start @ imm = #-0x1572 + add sp, #0x18 + .cfi_adjust_cfa_offset -0x18 + pop.w {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} + .cfi_restore r4 + .cfi_restore r5 + .cfi_restore r6 + .cfi_restore r7 + .cfi_restore r8 + .cfi_restore r9 + .cfi_restore r10 + .cfi_restore r11 + .cfi_restore lr + .cfi_adjust_cfa_offset -0x28 + .cfi_endproc + +MLD_ASM_FN_SIZE(keccak_f1600_x1_armv7m_asm) + +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +#if defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_extract_bytes_armv7m.S b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_extract_bytes_armv7m.S new file mode 100644 index 0000000000..c33955e291 --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_extract_bytes_armv7m.S @@ -0,0 +1,273 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * This helper adapts the CC0-1.0 bit-interleaving and byte-access routines in + * keccakp1600_fast_cortexm3-4.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + * The bit-interleaving transform is credited there to Henry S. Warren, + * Hacker's Delight, Addison-Wesley, 2002. + */ + +/*yaml + Name: keccak_f1600_x1_state_extract_bytes_asm + Description: Extract bytes from an x1 Keccak state while converting touched lanes from the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_state_extract_bytes_asm(void *state, uint8_t *data, unsigned offset, unsigned length) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read-only + c_parameter: void *state + description: Bit-interleaved x1 Keccak state + r1: + type: buffer + size_bytes: r3 + permissions: write-only + c_parameter: uint8_t *data + description: Output byte buffer + r2: + type: scalar + c_parameter: unsigned offset + description: Byte offset within the 200-byte state + test_with: 7 + r3: + type: scalar + c_parameter: unsigned length + description: Number of output bytes + test_with: 9 + Stack: + bytes: 32 + description: register preservation (24) plus one temporary lane (8) +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp. The caller-saved r0-r3, r12, + * APSR condition flags, and lr may be clobbered. No floating-point or MVE + * registers are accessed. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +/* + * WARNING: This file is auto-derived from the mldsa-native source file + * dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_extract_bytes_armv7m.S using scripts/simpasm. Do not modify it directly. + */ + +.thumb +.syntax unified + +.text +.balign 4 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_state_extract_bytes_asm) +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_state_extract_bytes_asm) + + .cfi_startproc + cmp r3, #0x0 + beq.w Lmld_keccak_f1600_x1_state_extract_bytes_exit @ imm = #0x1fc + push.w {r4, r5, r6, r7, r8, lr} + .cfi_adjust_cfa_offset 0x18 + .cfi_rel_offset r4, 0x0 + .cfi_rel_offset r5, 0x4 + .cfi_rel_offset r6, 0x8 + .cfi_rel_offset r7, 0xc + .cfi_rel_offset r8, 0x10 + .cfi_rel_offset lr, 0x14 + bic r4, r2, #0x7 + adds r0, r0, r4 + ands r2, r2, #0x7 + beq.w Lmld_keccak_f1600_x1_state_extract_bytes_check_lanes @ imm = #0xac + movs r4, r3 + rsb.w r5, r2, #0x8 + cmp r4, r5 + ble Lmld_keccak_f1600_x1_state_extract_bytes_align @ imm = #0x0 + movs r4, r5 + +Lmld_keccak_f1600_x1_state_extract_bytes_align: + sub.w r8, r3, r4 + movs r3, r4 + ldrd r4, r5, [r0], #8 + movs r6, r4 + bfi r4, r5, #16, #16 + bfc r5, #0, #16 + orr.w r5, r5, r6, lsr #16 + eor.w r6, r4, r4, lsr #8 + and r6, r6, #0xff00 + eors r4, r6 + eor.w r4, r4, r6, lsl #8 + eor.w r6, r4, r4, lsr #4 + and r6, r6, #0xf000f0 + eors r4, r6 + eor.w r4, r4, r6, lsl #4 + eor.w r6, r4, r4, lsr #2 + and r6, r6, #0xc0c0c0c + eors r4, r6 + eor.w r4, r4, r6, lsl #2 + eor.w r6, r4, r4, lsr #1 + and r6, r6, #0x22222222 + eors r4, r6 + eor.w r4, r4, r6, lsl #1 + eor.w r6, r5, r5, lsr #8 + and r6, r6, #0xff00 + eors r5, r6 + eor.w r5, r5, r6, lsl #8 + eor.w r6, r5, r5, lsr #4 + and r6, r6, #0xf000f0 + eors r5, r6 + eor.w r5, r5, r6, lsl #4 + eor.w r6, r5, r5, lsr #2 + and r6, r6, #0xc0c0c0c + eors r5, r6 + eor.w r5, r5, r6, lsl #2 + eor.w r6, r5, r5, lsr #1 + and r6, r6, #0x22222222 + eors r5, r6 + eor.w r5, r5, r6, lsl #1 + sub sp, #0x8 + .cfi_adjust_cfa_offset 0x8 + strd r4, r5, [sp] + add r2, sp, r2 + +Lmld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_first: + ldrb r4, [r2], #1 + subs r3, #0x1 + strb r4, [r1], #1 + bne Lmld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_first @ imm = #-0xe + add sp, #0x8 + .cfi_adjust_cfa_offset -0x8 + mov r3, r8 + +Lmld_keccak_f1600_x1_state_extract_bytes_check_lanes: + lsrs r2, r3, #0x3 + beq.w Lmld_keccak_f1600_x1_state_extract_bytes_tail @ imm = #0x94 + mov r8, r3 + +Lmld_keccak_f1600_x1_state_extract_bytes_lanes_loop: + ldrd r4, r5, [r0], #8 + movs r3, r4 + bfi r4, r5, #16, #16 + bfc r5, #0, #16 + orr.w r5, r5, r3, lsr #16 + eor.w r3, r4, r4, lsr #8 + and r3, r3, #0xff00 + eors r4, r3 + eor.w r4, r4, r3, lsl #8 + eor.w r3, r4, r4, lsr #4 + and r3, r3, #0xf000f0 + eors r4, r3 + eor.w r4, r4, r3, lsl #4 + eor.w r3, r4, r4, lsr #2 + and r3, r3, #0xc0c0c0c + eors r4, r3 + eor.w r4, r4, r3, lsl #2 + eor.w r3, r4, r4, lsr #1 + and r3, r3, #0x22222222 + eors r4, r3 + eor.w r4, r4, r3, lsl #1 + eor.w r3, r5, r5, lsr #8 + and r3, r3, #0xff00 + eors r5, r3 + eor.w r5, r5, r3, lsl #8 + eor.w r3, r5, r5, lsr #4 + and r3, r3, #0xf000f0 + eors r5, r3 + eor.w r5, r5, r3, lsl #4 + eor.w r3, r5, r5, lsr #2 + and r3, r3, #0xc0c0c0c + eors r5, r3 + eor.w r5, r5, r3, lsl #2 + eor.w r3, r5, r5, lsr #1 + and r3, r3, #0x22222222 + eors r5, r3 + eor.w r5, r5, r3, lsl #1 + str r4, [r1], #4 + subs r2, #0x1 + str r5, [r1], #4 + bne Lmld_keccak_f1600_x1_state_extract_bytes_lanes_loop @ imm = #-0x90 + and r3, r8, #0x7 + +Lmld_keccak_f1600_x1_state_extract_bytes_tail: + cmp r3, #0x0 + beq.w Lmld_keccak_f1600_x1_state_extract_bytes_restore @ imm = #0x9a + movs r2, #0x0 + ldrd r4, r5, [r0], #8 + movs r6, r4 + bfi r4, r5, #16, #16 + bfc r5, #0, #16 + orr.w r5, r5, r6, lsr #16 + eor.w r6, r4, r4, lsr #8 + and r6, r6, #0xff00 + eors r4, r6 + eor.w r4, r4, r6, lsl #8 + eor.w r6, r4, r4, lsr #4 + and r6, r6, #0xf000f0 + eors r4, r6 + eor.w r4, r4, r6, lsl #4 + eor.w r6, r4, r4, lsr #2 + and r6, r6, #0xc0c0c0c + eors r4, r6 + eor.w r4, r4, r6, lsl #2 + eor.w r6, r4, r4, lsr #1 + and r6, r6, #0x22222222 + eors r4, r6 + eor.w r4, r4, r6, lsl #1 + eor.w r6, r5, r5, lsr #8 + and r6, r6, #0xff00 + eors r5, r6 + eor.w r5, r5, r6, lsl #8 + eor.w r6, r5, r5, lsr #4 + and r6, r6, #0xf000f0 + eors r5, r6 + eor.w r5, r5, r6, lsl #4 + eor.w r6, r5, r5, lsr #2 + and r6, r6, #0xc0c0c0c + eors r5, r6 + eor.w r5, r5, r6, lsl #2 + eor.w r6, r5, r5, lsr #1 + and r6, r6, #0x22222222 + eors r5, r6 + eor.w r5, r5, r6, lsl #1 + sub sp, #0x8 + .cfi_adjust_cfa_offset 0x8 + strd r4, r5, [sp] + add r2, sp, r2 + +Lmld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_tail: + ldrb r4, [r2], #1 + subs r3, #0x1 + strb r4, [r1], #1 + bne Lmld_keccak_f1600_x1_state_extract_bytes_in_lane_loop_tail @ imm = #-0xe + add sp, #0x8 + .cfi_adjust_cfa_offset -0x8 + +Lmld_keccak_f1600_x1_state_extract_bytes_restore: + pop.w {r4, r5, r6, r7, r8, lr} + .cfi_restore r4 + .cfi_restore r5 + .cfi_restore r6 + .cfi_restore r7 + .cfi_restore r8 + .cfi_restore lr + .cfi_adjust_cfa_offset -0x18 + +Lmld_keccak_f1600_x1_state_extract_bytes_exit: + bx lr + .cfi_endproc + +MLD_ASM_FN_SIZE(keccak_f1600_x1_state_extract_bytes_asm) + +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +#if defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_xor_bytes_armv7m.S b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_xor_bytes_armv7m.S new file mode 100644 index 0000000000..de6c1106ad --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x1_state_xor_bytes_armv7m.S @@ -0,0 +1,285 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * This helper adapts the CC0-1.0 bit-interleaving and byte-access routines in + * keccakp1600_fast_cortexm3-4.S at commit + * b18cd6e792efd911fe9c24fd0d5fe65a534fc620 of: + * https://github.com/aadomn/keccak_armv7m + * The bit-interleaving transform is credited there to Henry S. Warren, + * Hacker's Delight, Addison-Wesley, 2002. + */ + +/*yaml + Name: keccak_f1600_x1_state_xor_bytes_asm + Description: XOR bytes into an x1 Keccak state while converting each touched lane to the bit-interleaved Armv7-M representation + Signature: void mld_keccak_f1600_x1_state_xor_bytes_asm(void *state, const uint8_t *data, unsigned offset, unsigned length) + ABI: + Architecture: armv81m + CallingConvention: AAPCS32 + Features: [] + r0: + type: buffer + size_bytes: 200 + permissions: read/write + c_parameter: void *state + description: Bit-interleaved x1 Keccak state + r1: + type: buffer + size_bytes: r3 + permissions: read-only + c_parameter: const uint8_t *data + description: Bytes to XOR into the state + r2: + type: scalar + c_parameter: unsigned offset + description: Byte offset within the 200-byte state + test_with: 7 + r3: + type: scalar + c_parameter: unsigned length + description: Number of input bytes + test_with: 9 + Stack: + bytes: 32 + description: register preservation (24) plus one temporary lane (8) +*/ + +/* + * AAPCS32 contract: preserves r4-r11 and sp. The caller-saved r0-r3, r12, + * APSR condition flags, and lr may be clobbered. No floating-point or MVE + * registers are accessed. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +/* + * WARNING: This file is auto-derived from the mldsa-native source file + * dev/fips202/armv81m_opt/src/keccak_f1600_x1_state_xor_bytes_armv7m.S using scripts/simpasm. Do not modify it directly. + */ + +.thumb +.syntax unified + +.text +.balign 4 +.global MLD_ASM_NAMESPACE(keccak_f1600_x1_state_xor_bytes_asm) +MLD_ASM_FN_SYMBOL(keccak_f1600_x1_state_xor_bytes_asm) + + .cfi_startproc + cmp r3, #0x0 + beq.w Lmld_keccak_f1600_x1_state_xor_bytes_exit @ imm = #0x254 + push.w {r4, r5, r6, r7, r8, lr} + .cfi_adjust_cfa_offset 0x18 + .cfi_rel_offset r4, 0x0 + .cfi_rel_offset r5, 0x4 + .cfi_rel_offset r6, 0x8 + .cfi_rel_offset r7, 0xc + .cfi_rel_offset r8, 0x10 + .cfi_rel_offset lr, 0x14 + bic r4, r2, #0x7 + adds r0, r0, r4 + ands r2, r2, #0x7 + beq.w Lmld_keccak_f1600_x1_state_xor_bytes_check_lanes @ imm = #0xcc + movs r4, r3 + rsb.w r5, r2, #0x8 + cmp r4, r5 + ble Lmld_keccak_f1600_x1_state_xor_bytes_align @ imm = #0x0 + movs r4, r5 + +Lmld_keccak_f1600_x1_state_xor_bytes_align: + sub.w r8, r3, r4 + movs r3, r4 + movs r4, #0x0 + movs r5, #0x0 + sub sp, #0x8 + .cfi_adjust_cfa_offset 0x8 + strd r4, r5, [sp] + add r2, sp, r2 + +Lmld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_first: + ldrb r5, [r1], #1 + strb r5, [r2], #1 + subs r3, #0x1 + bne Lmld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_first @ imm = #-0xe + ldrd r4, r5, [sp] + add sp, #0x8 + .cfi_adjust_cfa_offset -0x8 + ldrd r6, r7, [r0] + and r3, r4, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + bfi r3, r3, #8, #8 + eor.w r6, r6, r3, lsr #8 + and r3, r5, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + orr.w r3, r3, r3, lsr #8 + eor.w r6, r6, r3, lsl #16 + and r3, r4, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + eor.w r7, r7, r3, lsr #16 + and r3, r5, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + bfc r3, #0, #16 + eors r7, r3 + strd r6, r7, [r0], #8 + mov r3, r8 + +Lmld_keccak_f1600_x1_state_xor_bytes_check_lanes: + lsrs r2, r3, #0x3 + beq.w Lmld_keccak_f1600_x1_state_xor_bytes_tail @ imm = #0xac + mov r8, r3 + +Lmld_keccak_f1600_x1_state_xor_bytes_lanes_loop: + ldr r4, [r1], #4 + ldr r5, [r1], #4 + ldrd r6, r7, [r0] + and r3, r4, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + bfi r3, r3, #8, #8 + eor.w r6, r6, r3, lsr #8 + and r3, r5, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + orr.w r3, r3, r3, lsr #8 + eor.w r6, r6, r3, lsl #16 + and r3, r4, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + eor.w r7, r7, r3, lsr #16 + and r3, r5, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + bfc r3, #0, #16 + eors r7, r3 + strd r6, r7, [r0], #8 + subs r2, #0x1 + bne Lmld_keccak_f1600_x1_state_xor_bytes_lanes_loop @ imm = #-0xa8 + and r3, r8, #0x7 + +Lmld_keccak_f1600_x1_state_xor_bytes_tail: + cmp r3, #0x0 + beq.w Lmld_keccak_f1600_x1_state_xor_bytes_restore @ imm = #0xba + movs r2, #0x0 + movs r4, #0x0 + movs r5, #0x0 + sub sp, #0x8 + .cfi_adjust_cfa_offset 0x8 + strd r4, r5, [sp] + add r2, sp, r2 + +Lmld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_tail: + ldrb r5, [r1], #1 + strb r5, [r2], #1 + subs r3, #0x1 + bne Lmld_keccak_f1600_x1_state_xor_bytes_in_lane_loop_tail @ imm = #-0xe + ldrd r4, r5, [sp] + add sp, #0x8 + .cfi_adjust_cfa_offset -0x8 + ldrd r6, r7, [r0] + and r3, r4, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + bfi r3, r3, #8, #8 + eor.w r6, r6, r3, lsr #8 + and r3, r5, #0x55555555 + orr.w r3, r3, r3, lsr #1 + and r3, r3, #0x33333333 + orr.w r3, r3, r3, lsr #2 + and r3, r3, #0xf0f0f0f + orr.w r3, r3, r3, lsr #4 + and r3, r3, #0xff00ff + orr.w r3, r3, r3, lsr #8 + eor.w r6, r6, r3, lsl #16 + and r3, r4, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + eor.w r7, r7, r3, lsr #16 + and r3, r5, #0xaaaaaaaa + orr.w r3, r3, r3, lsl #1 + and r3, r3, #0xcccccccc + orr.w r3, r3, r3, lsl #2 + and r3, r3, #0xf0f0f0f0 + orr.w r3, r3, r3, lsl #4 + and r3, r3, #0xff00ff00 + orr.w r3, r3, r3, lsl #8 + bfc r3, #0, #16 + eors r7, r3 + strd r6, r7, [r0], #8 + +Lmld_keccak_f1600_x1_state_xor_bytes_restore: + pop.w {r4, r5, r6, r7, r8, lr} + .cfi_restore r4 + .cfi_restore r5 + .cfi_restore r6 + .cfi_restore r7 + .cfi_restore r8 + .cfi_restore lr + .cfi_adjust_cfa_offset -0x18 + +Lmld_keccak_f1600_x1_state_xor_bytes_exit: + bx lr + .cfi_endproc + +MLD_ASM_FN_SIZE(keccak_f1600_x1_state_xor_bytes_asm) + +#endif /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +#if defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants_x1.c b/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants_x1.c new file mode 100644 index 0000000000..9f23c41e22 --- /dev/null +++ b/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants_x1.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) The mlkem-native project authors + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * WARNING: This file is auto-generated from scripts/autogen + * in the mldsa-native repository. + * Do not modify it directly. + */ + +#include "../../../../common.h" + +#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \ + !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) + +#include "fips202_native_armv81m_x1.h" + +/* + * Scalar x1 Keccak round constants in bit-interleaved form. + * Each 64-bit constant is split into two 32-bit words: + * - low word contains even-indexed bits + * - high word contains odd-indexed bits + * The final word is the permutation loop terminator. + */ +MLD_ALIGN MLD_INTERNAL_DATA_DEFINITION const uint32_t + mld_keccakf1600_round_constants_x1[49] = { + 0x00000001, 0x00000000, /* RC0 */ + 0x00000000, 0x00000089, /* RC1 */ + 0x00000000, 0x8000008b, /* RC2 */ + 0x00000000, 0x80008080, /* RC3 */ + 0x00000001, 0x0000008b, /* RC4 */ + 0x00000001, 0x00008000, /* RC5 */ + 0x00000001, 0x80008088, /* RC6 */ + 0x00000001, 0x80000082, /* RC7 */ + 0x00000000, 0x0000000b, /* RC8 */ + 0x00000000, 0x0000000a, /* RC9 */ + 0x00000001, 0x00008082, /* RC10 */ + 0x00000000, 0x00008003, /* RC11 */ + 0x00000001, 0x0000808b, /* RC12 */ + 0x00000001, 0x8000000b, /* RC13 */ + 0x00000001, 0x8000008a, /* RC14 */ + 0x00000001, 0x80000081, /* RC15 */ + 0x00000000, 0x80000081, /* RC16 */ + 0x00000000, 0x80000008, /* RC17 */ + 0x00000000, 0x00000083, /* RC18 */ + 0x00000000, 0x80008003, /* RC19 */ + 0x00000001, 0x80008088, /* RC20 */ + 0x00000000, 0x80000088, /* RC21 */ + 0x00000001, 0x00008000, /* RC22 */ + 0x00000000, 0x80008082, /* RC23 */ + 0x000000ff, /* loop terminator */ +}; + +#else /* MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */ + +MLD_EMPTY_CU(fips202_armv81m_round_constants_x1) + +#endif /* !(MLD_FIPS202_ARMV81M_NEED_X1 && !MLD_CONFIG_MULTILEVEL_NO_SHARED) \ + */ diff --git a/scripts/autogen b/scripts/autogen index 73da1963ec..70a692e73e 100755 --- a/scripts/autogen +++ b/scripts/autogen @@ -301,8 +301,10 @@ def gen_autogen_warning(): yield " */" -def gen_header(): +def gen_header(*, include_mlkem=False): yield "/*" + if include_mlkem: + yield " * Copyright (c) The mlkem-native project authors" yield " * Copyright (c) The mldsa-native project authors" yield " * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT" yield " */" @@ -1387,6 +1389,17 @@ def gen_keccak_round_constants(): yield from rc +def gen_keccak_round_constants_interleaved(): + """Generate Keccak-f[1600] round constants in 32-bit interleaved form.""" + for value in gen_keccak_round_constants(): + even = 0 + odd = 0 + for bit in range(32): + even |= ((value >> (2 * bit)) & 1) << bit + odd |= ((value >> (2 * bit + 1)) & 1) << bit + yield even, odd + + def gen_keccak_rho_shuffle(offset): """Generate a vpshufb shuffle mask for byte rotation within each qword. @@ -1495,6 +1508,46 @@ def gen_aarch64_keccak_constants_c_file(): ) +def gen_armv81m_keccak_constants_x1_c_file(): + def gen_c(): + yield from gen_header(include_mlkem=True) + yield '#include "../../../../common.h"' + yield "" + yield "#if defined(MLD_FIPS202_ARMV81M_NEED_X1) && \\" + yield " !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)" + yield "" + yield '#include "fips202_native_armv81m_x1.h"' + yield "" + yield "/*" + yield " * Scalar x1 Keccak round constants in bit-interleaved form." + yield " * Each 64-bit constant is split into two 32-bit words:" + yield " * - low word contains even-indexed bits" + yield " * - high word contains odd-indexed bits" + yield " * The final word is the permutation loop terminator." + yield " */" + yield "MLD_ALIGN MLD_INTERNAL_DATA_DEFINITION const uint32_t" + yield " mld_keccakf1600_round_constants_x1[49] = {" + for index, (even, odd) in enumerate(gen_keccak_round_constants_interleaved()): + yield f" 0x{even:08x}, 0x{odd:08x}, /* RC{index} */" + yield " 0x000000ff, /* loop terminator */" + yield "};" + yield "" + yield "#else /* MLD_FIPS202_ARMV81M_NEED_X1 && \\" + yield " !MLD_CONFIG_MULTILEVEL_NO_SHARED */" + yield "" + yield "MLD_EMPTY_CU(fips202_armv81m_round_constants_x1)" + yield "" + yield "#endif /* !(MLD_FIPS202_ARMV81M_NEED_X1 && \\" + yield " !MLD_CONFIG_MULTILEVEL_NO_SHARED) */" + yield "" + + update_file( + "dev/fips202/armv81m_opt/src/keccakf1600_round_constants_x1.c", + "\n".join(gen_c()), + force_format=True, + ) + + def gen_avx2_keccak_constants_c_file(): def gen_c(): yield from gen_header() @@ -1963,6 +2016,12 @@ def native_fips202_armv81m(c): return native_fips202(c) and armv81m(c) +def native_fips202_armv81m_x1(c): + return native_fips202_armv81m(c) and ( + "keccak_f1600_x1_" in c or "keccakf1600_round_constants_x1.c" in c + ) + + def native_fips202_core(c): return ( native_fips202(c) @@ -2184,7 +2243,14 @@ def gen_monolithic_source_file(): yield f'#include "{c}"' yield "#endif" yield "#if defined(MLD_SYS_ARMV81M_MVE)" - for c in filter(native_fips202_armv81m, c_sources): + for c in filter( + lambda c: native_fips202_armv81m(c) and not native_fips202_armv81m_x1(c), + c_sources, + ): + yield f'#include "{c}"' + yield "#endif" + yield "#if defined(MLD_SYS_ARMV81M_MVE)" + for c in filter(native_fips202_armv81m_x1, c_sources): yield f'#include "{c}"' yield "#endif" yield "#endif" @@ -2267,7 +2333,14 @@ def gen_monolithic_asm_file(): yield f'#include "{c}"' yield "#endif" yield "#if defined(MLD_SYS_ARMV81M_MVE)" - for c in filter(native_fips202_armv81m, asm_sources): + for c in filter( + lambda c: native_fips202_armv81m(c) and not native_fips202_armv81m_x1(c), + asm_sources, + ): + yield f'#include "{c}"' + yield "#endif" + yield "#if defined(MLD_SYS_ARMV81M_MVE)" + for c in filter(native_fips202_armv81m_x1, asm_sources): yield f'#include "{c}"' yield "#endif" yield "#endif" @@ -2764,6 +2837,8 @@ def upstream_src_dir_for_dev_dir(dev_dir): if dev_dir.startswith("dev/fips202/"): # dev/fips202//src -> mldsa/src/fips202/native//src arch = dev_dir.split("/")[2] + if arch in ("armv81m_clean", "armv81m_opt"): + arch = "armv81m" return f"mldsa/src/fips202/native/{arch}/src" if dev_dir.startswith("dev/aarch64_"): # dev/aarch64_opt/src and dev/aarch64_clean/src map to the same tree @@ -3106,7 +3181,13 @@ def synchronize_file(f, in_dir, out_dir, delete=False, no_simplify=False, **kwar return basename -def synchronize_backend(in_dir, out_dir, delete=False, no_simplify=False, **kwargs): +def synchronize_backend( + in_dir, + out_dir, + delete=False, + no_simplify=False, + **kwargs, +): copied = [] files = get_files(os.path.join(in_dir, "*")) @@ -3123,18 +3204,59 @@ def synchronize_backend(in_dir, out_dir, delete=False, no_simplify=False, **kwar ) copied = [r for r in pool_results if r is not None] + if delete is True: + # Check for files in the target directory that have not been copied. + for f in get_files(os.path.join(out_dir, "*")): + if os.path.basename(f) in copied: + continue + if not f.endswith(SYNCHRONIZED_EXTENSIONS): + continue + # Otherwise, remove it. + update_via_remove(f) + + return copied + + +def synchronize_merged_backends( + in_dirs, + out_dir, + delete=False, + no_simplify=False, + **kwargs, +): + """Synchronize multiple development directories into one production tree. + + The Armv8.1-M production directory combines the established x4 backend and + the separately maintained x1 backend. Derive the retained filename set from + both source directories so adding, renaming, or removing a source cannot + leave stale generated files or require a hard-coded keep list. + """ + copied_by_basename = {} + + for in_dir in in_dirs: + copied = synchronize_backend( + in_dir, + out_dir, + delete=False, + no_simplify=no_simplify, + **kwargs, + ) + for basename in copied: + if basename in copied_by_basename: + raise ValueError( + f"Duplicate synchronized filename {basename!r} in " + f"{copied_by_basename[basename]!r} and {in_dir!r}" + ) + copied_by_basename[basename] = in_dir if delete is False: return - # Check for files in the target directory that have not been copied for f in get_files(os.path.join(out_dir, "*")): - if os.path.basename(f) in copied: - continue if not f.endswith(SYNCHRONIZED_EXTENSIONS): continue - # Otherwise, remove it - update_via_remove(f) + if os.path.basename(f) not in copied_by_basename: + update_via_remove(f) def synchronize_backends( @@ -3233,13 +3355,13 @@ def synchronize_backends( x86_64_syntax=x86_64_syntax, cflags="-Idev/fips202/x86_64 -Imldsa/src/fips202/native/x86_64 -mavx2 -mbmi2 -msse4 -fcf-protection=none", ) - synchronize_backend( - "dev/fips202/armv81m/src", + synchronize_merged_backends( + ("dev/fips202/armv81m/src", "dev/fips202/armv81m_opt/src"), "mldsa/src/fips202/native/armv81m/src", delete=delete, force_cross=force_cross, no_simplify=no_simplify, - cflags="-Idev/fips202/armv81m/src -Imldsa/src/fips202/native/armv81m/src -march=armv8.1-m.main+mve -mthumb", + cflags="-Idev/fips202/armv81m/src -Idev/fips202/armv81m_opt/src -Imldsa/src/fips202/native/armv81m/src -march=armv8.1-m.main+mve -mthumb", ) synchronize_backend( "dev/fips202/armv81m", @@ -3409,7 +3531,10 @@ def gen_slothy(funcs): return for func in funcs: - if func.startswith("keccak"): + if func == "keccak_f1600_x1_armv7m_opt_m7": + base = "dev/fips202/armv81m_opt/src" + t = func + ".S" + elif func.startswith("keccak"): # FIPS202 assembly is already self-identifying via its `keccak_` # name and carries no `mldsa_` prefix. base = "dev/fips202/aarch64/src" @@ -4464,6 +4589,42 @@ def resolve_buffer_size(reg_info, abi_data): raise ValueError(f"Cannot resolve buffer size from {reg_info}") +def resolve_buffer_test_bytes(reg_name, reg_info, size_bytes, dev_source): + """Validate and return deterministic byte overrides for a test buffer.""" + test_bytes = reg_info.get("test_bytes") + if test_bytes is None: + return [] + if not isinstance(test_bytes, dict): + raise ValueError( + f"{dev_source}: YAML 'ABI.{reg_name}.test_bytes:' must be a mapping " + f"of byte offsets to byte values, got {type(test_bytes).__name__}" + ) + + result = [] + for offset, value in test_bytes.items(): + if isinstance(offset, bool) or not isinstance(offset, int): + raise ValueError( + f"{dev_source}: YAML 'ABI.{reg_name}.test_bytes:' offset " + f"{offset!r} must be an integer" + ) + if offset < 0 or offset >= size_bytes: + raise ValueError( + f"{dev_source}: YAML 'ABI.{reg_name}.test_bytes:' offset " + f"{offset} is outside the {size_bytes}-byte buffer" + ) + if ( + isinstance(value, bool) + or not isinstance(value, int) + or not 0 <= value <= 0xFF + ): + raise ValueError( + f"{dev_source}: YAML 'ABI.{reg_name}.test_bytes[{offset}]:' " + f"value {value!r} must be an integer in [0, 255]" + ) + result.append((offset, value)) + return sorted(result) + + def gen_abicheck(): """Generate ABI checker tests""" @@ -4471,6 +4632,24 @@ def gen_abicheck(): # HOL-Light proofs (armv81m). Shape matches hol_light_asm_joblist # (basename, dev_dir, _cflags, arch); the cflags slot is unused here. joblist_abicheck_extra = [ + ( + "keccak_f1600_x1_armv7m_opt_m7.S", + "dev/fips202/armv81m_opt/src", + "", + "armv81m", + ), + ( + "keccak_f1600_x1_state_extract_bytes_armv7m.S", + "dev/fips202/armv81m_opt/src", + "", + "armv81m", + ), + ( + "keccak_f1600_x1_state_xor_bytes_armv7m.S", + "dev/fips202/armv81m_opt/src", + "", + "armv81m", + ), ("keccak_f1600_x4_mve.S", "dev/fips202/armv81m/src", "", "armv81m"), ] joblist = hol_light_asm_joblist() + joblist_abicheck_extra @@ -4590,7 +4769,12 @@ def gen_abicheck(): buffer_name = f"buf_{reg_name}" description = reg_info.get("description", "") yield f" MLD_ALIGN uint8_t {buffer_name}[{size_bytes}]; /* {description} */" - buffer_info.append((reg_name, buffer_name, size_bytes)) + test_bytes = resolve_buffer_test_bytes( + reg_name, reg_info, size_bytes, dev_source + ) + buffer_info.append( + (reg_name, buffer_name, size_bytes, test_bytes) + ) # Emit a runtime mld_sys_check_capability() skip (returning # MLD_ABICHECK_SKIPPED) per Features cap that has a syscap; caps @@ -4618,8 +4802,10 @@ def gen_abicheck(): yield f" {config['init_func']}(&input_state);" yield "" - for reg_name, buffer_name, size_bytes in buffer_info: + for reg_name, buffer_name, size_bytes, test_bytes in buffer_info: yield f" randombytes({buffer_name}, {size_bytes});" + for offset, value in test_bytes: + yield f" {buffer_name}[{offset}] = 0x{value:02x};" yield "" yield " /* Set up register state for function arguments */" @@ -4876,6 +5062,7 @@ def _main(): "rej_uniform_aarch64_asm", "rej_uniform_eta2_aarch64_asm", "rej_uniform_eta4_aarch64_asm", + "keccak_f1600_x1_armv7m_opt_m7", ] parser = argparse.ArgumentParser( @@ -4967,6 +5154,7 @@ def _main(): gen_avx2_hol_light_rej_uniform_table() gen_hol_light_keccak_constants_file() gen_aarch64_keccak_constants_c_file() + gen_armv81m_keccak_constants_x1_c_file() gen_avx2_keccak_constants_c_file() gen_avx2_keccak_hol_light_constants_file() diff --git a/test/abicheck/README.md b/test/abicheck/README.md index e13fc17ebf..d59a900e77 100644 --- a/test/abicheck/README.md +++ b/test/abicheck/README.md @@ -40,7 +40,9 @@ from a `/*yaml ... */` block in its `dev/` assembly source. `scripts/autogen` turns that into the per-kernel `check_.c`, the `checks__all.h` registry, and the per-arch `abicheck_.mk` (CFLAGS per feature, e.g. `-mavx2`), all included via `abicheck.mk` from `test/mk/components.mk`. Edit the -YAML, not the generated files. +YAML, not the generated files. A buffer's optional `test_bytes` mapping +overrides individual byte offsets after random initialization when the kernel +requires a sentinel or other fixed test input. [^AAPCS32]: Arm Limited: Procedure Call Standard for the Arm Architecture (AAPCS32), [https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst](https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst) diff --git a/test/abicheck/armv81m/checks/check_keccak_f1600_x1_armv7m_asm.c b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_armv7m_asm.c new file mode 100644 index 0000000000..a2969b6e95 --- /dev/null +++ b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_armv7m_asm.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * WARNING: This file is auto-generated from scripts/autogen + * in the mldsa-native repository. + * Do not modify it directly. + */ + +#include + +#include "../abicheck_armv81m.h" +#include "../checks_armv81m_all.h" + +#if defined(MLD_SYS_ARMV81M_MVE) + +#include "../../../notrandombytes/notrandombytes.h" + +typedef struct armv81m_register_state reg_state; + +void mld_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]); + +int check_keccak_f1600_x1_armv7m_asm(void) +{ + int test_iter; + reg_state input_state, output_state; + int violations; + MLD_ALIGN uint8_t buf_r0[200]; /* Bit-interleaved x1 state as even/odd 32-bit + halves for each Keccak lane */ + MLD_ALIGN uint8_t buf_r1[196]; /* 24 bit-interleaved round constants followed + by the 0xff loop terminator */ + + for (test_iter = 0; test_iter < MLD_ABICHECK_NUM_TESTS; test_iter++) + { + /* Initialize random register state */ + init_armv81m_register_state(&input_state); + + randombytes(buf_r0, 200); + randombytes(buf_r1, 196); + buf_r1[192] = 0xff; + buf_r1[193] = 0x00; + buf_r1[194] = 0x00; + buf_r1[195] = 0x00; + + /* Set up register state for function arguments */ + input_state.gpr[0] = (uint32_t)buf_r0; + input_state.gpr[1] = (uint32_t)buf_r1; + + /* Call function through ABI test stub */ + call_stub_armv81m(&input_state, &output_state, + (void (*)(void))mld_keccak_f1600_x1_armv7m_asm); + + /* Check ABI compliance */ + violations = check_armv81m_aapcs32_compliance(&input_state, &output_state, + MLD_ABICHECK_VERBOSE); + if (violations > 0) + { + fprintf(stderr, + "ABI test FAILED for keccak_f1600_x1_armv7m_asm (iteration %d): " + "%d violations\n", + test_iter + 1, violations); + return MLD_ABICHECK_FAILED; + } + } + + return MLD_ABICHECK_PASSED; +} + +#endif /* MLD_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_extract_bytes_asm.c b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_extract_bytes_asm.c new file mode 100644 index 0000000000..56cdd1ee52 --- /dev/null +++ b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_extract_bytes_asm.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * WARNING: This file is auto-generated from scripts/autogen + * in the mldsa-native repository. + * Do not modify it directly. + */ + +#include + +#include "../abicheck_armv81m.h" +#include "../checks_armv81m_all.h" + +#if defined(MLD_SYS_ARMV81M_MVE) + +#include "../../../notrandombytes/notrandombytes.h" + +typedef struct armv81m_register_state reg_state; + +void mld_keccak_f1600_x1_state_extract_bytes_asm(void *state, uint8_t *data, + unsigned offset, + unsigned length); + +int check_keccak_f1600_x1_state_extract_bytes_asm(void) +{ + int test_iter; + reg_state input_state, output_state; + int violations; + MLD_ALIGN uint8_t buf_r0[200]; /* Bit-interleaved x1 Keccak state */ + MLD_ALIGN uint8_t buf_r1[9]; /* Output byte buffer */ + + for (test_iter = 0; test_iter < MLD_ABICHECK_NUM_TESTS; test_iter++) + { + /* Initialize random register state */ + init_armv81m_register_state(&input_state); + + randombytes(buf_r0, 200); + randombytes(buf_r1, 9); + + /* Set up register state for function arguments */ + input_state.gpr[0] = (uint32_t)buf_r0; + input_state.gpr[1] = (uint32_t)buf_r1; + input_state.gpr[2] = 7; + input_state.gpr[3] = 9; + + /* Call function through ABI test stub */ + call_stub_armv81m( + &input_state, &output_state, + (void (*)(void))mld_keccak_f1600_x1_state_extract_bytes_asm); + + /* Check ABI compliance */ + violations = check_armv81m_aapcs32_compliance(&input_state, &output_state, + MLD_ABICHECK_VERBOSE); + if (violations > 0) + { + fprintf(stderr, + "ABI test FAILED for keccak_f1600_x1_state_extract_bytes_asm " + "(iteration %d): %d violations\n", + test_iter + 1, violations); + return MLD_ABICHECK_FAILED; + } + } + + return MLD_ABICHECK_PASSED; +} + +#endif /* MLD_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_xor_bytes_asm.c b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_xor_bytes_asm.c new file mode 100644 index 0000000000..8a2ce7684f --- /dev/null +++ b/test/abicheck/armv81m/checks/check_keccak_f1600_x1_state_xor_bytes_asm.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) The mldsa-native project authors + * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT + */ + +/* + * WARNING: This file is auto-generated from scripts/autogen + * in the mldsa-native repository. + * Do not modify it directly. + */ + +#include + +#include "../abicheck_armv81m.h" +#include "../checks_armv81m_all.h" + +#if defined(MLD_SYS_ARMV81M_MVE) + +#include "../../../notrandombytes/notrandombytes.h" + +typedef struct armv81m_register_state reg_state; + +void mld_keccak_f1600_x1_state_xor_bytes_asm(void *state, const uint8_t *data, + unsigned offset, unsigned length); + +int check_keccak_f1600_x1_state_xor_bytes_asm(void) +{ + int test_iter; + reg_state input_state, output_state; + int violations; + MLD_ALIGN uint8_t buf_r0[200]; /* Bit-interleaved x1 Keccak state */ + MLD_ALIGN uint8_t buf_r1[9]; /* Bytes to XOR into the state */ + + for (test_iter = 0; test_iter < MLD_ABICHECK_NUM_TESTS; test_iter++) + { + /* Initialize random register state */ + init_armv81m_register_state(&input_state); + + randombytes(buf_r0, 200); + randombytes(buf_r1, 9); + + /* Set up register state for function arguments */ + input_state.gpr[0] = (uint32_t)buf_r0; + input_state.gpr[1] = (uint32_t)buf_r1; + input_state.gpr[2] = 7; + input_state.gpr[3] = 9; + + /* Call function through ABI test stub */ + call_stub_armv81m(&input_state, &output_state, + (void (*)(void))mld_keccak_f1600_x1_state_xor_bytes_asm); + + /* Check ABI compliance */ + violations = check_armv81m_aapcs32_compliance(&input_state, &output_state, + MLD_ABICHECK_VERBOSE); + if (violations > 0) + { + fprintf(stderr, + "ABI test FAILED for keccak_f1600_x1_state_xor_bytes_asm " + "(iteration %d): %d violations\n", + test_iter + 1, violations); + return MLD_ABICHECK_FAILED; + } + } + + return MLD_ABICHECK_PASSED; +} + +#endif /* MLD_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/armv81m/checks_armv81m_all.h b/test/abicheck/armv81m/checks_armv81m_all.h index 8711a085ca..2c08238f1b 100644 --- a/test/abicheck/armv81m/checks_armv81m_all.h +++ b/test/abicheck/armv81m/checks_armv81m_all.h @@ -18,11 +18,19 @@ #if defined(MLD_SYS_ARMV81M_MVE) +int check_keccak_f1600_x1_armv7m_asm(void); +int check_keccak_f1600_x1_state_extract_bytes_asm(void); +int check_keccak_f1600_x1_state_xor_bytes_asm(void); #if defined(__ARM_FEATURE_MVE) int check_keccak_f1600_x4_mve_asm(void); #endif static const abicheck_entry_t all_checks[] = { + {"keccak_f1600_x1_armv7m_asm", check_keccak_f1600_x1_armv7m_asm}, + {"keccak_f1600_x1_state_extract_bytes_asm", + check_keccak_f1600_x1_state_extract_bytes_asm}, + {"keccak_f1600_x1_state_xor_bytes_asm", + check_keccak_f1600_x1_state_xor_bytes_asm}, #if defined(__ARM_FEATURE_MVE) {"keccak_f1600_x4_mve_asm", check_keccak_f1600_x4_mve_asm}, #endif diff --git a/test/mk/components.mk b/test/mk/components.mk index e6328e8a80..b3dc04526d 100644 --- a/test/mk/components.mk +++ b/test/mk/components.mk @@ -237,6 +237,7 @@ ABICHECK_ASM_CFLAGS := \ -DMLD_FIPS202_AARCH64_NEED_X2_V84A \ -DMLD_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID \ -DMLD_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID \ + -DMLD_FIPS202_ARMV81M_NEED_X1 \ -DMLD_FIPS202_ARMV81M_NEED_X4 \ -DMLD_FIPS202_X86_64_NEED_X4_AVX2 diff --git a/test/src/test_unit.c b/test/src/test_unit.c index 87d3dbc2b4..ac0012961a 100644 --- a/test/src/test_unit.c +++ b/test/src/test_unit.c @@ -22,6 +22,10 @@ #endif #endif /* !NUM_RANDOM_TESTS */ +#ifndef MLD_UNIT_TEST_FIPS202_X4_ONLY +#define MLD_UNIT_TEST_FIPS202_X4_ONLY 0 +#endif + #define NUM_RANDOM_TESTS_SLOW 50 #define CHECK(x) \ @@ -65,48 +69,75 @@ unsigned int mld_rej_eta_c(int32_t *a, unsigned int target, unsigned int offset, void mld_keccakf1600_permute_c(uint64_t *state); #if defined(MLD_USE_NATIVE_FIPS202_X1) -static void print_u64_array(const char *label, const uint64_t *array, - size_t len) +static void keccakf1600_xor_bytes_ref(uint64_t *state, + const unsigned char *data, + unsigned offset, unsigned length) +{ + unsigned i; + + for (i = 0; i < length; i++) + { + unsigned pos = offset + i; + unsigned lane = pos >> 3; + unsigned shift = 8 * (pos & 7); + state[lane] ^= (uint64_t)data[i] << shift; + } +} + +static void keccakf1600_extract_bytes_ref(const uint64_t *state, + unsigned char *data, unsigned offset, + unsigned length) +{ + unsigned i; + + for (i = 0; i < length; i++) + { + unsigned pos = offset + i; + unsigned lane = pos >> 3; + unsigned shift = 8 * (pos & 7); + data[i] = (unsigned char)(state[lane] >> shift); + } +} + +static void print_keccak_state_bytes(const char *label, + const unsigned char *state_bytes, + size_t len) { size_t i; fprintf(stderr, "%s:\n", label); for (i = 0; i < len; i++) { - if (i % 4 == 0) + if (i % sizeof(uint64_t) == 0) { fprintf(stderr, " "); } - fprintf(stderr, "%016llx", (unsigned long long)array[i]); - if (i % 4 == 3) + fprintf(stderr, "%02x", state_bytes[i]); + if (i % sizeof(uint64_t) == sizeof(uint64_t) - 1) { fprintf(stderr, "\n"); } - else - { - fprintf(stderr, " "); - } } - if (len % 4 != 0) + if (len % sizeof(uint64_t) != 0) { fprintf(stderr, "\n"); } } -static int compare_u64_arrays(const uint64_t *a, const uint64_t *b, - unsigned len, const char *test_name) +static int compare_keccak_state_bytes(const unsigned char *got, + const unsigned char *expected, size_t len, + const char *test_name) { - unsigned i; + size_t i; for (i = 0; i < len; i++) { - if (a[i] != b[i]) + if (got[i] != expected[i]) { fprintf(stderr, "FAIL: %s\n", test_name); - fprintf( - stderr, - " First difference at index %u: got=0x%016llx, expected=0x%016llx\n", - i, (unsigned long long)a[i], (unsigned long long)b[i]); - print_u64_array("Got", a, len); - print_u64_array("Expected", b, len); + fprintf(stderr, + " First difference at byte %lu: got=0x%02x, expected=0x%02x\n", + (unsigned long)i, (unsigned)got[i], (unsigned)expected[i]); + print_keccak_state_bytes("Got extracted state", got, len); + print_keccak_state_bytes("Expected extracted state", expected, len); return 0; } } @@ -1016,10 +1047,103 @@ static int test_native_rej_uniform_eta4(void) #ifdef MLD_USE_NATIVE_FIPS202_X1 +struct keccak_x1_boundary_case +{ + unsigned offset; + unsigned length; +}; + +static const struct keccak_x1_boundary_case keccak_x1_boundary_cases[] = { + {0, 0}, + {0, 1}, + {0, 7}, + {0, 8}, + {0, 9}, + {1, 1}, + {1, 6}, + {1, 7}, + {1, 8}, + {7, 1}, + {7, 2}, + {7, 8}, + {8, 1}, + {8, 8}, + {9, 15}, + {191, 9}, + {193, 7}, + {199, 1}, + {0, MLD_KECCAK_LANES * sizeof(uint64_t)}}; + +static int test_keccakf1600_x1_byte_boundaries(void) +{ + int ret = 1; + size_t i; + unsigned char input[MLD_KECCAK_LANES * sizeof(uint64_t)]; + unsigned char output[MLD_KECCAK_LANES * sizeof(uint64_t)]; + unsigned char output_ref[MLD_KECCAK_LANES * sizeof(uint64_t)]; + MLD_ALLOC(state, uint64_t, MLD_KECCAK_LANES, NULL); + MLD_ALLOC(state_ref, uint64_t, MLD_KECCAK_LANES, NULL); + + if (state == NULL || state_ref == NULL) + { + goto cleanup; + } + + randombytes(input, sizeof(input)); + for (i = 0; i < sizeof(keccak_x1_boundary_cases) / + sizeof(keccak_x1_boundary_cases[0]); + i++) + { + unsigned offset = keccak_x1_boundary_cases[i].offset; + unsigned length = keccak_x1_boundary_cases[i].length; + + memset(state, 0, MLD_KECCAK_LANES * sizeof(uint64_t)); + memset(state_ref, 0, MLD_KECCAK_LANES * sizeof(uint64_t)); + mld_keccakf1600_xor_bytes(state, input, offset, length); + keccakf1600_xor_bytes_ref(state_ref, input, offset, length); + + /* Extracting the complete logical state verifies both the updated range + * and that xor_bytes left every byte outside it unchanged. */ + mld_keccakf1600_extract_bytes(state, output, 0, sizeof(output)); + keccakf1600_extract_bytes_ref(state_ref, output_ref, 0, sizeof(output_ref)); + if (!compare_keccak_state_bytes(output, output_ref, sizeof(output), + "keccakf1600_x1_xor_bytes boundaries")) + { + fprintf(stderr, " Boundary case: offset=%u, length=%u\n", offset, + length); + goto cleanup; + } + + /* Canary-fill the whole destination and compare it with the reference so + * zero-length and partial extractions also detect out-of-range writes. */ + memset(output, 0xa5, sizeof(output)); + memset(output_ref, 0xa5, sizeof(output_ref)); + mld_keccakf1600_extract_bytes(state, output, offset, length); + keccakf1600_extract_bytes_ref(state_ref, output_ref, offset, length); + if (!compare_keccak_state_bytes(output, output_ref, sizeof(output), + "keccakf1600_x1_extract_bytes boundaries")) + { + fprintf(stderr, " Boundary case: offset=%u, length=%u\n", offset, + length); + goto cleanup; + } + } + + ret = 0; + +cleanup: + MLD_FREE(state_ref, uint64_t, MLD_KECCAK_LANES, NULL); + MLD_FREE(state, uint64_t, MLD_KECCAK_LANES, NULL); + return ret; +} + static int test_keccakf1600_permute(void) { int ret = 1; int i; + unsigned char input[MLD_KECCAK_LANES * sizeof(uint64_t)]; + unsigned char output[MLD_KECCAK_LANES * sizeof(uint64_t)]; + unsigned char output_ref[MLD_KECCAK_LANES * sizeof(uint64_t)]; MLD_ALLOC(state, uint64_t, MLD_KECCAK_LANES, NULL); MLD_ALLOC(state_ref, uint64_t, MLD_KECCAK_LANES, NULL); @@ -1030,14 +1154,20 @@ static int test_keccakf1600_permute(void) for (i = 0; i < NUM_RANDOM_TESTS; i++) { - randombytes((uint8_t *)state, MLD_KECCAK_LANES * sizeof(uint64_t)); - memcpy(state_ref, state, MLD_KECCAK_LANES * sizeof(uint64_t)); + randombytes(input, sizeof(input)); + memset(state, 0, MLD_KECCAK_LANES * sizeof(uint64_t)); + memset(state_ref, 0, MLD_KECCAK_LANES * sizeof(uint64_t)); + + mld_keccakf1600_xor_bytes(state, input, 0, sizeof(input)); + keccakf1600_xor_bytes_ref(state_ref, input, 0, sizeof(input)); mld_keccakf1600_permute(state); mld_keccakf1600_permute_c(state_ref); - CHECK(compare_u64_arrays(state, state_ref, MLD_KECCAK_LANES, - "keccakf1600_permute")); + mld_keccakf1600_extract_bytes(state, output, 0, sizeof(output)); + keccakf1600_extract_bytes_ref(state_ref, output_ref, 0, sizeof(output_ref)); + CHECK(compare_keccak_state_bytes(output, output_ref, sizeof(output), + "keccakf1600_permute")); } ret = 0; @@ -1074,6 +1204,14 @@ static int test_keccakf1600x4_xor_permute_extract(void) for (i = 0; i < NUM_RANDOM_TESTS; i++) { +#if MLD_UNIT_TEST_FIPS202_X4_ONLY + /* The focused CI unit uses the full SHAKE256 rate. The regular unit suite + * below retains randomized offsets and lengths. */ + xor_offset = 0; + xor_length = MAX_RATE; + ext_offset = 0; + ext_length = MAX_RATE; +#else /* MLD_UNIT_TEST_FIPS202_X4_ONLY */ /* Generate random offset and length for xor_bytes */ randombytes(&xor_offset, 1); randombytes(&xor_length, 1); @@ -1085,6 +1223,7 @@ static int test_keccakf1600x4_xor_permute_extract(void) randombytes(&ext_length, 1); ext_offset = ext_offset % MAX_RATE; ext_length = (uint8_t)(1 + (ext_length % (MAX_RATE - ext_offset))); +#endif /* !MLD_UNIT_TEST_FIPS202_X4_ONLY */ /* Generate different random input for each lane */ for (j = 0; j < MLD_KECCAK_WAY; j++) @@ -1194,6 +1333,7 @@ static int test_backend_units(void) #endif /* !MLD_CONFIG_NO_KEYPAIR_API */ #ifdef MLD_USE_NATIVE_FIPS202_X1 + CHECK(test_keccakf1600_x1_byte_boundaries() == 0); CHECK(test_keccakf1600_permute() == 0); #endif @@ -1218,6 +1358,18 @@ static int test_backend_units(void) #if !defined(MLD_CONFIG_NO_SIGN_API) /* Test that eager and lazy polyvec init+get produce the same results */ +/* Keep the large ML-DSA-87 workspace static so embedded test platforms do not + * need to provide it on their test-runner stack. */ +#define TEST_STATIC_ALLOC(v, T, N) \ + static MLD_ALIGN T mld_static_##v[N]; \ + T *v = mld_static_##v +#define TEST_STATIC_FREE(v) \ + do \ + { \ + mld_zeroize(mld_static_##v, sizeof(mld_static_##v)); \ + (v) = NULL; \ + } while (0) + static int test_polyvec_lazy_eager(void) { int ret = 1; @@ -1225,45 +1377,30 @@ static int test_polyvec_lazy_eager(void) #if !defined(MLD_CONFIG_NO_KEYPAIR_API) || !defined(MLD_CONFIG_NO_VERIFY_API) unsigned int j; #endif - MLD_ALLOC(packed_s1, uint8_t, MLDSA_L *MLDSA_POLYETA_PACKEDBYTES, NULL); - MLD_ALLOC(packed_s2, uint8_t, MLDSA_K *MLDSA_POLYETA_PACKEDBYTES, NULL); - MLD_ALLOC(packed_t0, uint8_t, MLDSA_K *MLDSA_POLYT0_PACKEDBYTES, NULL); - MLD_ALLOC(rho, uint8_t, MLDSA_SEEDBYTES, NULL); - MLD_ALLOC(rhoprime, uint8_t, MLDSA_CRHBYTES, NULL); - MLD_ALLOC(s1_eager, mld_sk_s1hat_eager, 1, NULL); - MLD_ALLOC(s1_lazy, mld_sk_s1hat_lazy, 1, NULL); - MLD_ALLOC(s2_eager, mld_sk_s2hat_eager, 1, NULL); - MLD_ALLOC(s2_lazy, mld_sk_s2hat_lazy, 1, NULL); - MLD_ALLOC(t0_eager, mld_sk_t0hat_eager, 1, NULL); - MLD_ALLOC(t0_lazy, mld_sk_t0hat_lazy, 1, NULL); - MLD_ALLOC(y_eager, mld_yvec_eager, 1, NULL); - MLD_ALLOC(y_lazy, mld_yvec_lazy, 1, NULL); - MLD_ALLOC(poly_eager, mld_poly, 1, NULL); - MLD_ALLOC(poly_lazy, mld_poly, 1, NULL); - MLD_ALLOC(mat_eager, mld_polymat_eager, 1, NULL); - MLD_ALLOC(mat_lazy, mld_polymat_lazy, 1, NULL); + TEST_STATIC_ALLOC(packed_s1, uint8_t, MLDSA_L *MLDSA_POLYETA_PACKEDBYTES); + TEST_STATIC_ALLOC(packed_s2, uint8_t, MLDSA_K *MLDSA_POLYETA_PACKEDBYTES); + TEST_STATIC_ALLOC(packed_t0, uint8_t, MLDSA_K *MLDSA_POLYT0_PACKEDBYTES); + TEST_STATIC_ALLOC(rho, uint8_t, MLDSA_SEEDBYTES); + TEST_STATIC_ALLOC(rhoprime, uint8_t, MLDSA_CRHBYTES); + TEST_STATIC_ALLOC(s1_eager, mld_sk_s1hat_eager, 1); + TEST_STATIC_ALLOC(s1_lazy, mld_sk_s1hat_lazy, 1); + TEST_STATIC_ALLOC(s2_eager, mld_sk_s2hat_eager, 1); + TEST_STATIC_ALLOC(s2_lazy, mld_sk_s2hat_lazy, 1); + TEST_STATIC_ALLOC(t0_eager, mld_sk_t0hat_eager, 1); + TEST_STATIC_ALLOC(t0_lazy, mld_sk_t0hat_lazy, 1); + TEST_STATIC_ALLOC(y_eager, mld_yvec_eager, 1); + TEST_STATIC_ALLOC(y_lazy, mld_yvec_lazy, 1); + TEST_STATIC_ALLOC(poly_eager, mld_poly, 1); + TEST_STATIC_ALLOC(poly_lazy, mld_poly, 1); + TEST_STATIC_ALLOC(mat_eager, mld_polymat_eager, 1); + TEST_STATIC_ALLOC(mat_lazy, mld_polymat_lazy, 1); #if !defined(MLD_CONFIG_NO_KEYPAIR_API) || !defined(MLD_CONFIG_NO_VERIFY_API) - MLD_ALLOC(v, mld_polyvecl, 1, NULL); -#endif - MLD_ALLOC(scratch_eager, mld_polyvecl, 1, NULL); - MLD_ALLOC(scratch_lazy, mld_polyvecl, 1, NULL); - MLD_ALLOC(w_eager, mld_polyveck, 1, NULL); - MLD_ALLOC(w_lazy, mld_polyveck, 1, NULL); - - if (packed_s1 == NULL || packed_s2 == NULL || packed_t0 == NULL || - rho == NULL || rhoprime == NULL || s1_eager == NULL || s1_lazy == NULL || - s2_eager == NULL || s2_lazy == NULL || t0_eager == NULL || - t0_lazy == NULL || y_eager == NULL || y_lazy == NULL || - poly_eager == NULL || poly_lazy == NULL || mat_eager == NULL || - mat_lazy == NULL || -#if !defined(MLD_CONFIG_NO_KEYPAIR_API) || !defined(MLD_CONFIG_NO_VERIFY_API) - v == NULL || + TEST_STATIC_ALLOC(v, mld_polyvecl, 1); #endif - scratch_eager == NULL || scratch_lazy == NULL || w_eager == NULL || - w_lazy == NULL) - { - goto cleanup; - } + TEST_STATIC_ALLOC(scratch_eager, mld_polyvecl, 1); + TEST_STATIC_ALLOC(scratch_lazy, mld_polyvecl, 1); + TEST_STATIC_ALLOC(w_eager, mld_polyveck, 1); + TEST_STATIC_ALLOC(w_lazy, mld_polyveck, 1); for (t = 0; t < NUM_RANDOM_TESTS_SLOW; t++) { @@ -1373,33 +1510,34 @@ static int test_polyvec_lazy_eager(void) ret = 0; -cleanup: - MLD_FREE(w_lazy, mld_polyveck, 1, NULL); - MLD_FREE(w_eager, mld_polyveck, 1, NULL); - MLD_FREE(scratch_lazy, mld_polyvecl, 1, NULL); - MLD_FREE(scratch_eager, mld_polyvecl, 1, NULL); + TEST_STATIC_FREE(w_lazy); + TEST_STATIC_FREE(w_eager); + TEST_STATIC_FREE(scratch_lazy); + TEST_STATIC_FREE(scratch_eager); #if !defined(MLD_CONFIG_NO_KEYPAIR_API) || !defined(MLD_CONFIG_NO_VERIFY_API) - MLD_FREE(v, mld_polyvecl, 1, NULL); + TEST_STATIC_FREE(v); #endif - MLD_FREE(mat_lazy, mld_polymat_lazy, 1, NULL); - MLD_FREE(mat_eager, mld_polymat_eager, 1, NULL); - MLD_FREE(poly_lazy, mld_poly, 1, NULL); - MLD_FREE(poly_eager, mld_poly, 1, NULL); - MLD_FREE(y_lazy, mld_yvec_lazy, 1, NULL); - MLD_FREE(y_eager, mld_yvec_eager, 1, NULL); - MLD_FREE(t0_lazy, mld_sk_t0hat_lazy, 1, NULL); - MLD_FREE(t0_eager, mld_sk_t0hat_eager, 1, NULL); - MLD_FREE(s2_lazy, mld_sk_s2hat_lazy, 1, NULL); - MLD_FREE(s2_eager, mld_sk_s2hat_eager, 1, NULL); - MLD_FREE(s1_lazy, mld_sk_s1hat_lazy, 1, NULL); - MLD_FREE(s1_eager, mld_sk_s1hat_eager, 1, NULL); - MLD_FREE(rhoprime, uint8_t, MLDSA_CRHBYTES, NULL); - MLD_FREE(rho, uint8_t, MLDSA_SEEDBYTES, NULL); - MLD_FREE(packed_t0, uint8_t, MLDSA_K *MLDSA_POLYT0_PACKEDBYTES, NULL); - MLD_FREE(packed_s2, uint8_t, MLDSA_K *MLDSA_POLYETA_PACKEDBYTES, NULL); - MLD_FREE(packed_s1, uint8_t, MLDSA_L *MLDSA_POLYETA_PACKEDBYTES, NULL); + TEST_STATIC_FREE(mat_lazy); + TEST_STATIC_FREE(mat_eager); + TEST_STATIC_FREE(poly_lazy); + TEST_STATIC_FREE(poly_eager); + TEST_STATIC_FREE(y_lazy); + TEST_STATIC_FREE(y_eager); + TEST_STATIC_FREE(t0_lazy); + TEST_STATIC_FREE(t0_eager); + TEST_STATIC_FREE(s2_lazy); + TEST_STATIC_FREE(s2_eager); + TEST_STATIC_FREE(s1_lazy); + TEST_STATIC_FREE(s1_eager); + TEST_STATIC_FREE(rhoprime); + TEST_STATIC_FREE(rho); + TEST_STATIC_FREE(packed_t0); + TEST_STATIC_FREE(packed_s2); + TEST_STATIC_FREE(packed_s1); return ret; } +#undef TEST_STATIC_FREE +#undef TEST_STATIC_ALLOC #endif /* !MLD_CONFIG_NO_SIGN_API */ /* Prototype for a re-#define'd main, to satisfy -Wmissing-prototypes. */ @@ -1412,6 +1550,14 @@ int main(void) * Normally, you would want to seed a PRNG with trustworthy entropy here. */ randombytes_reset(); +#if MLD_UNIT_TEST_FIPS202_X4_ONLY +#if !defined(MLD_USE_NATIVE_FIPS202_X4) +#error MLD_UNIT_TEST_FIPS202_X4_ONLY requires an x4 FIPS202 backend +#endif + CHECK(test_keccakf1600x4_xor_permute_extract() == 0); + return 0; +#endif /* MLD_UNIT_TEST_FIPS202_X4_ONLY */ + #if !defined(MLD_CONFIG_NO_SIGN_API) CHECK(test_polyvec_lazy_eager() == 0); #endif diff --git a/test/zephyr/platform.mk b/test/zephyr/platform.mk index 420ea6adce..a5261ca09c 100644 --- a/test/zephyr/platform.mk +++ b/test/zephyr/platform.mk @@ -33,8 +33,12 @@ ZEPHYR_BOARD_mps3-an547 := mps3/corstone300/an547 ZEPHYR_QEMU_mps3-an547 := mps3-an547 # Cortex-M55 ZEPHYR_BOARD_nucleo-n657x0-q := nucleo_n657x0_q # Cortex-M55 (hardware) -ZEPHYR_FIPS202_BACKEND_mps3-an547 := fips202/native/armv81m/mve.h -ZEPHYR_FIPS202_BACKEND_nucleo-n657x0-q := fips202/native/armv81m/mve.h +ZEPHYR_FIPS202_BACKEND_mps3-an547 := fips202/native/armv81m/mve_x1.h +ZEPHYR_FIPS202_BACKEND_nucleo-n657x0-q := fips202/native/armv81m/mve_x1.h + +# Zephyr owns target selection, so do not infer its ABI from make's host ARCH. +ZEPHYR_ABICHECK_ARCH_mps3-an547 := armv81m +ABICHECK_ARCH := $(strip $(ZEPHYR_ABICHECK_ARCH_$(ZEPHYR_TARGET))) # Zephyr owns target selection, so do not infer its ABI from make's host ARCH. ZEPHYR_ABICHECK_ARCH_mps3-an547 := armv81m @@ -64,13 +68,15 @@ OPT ?= 0 # key so command-line overrides invalidate binaries built with different counts. NTESTS ?= 3 NUM_RANDOM_TESTS ?= 100 +UNIT_TEST_FIPS202_X4_ONLY ?= 0 # Forward the QEMU execution deadline to exec_wrapper.py. Direct wrapper # invocations use the same default when the variable is absent. QEMU_TIMEOUT ?= 300 export QEMU_TIMEOUT -# Native backends are an OPT=1 feature (an547 builds the Armv8.1-M MVE backend). +# Native backends are an OPT=1 feature; an547 builds an Armv8.1-M FIPS202 +# backend. ZEPHYR_FIPS202_BACKEND := $(if $(filter 1,$(OPT)),$(strip $(ZEPHYR_FIPS202_BACKEND_$(ZEPHYR_TARGET)))) ZEPHYR_APP := $(PLATFORM_PATH)/app @@ -80,6 +86,7 @@ ZEPHYR_BUILD_KEY := $(ZEPHYR_TARGET)|OPT=$(OPT) ZEPHYR_BUILD_KEY := $(ZEPHYR_BUILD_KEY)|FIPS202=$(ZEPHYR_FIPS202_BACKEND) ZEPHYR_BUILD_KEY := $(ZEPHYR_BUILD_KEY)|NTESTS=$(NTESTS) ZEPHYR_BUILD_KEY := $(ZEPHYR_BUILD_KEY)|NUM_RANDOM_TESTS=$(NUM_RANDOM_TESTS) +ZEPHYR_BUILD_KEY := $(ZEPHYR_BUILD_KEY)|UNIT_TEST_FIPS202_X4_ONLY=$(UNIT_TEST_FIPS202_X4_ONLY) ZEPHYR_APP_INPUTS := \ $(ZEPHYR_APP)/CMakeLists.txt \ $(ZEPHYR_APP)/Kconfig \ @@ -122,6 +129,10 @@ CFLAGS += -DNTESTS=$(NTESTS) \ -DMLD_BENCHMARK_NTESTS=10 -DMLD_BENCHMARK_NITERATIONS=10 -DMLD_BENCHMARK_NWARMUP=10 \ -DNUM_RANDOM_TESTS=$(NUM_RANDOM_TESTS) +ifeq ($(UNIT_TEST_FIPS202_X4_ONLY),1) +CFLAGS += -DMLD_UNIT_TEST_FIPS202_X4_ONLY=1 +endif + # The binary's CFLAGS, forwarded to the CMake build (which applies them to the # mldsa amalgamation and test sources alike). '=' not ':=', so the recipe-time # $(CFLAGS) includes the binary's target-specific additions (e.g. @@ -155,11 +166,11 @@ CUSTOM_BUILD = \ $(ZEPHYR_CMAKE_ENV) cmake --build $(ZEPHYR_OUT) >/dev/null && \ cp $(ZEPHYR_OUT)/zephyr/zephyr.elf $@ -# A native assembly amalgamation can directly include development sources that -# do not appear in LIB_SRCS. The wildcard is empty before the Armv8.1-M x1 -# backend lands and becomes an explicit dependency when that source is present. +# Track every production assembly source included by the native assembly +# amalgamation so changing a source rebuilds a custom Zephyr application even +# when the generated include list itself is unchanged. ZEPHYR_NATIVE_ASM_INPUTS := mldsa/mldsa_native_asm.S \ - $(wildcard dev/fips202/armv81m_clean/src/keccak_f1600_x1_armv7m.S) + $(wildcard mldsa/src/fips202/native/armv81m/src/*.S) # A custom build links the test sources directly rather than from objects, so # nothing otherwise makes the bins depend on the Zephyr app inputs or the