#if defined(__AVR__) /* * Copyright (C) 2021 Southern Storm Software, Pty Ltd. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #include /* Automatically generated - do not edit */ .text .global keccakp_200_permute .type keccakp_200_permute, @function keccakp_200_permute: push r28 push r29 push r2 push r3 push r4 push r5 push r6 push r7 push r8 push r9 push r10 push r11 push r12 push r13 push r14 push r15 push r16 push r17 movw r30,r24 .L__stack_usage = 18 ld r18,Z ldd r19,Z+1 ldd r20,Z+2 ldd r21,Z+3 ldd r22,Z+4 ldd r23,Z+5 ldd r26,Z+6 ldd r27,Z+7 ldd r28,Z+8 ldd r29,Z+9 ldd r2,Z+10 ldd r3,Z+11 ldd r4,Z+12 ldd r5,Z+13 ldd r6,Z+14 ldd r7,Z+15 ldd r8,Z+16 ldd r9,Z+17 ldd r10,Z+18 ldd r11,Z+19 ldd r12,Z+20 ldd r13,Z+21 ldd r14,Z+22 ldd r15,Z+23 ldd r24,Z+24 push r31 push r30 rcall 82f ldi r30,1 eor r18,r30 rcall 82f ldi r30,130 eor r18,r30 rcall 82f ldi r30,138 eor r18,r30 rcall 82f mov r30,r1 eor r18,r30 rcall 82f ldi r30,139 eor r18,r30 rcall 82f ldi r30,1 eor r18,r30 rcall 82f ldi r30,129 eor r18,r30 rcall 82f ldi r30,9 eor r18,r30 rcall 82f ldi r30,138 eor r18,r30 rcall 82f ldi r30,136 eor r18,r30 rcall 82f ldi r30,9 eor r18,r30 rcall 82f ldi r30,10 eor r18,r30 rcall 82f ldi r30,139 eor r18,r30 rcall 82f ldi r30,139 eor r18,r30 rcall 82f ldi r30,137 eor r18,r30 rcall 82f ldi r30,3 eor r18,r30 rcall 82f ldi r30,2 eor r18,r30 rcall 82f ldi r30,128 eor r18,r30 rjmp 420f 82: mov r30,r18 eor r30,r23 eor r30,r2 eor r30,r7 eor r30,r12 mov r31,r19 eor r31,r26 eor r31,r3 eor r31,r8 eor r31,r13 mov r25,r20 eor r25,r27 eor r25,r4 eor r25,r9 eor r25,r14 mov r16,r21 eor r16,r28 eor r16,r5 eor r16,r10 eor r16,r15 mov r17,r22 eor r17,r29 eor r17,r6 eor r17,r11 eor r17,r24 mov r0,r31 lsl r0 adc r0,r1 eor r0,r17 eor r18,r0 eor r23,r0 eor r2,r0 eor r7,r0 eor r12,r0 mov r0,r25 lsl r0 adc r0,r1 eor r0,r30 eor r19,r0 eor r26,r0 eor r3,r0 eor r8,r0 eor r13,r0 mov r0,r16 lsl r0 adc r0,r1 eor r0,r31 eor r20,r0 eor r27,r0 eor r4,r0 eor r9,r0 eor r14,r0 mov r0,r17 lsl r0 adc r0,r1 eor r0,r25 eor r21,r0 eor r28,r0 eor r5,r0 eor r10,r0 eor r15,r0 mov r0,r30 lsl r0 adc r0,r1 eor r0,r16 eor r22,r0 eor r29,r0 eor r6,r0 eor r11,r0 eor r24,r0 mov r30,r19 swap r26 mov r19,r26 swap r29 mov r26,r29 mov r0,r1 lsr r14 ror r0 lsr r14 ror r0 lsr r14 ror r0 or r14,r0 mov r29,r14 bst r6,0 lsr r6 bld r6,7 mov r14,r6 lsl r12 adc r12,r1 lsl r12 adc r12,r1 mov r6,r12 mov r0,r1 lsr r20 ror r0 lsr r20 ror r0 or r20,r0 mov r12,r20 lsl r4 adc r4,r1 lsl r4 adc r4,r1 lsl r4 adc r4,r1 mov r20,r4 lsl r5 adc r5,r1 mov r4,r5 mov r5,r11 mov r11,r15 lsl r7 adc r7,r1 mov r15,r7 lsl r22 adc r22,r1 lsl r22 adc r22,r1 lsl r22 adc r22,r1 mov r7,r22 mov r0,r1 lsr r24 ror r0 lsr r24 ror r0 or r24,r0 mov r22,r24 lsl r13 adc r13,r1 lsl r13 adc r13,r1 mov r24,r13 bst r28,0 lsr r28 bld r28,7 mov r13,r28 mov r0,r1 lsr r8 ror r0 lsr r8 ror r0 lsr r8 ror r0 or r8,r0 mov r28,r8 swap r23 mov r8,r23 swap r21 mov r23,r21 mov r0,r1 lsr r10 ror r0 lsr r10 ror r0 lsr r10 ror r0 or r10,r0 mov r21,r10 bst r9,0 lsr r9 bld r9,7 mov r10,r9 lsl r3 adc r3,r1 lsl r3 adc r3,r1 mov r9,r3 mov r0,r1 lsr r27 ror r0 lsr r27 ror r0 or r27,r0 mov r3,r27 lsl r2 adc r2,r1 lsl r2 adc r2,r1 lsl r2 adc r2,r1 mov r27,r2 lsl r30 adc r30,r1 mov r2,r30 mov r30,r18 mov r31,r19 mov r25,r20 mov r16,r21 mov r17,r22 mov r18,r25 mov r0,r31 com r0 and r18,r0 eor r18,r30 mov r19,r16 mov r0,r25 com r0 and r19,r0 eor r19,r31 mov r20,r17 mov r0,r16 com r0 and r20,r0 eor r20,r25 mov r21,r30 mov r0,r17 com r0 and r21,r0 eor r21,r16 mov r22,r31 mov r0,r30 com r0 and r22,r0 eor r22,r17 mov r30,r23 mov r31,r26 mov r25,r27 mov r16,r28 mov r17,r29 mov r23,r25 mov r0,r31 com r0 and r23,r0 eor r23,r30 mov r26,r16 mov r0,r25 com r0 and r26,r0 eor r26,r31 mov r27,r17 mov r0,r16 com r0 and r27,r0 eor r27,r25 mov r28,r30 mov r0,r17 com r0 and r28,r0 eor r28,r16 mov r29,r31 mov r0,r30 com r0 and r29,r0 eor r29,r17 mov r30,r2 mov r31,r3 mov r25,r4 mov r16,r5 mov r17,r6 mov r2,r25 mov r0,r31 com r0 and r2,r0 eor r2,r30 mov r3,r16 mov r0,r25 com r0 and r3,r0 eor r3,r31 mov r4,r17 mov r0,r16 com r0 and r4,r0 eor r4,r25 mov r5,r30 mov r0,r17 com r0 and r5,r0 eor r5,r16 mov r6,r31 mov r0,r30 com r0 and r6,r0 eor r6,r17 mov r30,r7 mov r31,r8 mov r25,r9 mov r16,r10 mov r17,r11 mov r7,r25 mov r0,r31 com r0 and r7,r0 eor r7,r30 mov r8,r16 mov r0,r25 com r0 and r8,r0 eor r8,r31 mov r9,r17 mov r0,r16 com r0 and r9,r0 eor r9,r25 mov r10,r30 mov r0,r17 com r0 and r10,r0 eor r10,r16 mov r11,r31 mov r0,r30 com r0 and r11,r0 eor r11,r17 mov r30,r12 mov r31,r13 mov r25,r14 mov r16,r15 mov r17,r24 mov r12,r25 mov r0,r31 com r0 and r12,r0 eor r12,r30 mov r13,r16 mov r0,r25 com r0 and r13,r0 eor r13,r31 mov r14,r17 mov r0,r16 com r0 and r14,r0 eor r14,r25 mov r15,r30 mov r0,r17 com r0 and r15,r0 eor r15,r16 mov r24,r31 mov r0,r30 com r0 and r24,r0 eor r24,r17 ret 420: pop r30 pop r31 st Z,r18 std Z+1,r19 std Z+2,r20 std Z+3,r21 std Z+4,r22 std Z+5,r23 std Z+6,r26 std Z+7,r27 std Z+8,r28 std Z+9,r29 std Z+10,r2 std Z+11,r3 std Z+12,r4 std Z+13,r5 std Z+14,r6 std Z+15,r7 std Z+16,r8 std Z+17,r9 std Z+18,r10 std Z+19,r11 std Z+20,r12 std Z+21,r13 std Z+22,r14 std Z+23,r15 std Z+24,r24 pop r17 pop r16 pop r15 pop r14 pop r13 pop r12 pop r11 pop r10 pop r9 pop r8 pop r7 pop r6 pop r5 pop r4 pop r3 pop r2 pop r29 pop r28 ret .size keccakp_200_permute, .-keccakp_200_permute #endif