#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 xoodoo_permute .type xoodoo_permute, @function xoodoo_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 movw r30,r24 .L__stack_usage = 16 ldi r18,88 mov r19,r1 rcall 34f ldi r18,56 rcall 34f ldi r18,192 ldi r19,3 rcall 34f ldi r18,208 mov r19,r1 rcall 34f ldi r18,32 ldi r19,1 rcall 34f ldi r18,20 mov r19,r1 rcall 34f ldi r18,96 rcall 34f ldi r18,44 rcall 34f ldi r18,128 ldi r19,3 rcall 34f ldi r18,240 mov r19,r1 rcall 34f ldi r18,160 ldi r19,1 rcall 34f ldi r18,18 mov r19,r1 rcall 34f rjmp 888f 34: ldd r6,Z+12 ldd r7,Z+13 ldd r8,Z+14 ldd r9,Z+15 ldd r0,Z+28 eor r6,r0 ldd r0,Z+29 eor r7,r0 ldd r0,Z+30 eor r8,r0 ldd r0,Z+31 eor r9,r0 ldd r0,Z+44 eor r6,r0 ldd r0,Z+45 eor r7,r0 ldd r0,Z+46 eor r8,r0 ldd r0,Z+47 eor r9,r0 ld r20,Z ldd r21,Z+1 ldd r22,Z+2 ldd r23,Z+3 ldd r26,Z+16 ldd r27,Z+17 ldd r28,Z+18 ldd r29,Z+19 ldd r2,Z+32 ldd r3,Z+33 ldd r4,Z+34 ldd r5,Z+35 movw r10,r20 movw r12,r22 eor r10,r26 eor r11,r27 eor r12,r28 eor r13,r29 eor r10,r2 eor r11,r3 eor r12,r4 eor r13,r5 movw r14,r6 movw r24,r8 mov r0,r1 lsr r9 ror r8 ror r7 ror r6 ror r0 lsr r9 ror r8 ror r7 ror r6 ror r0 lsr r9 ror r8 ror r7 ror r6 ror r0 or r9,r0 mov r0,r1 lsr r25 ror r24 ror r15 ror r14 ror r0 lsr r25 ror r24 ror r15 ror r14 ror r0 or r25,r0 eor r9,r24 eor r6,r25 eor r7,r14 eor r8,r15 movw r14,r10 movw r24,r12 mov r0,r1 lsr r13 ror r12 ror r11 ror r10 ror r0 lsr r13 ror r12 ror r11 ror r10 ror r0 lsr r13 ror r12 ror r11 ror r10 ror r0 or r13,r0 mov r0,r1 lsr r25 ror r24 ror r15 ror r14 ror r0 lsr r25 ror r24 ror r15 ror r14 ror r0 or r25,r0 eor r13,r24 eor r10,r25 eor r11,r14 eor r12,r15 eor r20,r9 eor r21,r6 eor r22,r7 eor r23,r8 eor r26,r9 eor r27,r6 eor r28,r7 eor r29,r8 eor r2,r9 eor r3,r6 eor r4,r7 eor r5,r8 st Z,r20 std Z+1,r21 std Z+2,r22 std Z+3,r23 std Z+16,r26 std Z+17,r27 std Z+18,r28 std Z+19,r29 std Z+32,r2 std Z+33,r3 std Z+34,r4 std Z+35,r5 ldd r20,Z+4 ldd r21,Z+5 ldd r22,Z+6 ldd r23,Z+7 ldd r26,Z+20 ldd r27,Z+21 ldd r28,Z+22 ldd r29,Z+23 ldd r2,Z+36 ldd r3,Z+37 ldd r4,Z+38 ldd r5,Z+39 movw r6,r20 movw r8,r22 eor r6,r26 eor r7,r27 eor r8,r28 eor r9,r29 eor r6,r2 eor r7,r3 eor r8,r4 eor r9,r5 movw r14,r6 movw r24,r8 mov r0,r1 lsr r9 ror r8 ror r7 ror r6 ror r0 lsr r9 ror r8 ror r7 ror r6 ror r0 lsr r9 ror r8 ror r7 ror r6 ror r0 or r9,r0 mov r0,r1 lsr r25 ror r24 ror r15 ror r14 ror r0 lsr r25 ror r24 ror r15 ror r14 ror r0 or r25,r0 eor r9,r24 eor r6,r25 eor r7,r14 eor r8,r15 eor r20,r13 eor r21,r10 eor r22,r11 eor r23,r12 eor r26,r13 eor r27,r10 eor r28,r11 eor r29,r12 eor r2,r13 eor r3,r10 eor r4,r11 eor r5,r12 std Z+4,r20 std Z+5,r21 std Z+6,r22 std Z+7,r23 std Z+20,r26 std Z+21,r27 std Z+22,r28 std Z+23,r29 std Z+36,r2 std Z+37,r3 std Z+38,r4 std Z+39,r5 ldd r20,Z+8 ldd r21,Z+9 ldd r22,Z+10 ldd r23,Z+11 ldd r26,Z+24 ldd r27,Z+25 ldd r28,Z+26 ldd r29,Z+27 ldd r2,Z+40 ldd r3,Z+41 ldd r4,Z+42 ldd r5,Z+43 movw r10,r20 movw r12,r22 eor r10,r26 eor r11,r27 eor r12,r28 eor r13,r29 eor r10,r2 eor r11,r3 eor r12,r4 eor r13,r5 movw r14,r10 movw r24,r12 mov r0,r1 lsr r13 ror r12 ror r11 ror r10 ror r0 lsr r13 ror r12 ror r11 ror r10 ror r0 lsr r13 ror r12 ror r11 ror r10 ror r0 or r13,r0 mov r0,r1 lsr r25 ror r24 ror r15 ror r14 ror r0 lsr r25 ror r24 ror r15 ror r14 ror r0 or r25,r0 eor r13,r24 eor r10,r25 eor r11,r14 eor r12,r15 eor r20,r9 eor r21,r6 eor r22,r7 eor r23,r8 eor r26,r9 eor r27,r6 eor r28,r7 eor r29,r8 eor r2,r9 eor r3,r6 eor r4,r7 eor r5,r8 std Z+8,r20 std Z+9,r21 std Z+10,r22 std Z+11,r23 std Z+24,r26 std Z+25,r27 std Z+26,r28 std Z+27,r29 std Z+40,r2 std Z+41,r3 std Z+42,r4 std Z+43,r5 ldd r0,Z+12 eor r0,r13 std Z+12,r0 ldd r0,Z+13 eor r0,r10 std Z+13,r0 ldd r0,Z+14 eor r0,r11 std Z+14,r0 ldd r0,Z+15 eor r0,r12 std Z+15,r0 ldd r6,Z+28 ldd r7,Z+29 ldd r8,Z+30 ldd r9,Z+31 eor r6,r13 eor r7,r10 eor r8,r11 eor r9,r12 ldd r14,Z+44 ldd r15,Z+45 ldd r24,Z+46 ldd r25,Z+47 eor r14,r13 eor r15,r10 eor r24,r11 eor r25,r12 ldd r10,Z+24 ldd r11,Z+25 ldd r12,Z+26 ldd r13,Z+27 std Z+28,r10 std Z+29,r11 std Z+30,r12 std Z+31,r13 ldd r10,Z+20 ldd r11,Z+21 ldd r12,Z+22 ldd r13,Z+23 std Z+24,r10 std Z+25,r11 std Z+26,r12 std Z+27,r13 ldd r10,Z+16 ldd r11,Z+17 ldd r12,Z+18 ldd r13,Z+19 std Z+20,r10 std Z+21,r11 std Z+22,r12 std Z+23,r13 std Z+16,r6 std Z+17,r7 std Z+18,r8 std Z+19,r9 ldd r6,Z+32 ldd r7,Z+33 ldd r8,Z+34 ldd r9,Z+35 mov r0,r9 mov r9,r8 mov r8,r7 mov r7,r6 mov r6,r0 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+32,r6 std Z+33,r7 std Z+34,r8 std Z+35,r9 ldd r6,Z+36 ldd r7,Z+37 ldd r8,Z+38 ldd r9,Z+39 mov r0,r9 mov r9,r8 mov r8,r7 mov r7,r6 mov r6,r0 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+36,r6 std Z+37,r7 std Z+38,r8 std Z+39,r9 ldd r6,Z+40 ldd r7,Z+41 ldd r8,Z+42 ldd r9,Z+43 mov r0,r9 mov r9,r8 mov r8,r7 mov r7,r6 mov r6,r0 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+40,r6 std Z+41,r7 std Z+42,r8 std Z+43,r9 mov r0,r25 mov r25,r24 mov r24,r15 mov r15,r14 mov r14,r0 lsl r14 rol r15 rol r24 rol r25 adc r14,r1 lsl r14 rol r15 rol r24 rol r25 adc r14,r1 lsl r14 rol r15 rol r24 rol r25 adc r14,r1 std Z+44,r14 std Z+45,r15 std Z+46,r24 std Z+47,r25 ld r20,Z ldd r21,Z+1 ldd r22,Z+2 ldd r23,Z+3 eor r20,r18 eor r21,r19 ldd r26,Z+16 ldd r27,Z+17 ldd r28,Z+18 ldd r29,Z+19 ldd r2,Z+32 ldd r3,Z+33 ldd r4,Z+34 ldd r5,Z+35 movw r6,r2 movw r8,r4 mov r0,r26 com r0 and r6,r0 mov r0,r27 com r0 and r7,r0 mov r0,r28 com r0 and r8,r0 mov r0,r29 com r0 and r9,r0 eor r20,r6 eor r21,r7 eor r22,r8 eor r23,r9 st Z,r20 std Z+1,r21 std Z+2,r22 std Z+3,r23 movw r6,r20 movw r8,r22 mov r0,r2 com r0 and r6,r0 mov r0,r3 com r0 and r7,r0 mov r0,r4 com r0 and r8,r0 mov r0,r5 com r0 and r9,r0 eor r26,r6 eor r27,r7 eor r28,r8 eor r29,r9 std Z+16,r26 std Z+17,r27 std Z+18,r28 std Z+19,r29 mov r0,r20 com r0 and r26,r0 mov r0,r21 com r0 and r27,r0 mov r0,r22 com r0 and r28,r0 mov r0,r23 com r0 and r29,r0 eor r2,r26 eor r3,r27 eor r4,r28 eor r5,r29 std Z+32,r2 std Z+33,r3 std Z+34,r4 std Z+35,r5 ldd r20,Z+4 ldd r21,Z+5 ldd r22,Z+6 ldd r23,Z+7 ldd r26,Z+20 ldd r27,Z+21 ldd r28,Z+22 ldd r29,Z+23 ldd r2,Z+36 ldd r3,Z+37 ldd r4,Z+38 ldd r5,Z+39 movw r6,r2 movw r8,r4 mov r0,r26 com r0 and r6,r0 mov r0,r27 com r0 and r7,r0 mov r0,r28 com r0 and r8,r0 mov r0,r29 com r0 and r9,r0 eor r20,r6 eor r21,r7 eor r22,r8 eor r23,r9 std Z+4,r20 std Z+5,r21 std Z+6,r22 std Z+7,r23 movw r6,r20 movw r8,r22 mov r0,r2 com r0 and r6,r0 mov r0,r3 com r0 and r7,r0 mov r0,r4 com r0 and r8,r0 mov r0,r5 com r0 and r9,r0 eor r26,r6 eor r27,r7 eor r28,r8 eor r29,r9 std Z+20,r26 std Z+21,r27 std Z+22,r28 std Z+23,r29 mov r0,r20 com r0 and r26,r0 mov r0,r21 com r0 and r27,r0 mov r0,r22 com r0 and r28,r0 mov r0,r23 com r0 and r29,r0 eor r2,r26 eor r3,r27 eor r4,r28 eor r5,r29 std Z+36,r2 std Z+37,r3 std Z+38,r4 std Z+39,r5 ldd r20,Z+8 ldd r21,Z+9 ldd r22,Z+10 ldd r23,Z+11 ldd r26,Z+24 ldd r27,Z+25 ldd r28,Z+26 ldd r29,Z+27 ldd r2,Z+40 ldd r3,Z+41 ldd r4,Z+42 ldd r5,Z+43 movw r6,r2 movw r8,r4 mov r0,r26 com r0 and r6,r0 mov r0,r27 com r0 and r7,r0 mov r0,r28 com r0 and r8,r0 mov r0,r29 com r0 and r9,r0 eor r20,r6 eor r21,r7 eor r22,r8 eor r23,r9 std Z+8,r20 std Z+9,r21 std Z+10,r22 std Z+11,r23 movw r6,r20 movw r8,r22 mov r0,r2 com r0 and r6,r0 mov r0,r3 com r0 and r7,r0 mov r0,r4 com r0 and r8,r0 mov r0,r5 com r0 and r9,r0 eor r26,r6 eor r27,r7 eor r28,r8 eor r29,r9 std Z+24,r26 std Z+25,r27 std Z+26,r28 std Z+27,r29 mov r0,r20 com r0 and r26,r0 mov r0,r21 com r0 and r27,r0 mov r0,r22 com r0 and r28,r0 mov r0,r23 com r0 and r29,r0 eor r2,r26 eor r3,r27 eor r4,r28 eor r5,r29 std Z+40,r2 std Z+41,r3 std Z+42,r4 std Z+43,r5 ldd r20,Z+12 ldd r21,Z+13 ldd r22,Z+14 ldd r23,Z+15 ldd r26,Z+28 ldd r27,Z+29 ldd r28,Z+30 ldd r29,Z+31 ldd r2,Z+44 ldd r3,Z+45 ldd r4,Z+46 ldd r5,Z+47 movw r6,r2 movw r8,r4 mov r0,r26 com r0 and r6,r0 mov r0,r27 com r0 and r7,r0 mov r0,r28 com r0 and r8,r0 mov r0,r29 com r0 and r9,r0 eor r20,r6 eor r21,r7 eor r22,r8 eor r23,r9 std Z+12,r20 std Z+13,r21 std Z+14,r22 std Z+15,r23 movw r6,r20 movw r8,r22 mov r0,r2 com r0 and r6,r0 mov r0,r3 com r0 and r7,r0 mov r0,r4 com r0 and r8,r0 mov r0,r5 com r0 and r9,r0 eor r26,r6 eor r27,r7 eor r28,r8 eor r29,r9 std Z+28,r26 std Z+29,r27 std Z+30,r28 std Z+31,r29 mov r0,r20 com r0 and r26,r0 mov r0,r21 com r0 and r27,r0 mov r0,r22 com r0 and r28,r0 mov r0,r23 com r0 and r29,r0 eor r2,r26 eor r3,r27 eor r4,r28 eor r5,r29 std Z+44,r2 std Z+45,r3 std Z+46,r4 std Z+47,r5 ldd r6,Z+16 ldd r7,Z+17 ldd r8,Z+18 ldd r9,Z+19 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+16,r6 std Z+17,r7 std Z+18,r8 std Z+19,r9 ldd r6,Z+20 ldd r7,Z+21 ldd r8,Z+22 ldd r9,Z+23 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+20,r6 std Z+21,r7 std Z+22,r8 std Z+23,r9 ldd r6,Z+24 ldd r7,Z+25 ldd r8,Z+26 ldd r9,Z+27 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+24,r6 std Z+25,r7 std Z+26,r8 std Z+27,r9 ldd r6,Z+28 ldd r7,Z+29 ldd r8,Z+30 ldd r9,Z+31 lsl r6 rol r7 rol r8 rol r9 adc r6,r1 std Z+28,r6 std Z+29,r7 std Z+30,r8 std Z+31,r9 ldd r6,Z+40 ldd r7,Z+41 ldd r8,Z+42 ldd r9,Z+43 ldd r10,Z+44 ldd r11,Z+45 ldd r12,Z+46 ldd r13,Z+47 ldd r14,Z+32 ldd r15,Z+33 ldd r24,Z+34 ldd r25,Z+35 std Z+40,r25 std Z+41,r14 std Z+42,r15 std Z+43,r24 ldd r14,Z+36 ldd r15,Z+37 ldd r24,Z+38 ldd r25,Z+39 std Z+44,r25 std Z+45,r14 std Z+46,r15 std Z+47,r24 std Z+32,r9 std Z+33,r6 std Z+34,r7 std Z+35,r8 std Z+36,r13 std Z+37,r10 std Z+38,r11 std Z+39,r12 ret 888: 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 xoodoo_permute, .-xoodoo_permute #endif