#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 ascon_permute .type ascon_permute, @function ascon_permute: 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 ldi r18,15 sub r18,r22 swap r18 or r22,r18 ldd r3,Z+16 ldd r2,Z+17 ldd r27,Z+18 ldd r26,Z+19 ldd r21,Z+20 ldd r20,Z+21 ldd r19,Z+22 ldd r18,Z+23 ldd r11,Z+32 ldd r10,Z+33 ldd r9,Z+34 ldd r8,Z+35 ldd r7,Z+36 ldd r6,Z+37 ldd r5,Z+38 ldd r4,Z+39 20: eor r18,r22 ldd r23,Z+7 ldd r12,Z+15 ldd r13,Z+31 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r18 eor r15,r4 eor r24,r4 com r4 or r4,r13 eor r4,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r18,r15 or r18,r12 eor r18,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+31,r23 std Z+39,r12 std Z+15,r13 std Z+23,r4 ldd r23,Z+6 ldd r12,Z+14 ldd r13,Z+30 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r19 eor r15,r5 eor r24,r5 com r5 or r5,r13 eor r5,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r19,r15 or r19,r12 eor r19,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+30,r23 std Z+38,r12 std Z+14,r13 std Z+22,r5 ldd r23,Z+5 ldd r12,Z+13 ldd r13,Z+29 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r20 eor r15,r6 eor r24,r6 com r6 or r6,r13 eor r6,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r20,r15 or r20,r12 eor r20,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+29,r23 std Z+37,r12 std Z+13,r13 std Z+21,r6 ldd r23,Z+4 ldd r12,Z+12 ldd r13,Z+28 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r21 eor r15,r7 eor r24,r7 com r7 or r7,r13 eor r7,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r21,r15 or r21,r12 eor r21,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+28,r23 std Z+36,r12 std Z+12,r13 std Z+20,r7 ldd r23,Z+3 ldd r12,Z+11 ldd r13,Z+27 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r26 eor r15,r8 eor r24,r8 com r8 or r8,r13 eor r8,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r26,r15 or r26,r12 eor r26,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+27,r23 std Z+35,r12 std Z+11,r13 std Z+19,r8 ldd r23,Z+2 ldd r12,Z+10 ldd r13,Z+26 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r27 eor r15,r9 eor r24,r9 com r9 or r9,r13 eor r9,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r27,r15 or r27,r12 eor r27,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+26,r23 std Z+34,r12 std Z+10,r13 std Z+18,r9 ldd r23,Z+1 ldd r12,Z+9 ldd r13,Z+25 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r2 eor r15,r10 eor r24,r10 com r10 or r10,r13 eor r10,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r2,r15 or r2,r12 eor r2,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+25,r23 std Z+33,r12 std Z+9,r13 std Z+17,r10 ld r23,Z ldd r12,Z+8 ldd r13,Z+24 mov r14,r12 mov r15,r23 mov r24,r13 eor r14,r3 eor r15,r11 eor r24,r11 com r11 or r11,r13 eor r11,r14 eor r13,r12 or r13,r14 eor r13,r15 eor r3,r15 or r3,r12 eor r3,r24 com r15 and r12,r15 eor r12,r24 or r23,r24 eor r23,r14 std Z+24,r23 std Z+32,r12 std Z+8,r13 std Z+16,r11 movw r12,r18 movw r14,r20 movw r24,r26 movw r16,r2 mov r0,r12 mov r12,r14 mov r14,r24 mov r24,r16 mov r16,r0 mov r0,r13 mov r13,r15 mov r15,r25 mov r25,r17 mov r17,r0 mov r0,r1 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 ror r0 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 ror r0 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 ror r0 or r17,r0 eor r12,r18 eor r13,r19 eor r14,r20 eor r15,r21 eor r24,r26 eor r25,r27 eor r16,r2 eor r17,r3 mov r23,r18 mov r0,r19 push r20 mov r18,r21 mov r19,r26 mov r20,r27 mov r21,r2 mov r26,r3 pop r3 mov r2,r0 mov r27,r23 mov r0,r1 lsr r3 ror r2 ror r27 ror r26 ror r21 ror r20 ror r19 ror r18 ror r0 lsr r3 ror r2 ror r27 ror r26 ror r21 ror r20 ror r19 ror r18 ror r0 lsr r3 ror r2 ror r27 ror r26 ror r21 ror r20 ror r19 ror r18 ror r0 lsr r3 ror r2 ror r27 ror r26 ror r21 ror r20 ror r19 ror r18 ror r0 or r3,r0 eor r18,r12 eor r19,r13 eor r20,r14 eor r21,r15 eor r26,r24 eor r27,r25 eor r2,r16 eor r3,r17 st Z,r3 std Z+1,r2 std Z+2,r27 std Z+3,r26 std Z+4,r21 std Z+5,r20 std Z+6,r19 std Z+7,r18 ldd r11,Z+8 ldd r10,Z+9 ldd r9,Z+10 ldd r8,Z+11 ldd r7,Z+12 ldd r6,Z+13 ldd r5,Z+14 ldd r4,Z+15 movw r12,r4 movw r14,r6 movw r24,r8 movw r16,r10 lsl r12 rol r13 rol r14 rol r15 rol r24 rol r25 rol r16 rol r17 adc r12,r1 lsl r12 rol r13 rol r14 rol r15 rol r24 rol r25 rol r16 rol r17 adc r12,r1 lsl r12 rol r13 rol r14 rol r15 rol r24 rol r25 rol r16 rol r17 adc r12,r1 eor r12,r4 eor r13,r5 eor r14,r6 eor r15,r7 eor r24,r8 eor r25,r9 eor r16,r10 eor r17,r11 mov r23,r9 mov r0,r10 push r11 mov r11,r8 mov r10,r7 mov r9,r6 mov r8,r5 mov r7,r4 pop r6 mov r5,r0 mov r4,r23 lsl r4 rol r5 rol r6 rol r7 rol r8 rol r9 rol r10 rol r11 adc r4,r1 eor r4,r12 eor r5,r13 eor r6,r14 eor r7,r15 eor r8,r24 eor r9,r25 eor r10,r16 eor r11,r17 std Z+8,r11 std Z+9,r10 std Z+10,r9 std Z+11,r8 std Z+12,r7 std Z+13,r6 std Z+14,r5 std Z+15,r4 ldd r3,Z+16 ldd r2,Z+17 ldd r27,Z+18 ldd r26,Z+19 ldd r21,Z+20 ldd r20,Z+21 ldd r19,Z+22 ldd r18,Z+23 movw r12,r18 movw r14,r20 movw r24,r26 movw r16,r2 bst r12,0 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 bld r17,7 eor r12,r18 eor r13,r19 eor r14,r20 eor r15,r21 eor r24,r26 eor r25,r27 eor r16,r2 eor r17,r3 mov r0,r18 mov r18,r19 mov r19,r20 mov r20,r21 mov r21,r26 mov r26,r27 mov r27,r2 mov r2,r3 mov r3,r0 lsl r18 rol r19 rol r20 rol r21 rol r26 rol r27 rol r2 rol r3 adc r18,r1 lsl r18 rol r19 rol r20 rol r21 rol r26 rol r27 rol r2 rol r3 adc r18,r1 eor r18,r12 eor r19,r13 eor r20,r14 eor r21,r15 eor r26,r24 eor r27,r25 eor r2,r16 eor r3,r17 ldd r11,Z+24 ldd r10,Z+25 ldd r9,Z+26 ldd r8,Z+27 ldd r7,Z+28 ldd r6,Z+29 ldd r5,Z+30 ldd r4,Z+31 movw r12,r4 movw r14,r6 movw r24,r8 movw r16,r10 mov r0,r12 mov r12,r13 mov r13,r14 mov r14,r15 mov r15,r24 mov r24,r25 mov r25,r16 mov r16,r17 mov r17,r0 mov r0,r1 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 ror r0 lsr r17 ror r16 ror r25 ror r24 ror r15 ror r14 ror r13 ror r12 ror r0 or r17,r0 eor r12,r4 eor r13,r5 eor r14,r6 eor r15,r7 eor r24,r8 eor r25,r9 eor r16,r10 eor r17,r11 mov r0,r4 mov r4,r6 mov r6,r8 mov r8,r10 mov r10,r0 mov r0,r5 mov r5,r7 mov r7,r9 mov r9,r11 mov r11,r0 mov r0,r1 lsr r11 ror r10 ror r9 ror r8 ror r7 ror r6 ror r5 ror r4 ror r0 or r11,r0 eor r4,r12 eor r5,r13 eor r6,r14 eor r7,r15 eor r8,r24 eor r9,r25 eor r10,r16 eor r11,r17 std Z+24,r11 std Z+25,r10 std Z+26,r9 std Z+27,r8 std Z+28,r7 std Z+29,r6 std Z+30,r5 std Z+31,r4 ldd r11,Z+32 ldd r10,Z+33 ldd r9,Z+34 ldd r8,Z+35 ldd r7,Z+36 ldd r6,Z+37 ldd r5,Z+38 ldd r4,Z+39 movw r12,r4 movw r14,r6 movw r24,r8 movw r16,r10 mov r0,r12 mov r12,r13 mov r13,r14 mov r14,r15 mov r15,r24 mov r24,r25 mov r25,r16 mov r16,r17 mov r17,r0 lsl r12 rol r13 rol r14 rol r15 rol r24 rol r25 rol r16 rol r17 adc r12,r1 eor r12,r4 eor r13,r5 eor r14,r6 eor r15,r7 eor r24,r8 eor r25,r9 eor r16,r10 eor r17,r11 mov r23,r9 mov r0,r10 push r11 mov r11,r8 mov r10,r7 mov r9,r6 mov r8,r5 mov r7,r4 pop r6 mov r5,r0 mov r4,r23 mov r0,r1 lsr r11 ror r10 ror r9 ror r8 ror r7 ror r6 ror r5 ror r4 ror r0 or r11,r0 eor r4,r12 eor r5,r13 eor r6,r14 eor r7,r15 eor r8,r24 eor r9,r25 eor r10,r16 eor r11,r17 subi r22,15 ldi r25,60 cpse r22,r25 rjmp 20b std Z+16,r3 std Z+17,r2 std Z+18,r27 std Z+19,r26 std Z+20,r21 std Z+21,r20 std Z+22,r19 std Z+23,r18 std Z+32,r11 std Z+33,r10 std Z+34,r9 std Z+35,r8 std Z+36,r7 std Z+37,r6 std Z+38,r5 std Z+39,r4 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 ret .size ascon_permute, .-ascon_permute #endif