1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#if defined(__x86_64__) 2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.text 3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 4a4fb56a4374ac52a0b1c23e3654d4426c2e4adb3Adam Langley.extern OPENSSL_ia32cap_P 5a4fb56a4374ac52a0b1c23e3654d4426c2e4adb3Adam Langley.hidden OPENSSL_ia32cap_P 6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_sqr 8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_sqr 9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_sqr,@function 10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 11d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_sqr: 12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $128+24,%rsp 20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lsqr_body: 21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbp 22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rdx 23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%rax 24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rcx,128(%rsp) 25d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Loop_sqr 26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_sqr: 29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r8d,128+8(%rsp) 30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rdx 33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,%r8 34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,%rax 70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r8,%r8 74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%rcx 75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %r9,%r9 76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,(%rsp) 79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rdx,%r8 80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,8(%rsp) 83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%rcx 84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%r8 87d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 91d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 94d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r11 99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r12 107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r13 115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r14 123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r8 127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rax 129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r15 131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,%rdx 133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r8 134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rdx,%rdx 136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rcx,%r10,2),%r10 137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,%rbx 138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %r11,%r11 139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r10 143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,16(%rsp) 146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,24(%rsp) 147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%rbx 148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%r9 151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r9 153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r9 159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r13 163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r9 167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r14 171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r9 175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,%r10 176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rbx,%r12,2),%r12 177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r15 181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r9 185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%r10 186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%rax 188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r8 190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,%rcx 194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%r10,%r13,2),%r13 195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r12 199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,32(%rsp) 202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,40(%rsp) 203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%rcx 204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%r10 207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r10 209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r10 215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r15 219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r10 223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,%r12 224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rcx,%r14,2),%r14 225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r8 229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r10 233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%r12 234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,%rax 236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r9 238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,%rbx 242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%r12,%r15,2),%r15 243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r14 247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 249d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,48(%rsp) 250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,56(%rsp) 251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%rbx 252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%r11 255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r11 257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r11 263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r12 267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rbx,%r8,2),%r8 268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r9 269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rcx 270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rcx 271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r11 273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%r12 274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,%rax 276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rcx,%r10 278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%rcx 282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%r12,%r9,2),%r9 283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r8 287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,64(%rsp) 290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,72(%rsp) 291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%rcx 292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%r12 295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r12 297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbx 300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rbx 301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r12 303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,%rax 305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,%r15 306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rcx,%r10,2),%r10 307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $63,%r15 309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rbx,%r11 310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,%rbx 314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%r15,%r11,2),%r11 315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r10 319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,80(%rsp) 322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,88(%rsp) 323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%r13 326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %r13 328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,%rax 330d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r14,%r14 334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $1,%rbx 335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %r12,%r12 336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %r13,%r13 337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %r14,%r14 338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 341d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq %rdx,%r12 342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,96(%rsp) 345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,104(%rsp) 346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rax 350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rdx,%r14 354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,112(%rsp) 356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,120(%rsp) 357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsp),%r8 359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsp),%r9 360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsp),%r10 361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsp),%r11 362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsp),%r12 363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsp),%r13 364d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsp),%r14 365d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsp),%r15 366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_reduce 368d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq 64(%rsp),%r8 370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 72(%rsp),%r9 371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 80(%rsp),%r10 372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 88(%rsp),%r11 373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 96(%rsp),%r12 374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 104(%rsp),%r13 375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 112(%rsp),%r14 376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 120(%rsp),%r15 377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley sbbq %rcx,%rcx 378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_subtract 380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 381d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rdx 382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%rax 383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 128+8(%rsp),%r8d 384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdi,%rsi 385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %r8d 387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz .Loop_sqr 388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128+24+48(%rsp),%rax 390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -48(%rax),%r15 391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -40(%rax),%r14 392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -32(%rax),%r13 393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -24(%rax),%r12 394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -16(%rax),%rbp 395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -8(%rax),%rbx 396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rax),%rsp 397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lsqr_epilogue: 398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_sqr,.-rsaz_512_sqr 400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_mul 401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_mul 402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_mul,@function 403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 404d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_mul: 405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $128+24,%rsp 413d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_body: 414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,199 415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,201 416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,128(%rsp) 417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rdx),%rbx 418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbp 419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_mul 420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 421d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,199 422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,205 423d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsp),%r8 425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsp),%r9 426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsp),%r10 427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsp),%r11 428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsp),%r12 429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsp),%r13 430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsp),%r14 431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsp),%r15 432d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_reduce 434d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq 64(%rsp),%r8 435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 72(%rsp),%r9 436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 80(%rsp),%r10 437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 88(%rsp),%r11 438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 96(%rsp),%r12 439d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 104(%rsp),%r13 440d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 112(%rsp),%r14 441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 120(%rsp),%r15 442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley sbbq %rcx,%rcx 443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 444d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_subtract 445d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128+24+48(%rsp),%rax 447d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -48(%rax),%r15 448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -40(%rax),%r14 449d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -32(%rax),%r13 450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -24(%rax),%r12 451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -16(%rax),%rbp 452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -8(%rax),%rbx 453d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rax),%rsp 454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_epilogue: 455d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_mul,.-rsaz_512_mul 457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_mul_gather4 458d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_mul_gather4 459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_mul_gather4,@function 460d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 461d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_mul_gather4: 462d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 468d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r9d,%r9d 470d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $128+24,%rsp 471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_gather4_body: 472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 64(%rdx,%r9,4),%eax 473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,199 474d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl (%rdx,%r9,4),%ebx 475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,201 476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,128(%rsp) 477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 478d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $32,%rax 479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %rax,%rbx 480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%rcx 482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128(%rdx,%r9,4),%rbp 483d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,(%rsp) 485d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rcx,%rax 486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movd (%rbp),%xmm4 490d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movd 64(%rbp),%xmm5 497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 500d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $4,%xmm5 504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 505d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm5,%xmm4 511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 514d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 515d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 518d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 520d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 523d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128(%rbp),%rbp 524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 525d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 527d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,227 531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 534d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 536d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rsp),%rdi 537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $7,%ecx 538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Loop_mul_gather 539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 540d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 541d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_mul_gather: 542d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%rax 545d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 546d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r8 548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 549d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movd (%rbp),%xmm4 551d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 552d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r9,%r8 555d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 557d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movd 64(%rbp),%xmm5 560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 561d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 562d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r10,%r9 564d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $4,%xmm5 569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 570d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 571d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 572d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r11,%r10 573d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 574d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 575d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 576d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 577d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm5,%xmm4 578d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r12,%r11 582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 583d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 588d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r13,%r12 590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r14,%r13 598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,227 603d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 605d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r15,%r14 607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 608d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128(%rbp),%rbp 611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rdi),%rdi 612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 613d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz .Loop_mul_gather 615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rdi) 618d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,16(%rdi) 619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,24(%rdi) 620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,32(%rdi) 621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,40(%rdi) 622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,48(%rdi) 623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,56(%rdi) 624d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,199 626d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,205 627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsp),%r8 629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsp),%r9 630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsp),%r10 631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsp),%r11 632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsp),%r12 633d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsp),%r13 634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsp),%r14 635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsp),%r15 636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_reduce 638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq 64(%rsp),%r8 639d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 72(%rsp),%r9 640d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 80(%rsp),%r10 641d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 88(%rsp),%r11 642d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 96(%rsp),%r12 643d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 104(%rsp),%r13 644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 112(%rsp),%r14 645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 120(%rsp),%r15 646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley sbbq %rcx,%rcx 647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_subtract 649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 650d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128+24+48(%rsp),%rax 651d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -48(%rax),%r15 652d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -40(%rax),%r14 653d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -32(%rax),%r13 654d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -24(%rax),%r12 655d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -16(%rax),%rbp 656d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -8(%rax),%rbx 657d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rax),%rsp 658d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_gather4_epilogue: 659d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 660d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_mul_gather4,.-rsaz_512_mul_gather4 661d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_mul_scatter4 662d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_mul_scatter4 663d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_mul_scatter4,@function 664d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 665d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_mul_scatter4: 666d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 667d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 668d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 669d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 670d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 671d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 672d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 673d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r9d,%r9d 674d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $128+24,%rsp 675d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_scatter4_body: 676d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%r8,%r9,4),%r8 677d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,199 678d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,110,202 679d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,73,15,110,208 680d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rcx,128(%rsp) 681d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 682d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdi,%rbp 683d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rdi),%rbx 684d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_mul 685d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 686d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,199 687d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,205 688d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 689d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsp),%r8 690d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsp),%r9 691d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsp),%r10 692d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsp),%r11 693d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsp),%r12 694d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsp),%r13 695d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsp),%r14 696d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsp),%r15 697d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 698d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_reduce 699d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq 64(%rsp),%r8 700d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 72(%rsp),%r9 701d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 80(%rsp),%r10 702d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 88(%rsp),%r11 703d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 96(%rsp),%r12 704d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 104(%rsp),%r13 705d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 112(%rsp),%r14 706d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 120(%rsp),%r15 707d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,72,15,126,214 708d9e397b599b13d642138480a28c14db7a136bf0Adam Langley sbbq %rcx,%rcx 709d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 710d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_subtract 711d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 712d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r8d,0(%rsi) 713d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r8 714d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r9d,128(%rsi) 715d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r9 716d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r10d,256(%rsi) 717d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r10 718d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r11d,384(%rsi) 719d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r11 720d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r12d,512(%rsi) 721d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r12 722d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r13d,640(%rsi) 723d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r13 724d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r14d,768(%rsi) 725d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r14 726d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r15d,896(%rsi) 727d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%r15 728d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r8d,64(%rsi) 729d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r9d,192(%rsi) 730d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r10d,320(%rsi) 731d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r11d,448(%rsi) 732d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r12d,576(%rsi) 733d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r13d,704(%rsi) 734d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r14d,832(%rsi) 735d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %r15d,960(%rsi) 736d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 737d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128+24+48(%rsp),%rax 738d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -48(%rax),%r15 739d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -40(%rax),%r14 740d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -32(%rax),%r13 741d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -24(%rax),%r12 742d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -16(%rax),%rbp 743d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -8(%rax),%rbx 744d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rax),%rsp 745d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_scatter4_epilogue: 746d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 747d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_mul_scatter4,.-rsaz_512_mul_scatter4 748d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_mul_by_one 749d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_mul_by_one 750d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_mul_by_one,@function 751d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 752d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_mul_by_one: 753d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 754d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 755d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 756d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 757d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 758d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 759d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 760d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $128+24,%rsp 761d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_by_one_body: 762d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%rbp 763d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rcx,128(%rsp) 764d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 765d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%r8 766d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 767d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%r9 768d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%r10 769d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%r11 770d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%r12 771d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%r13 772d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%r14 773d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%r15 774d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 775d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,(%rsp) 776d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,16(%rsp) 777d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,32(%rsp) 778d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,48(%rsp) 779d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,64(%rsp) 780d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,80(%rsp) 781d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,96(%rsp) 782d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __rsaz_512_reduce 783d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 784d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rdi) 785d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,16(%rdi) 786d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,24(%rdi) 787d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,32(%rdi) 788d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,40(%rdi) 789d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,48(%rdi) 790d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,56(%rdi) 791d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 792d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128+24+48(%rsp),%rax 793d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -48(%rax),%r15 794d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -40(%rax),%r14 795d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -32(%rax),%r13 796d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -24(%rax),%r12 797d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -16(%rax),%rbp 798d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq -8(%rax),%rbx 799d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rax),%rsp 800d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lmul_by_one_epilogue: 801d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 802d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_mul_by_one,.-rsaz_512_mul_by_one 803d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type __rsaz_512_reduce,@function 804d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 805d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__rsaz_512_reduce: 806d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rbx 807d9e397b599b13d642138480a28c14db7a136bf0Adam Langley imulq 128+8(%rsp),%rbx 808d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0(%rbp),%rax 809d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $8,%ecx 810d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Lreduction_loop 811d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 812d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 813d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Lreduction_loop: 814d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 815d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rbp),%rax 816d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negq %r8 817d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 818d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r8 819d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 820d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 821d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 822d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rbp),%rax 823d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 824d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r9,%r8 825d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 826d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 827d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 828d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 829d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 830d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rbp),%rax 831d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 832d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r10,%r9 833d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 834d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 835d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 836d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 837d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 838d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rbp),%rax 839d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 840d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r11,%r10 841d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 128+8(%rsp),%rsi 842d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 843d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 844d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 845d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 846d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 847d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 848d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 849d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rbp),%rax 850d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 851d9e397b599b13d642138480a28c14db7a136bf0Adam Langley imulq %r8,%rsi 852d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r12,%r11 853d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 854d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 855d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 856d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 857d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 858d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rbp),%rax 859d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 860d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r13,%r12 861d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 862d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 863d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 864d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 865d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 866d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rbp),%rax 867d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 868d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r14,%r13 869d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 870d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 871d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 872d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 873d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rsi,%rbx 874d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 875d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0(%rbp),%rax 876d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 877d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r15,%r14 878d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 879d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 880d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 881d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 882d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jne .Lreduction_loop 883d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 884d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 885d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size __rsaz_512_reduce,.-__rsaz_512_reduce 886d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type __rsaz_512_subtract,@function 887d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 888d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__rsaz_512_subtract: 889d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 890d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rdi) 891d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,16(%rdi) 892d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,24(%rdi) 893d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,32(%rdi) 894d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,40(%rdi) 895d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,48(%rdi) 896d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,56(%rdi) 897d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 898d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0(%rbp),%r8 899d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rbp),%r9 900d9e397b599b13d642138480a28c14db7a136bf0Adam Langley negq %r8 901d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r9 902d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r8 903d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rbp),%r10 904d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r9 905d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r10 906d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rbp),%r11 907d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r10 908d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r11 909d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rbp),%r12 910d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r11 911d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r12 912d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rbp),%r13 913d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r12 914d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r13 915d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rbp),%r14 916d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r13 917d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r14 918d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rbp),%r15 919d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r14 920d9e397b599b13d642138480a28c14db7a136bf0Adam Langley notq %r15 921d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq %rcx,%r15 922d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 923d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq (%rdi),%r8 924d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 8(%rdi),%r9 925d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 16(%rdi),%r10 926d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 24(%rdi),%r11 927d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 32(%rdi),%r12 928d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 40(%rdi),%r13 929d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 48(%rdi),%r14 930d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq 56(%rdi),%r15 931d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 932d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 933d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rdi) 934d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,16(%rdi) 935d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,24(%rdi) 936d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,32(%rdi) 937d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,40(%rdi) 938d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,48(%rdi) 939d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,56(%rdi) 940d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 941d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 942d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size __rsaz_512_subtract,.-__rsaz_512_subtract 943d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type __rsaz_512_mul,@function 944d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 945d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__rsaz_512_mul: 946d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rsp),%rdi 947d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 948d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 949d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 950d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,(%rdi) 951d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%rax 952d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 953d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 954d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 955d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 956d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 957d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 958d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 959d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 960d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 961d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 962d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 963d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 964d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 965d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 966d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 967d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 968d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 969d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 970d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 971d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 972d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 973d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 974d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 975d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 976d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 977d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 978d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 979d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 980d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 981d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 982d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 983d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 984d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 985d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 986d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 987d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 988d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 989d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 990d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 991d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 992d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 993d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 994d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 995d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 996d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rbp),%rbp 997d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rdi),%rdi 998d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 999d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $7,%ecx 1000d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Loop_mul 1001d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1002d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 32 1003d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_mul: 1004d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rbp),%rbx 1005d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1006d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r8 1007d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%rax 1008d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 1009d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r8 1010d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r8 1011d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1012d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1013d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r9 1014d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%rax 1015d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1016d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r9,%r8 1017d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r9 1018d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r9 1019d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1020d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1021d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r10 1022d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%rax 1023d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1024d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r10,%r9 1025d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r10 1026d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r10 1027d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1028d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1029d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r11 1030d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rax 1031d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1032d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r11,%r10 1033d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r11 1034d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r11 1035d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1036d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1037d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r12 1038d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rax 1039d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1040d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r12,%r11 1041d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r12 1042d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r12 1043d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1044d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1045d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r13 1046d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48(%rsi),%rax 1047d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1048d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r13,%r12 1049d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r13 1050d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r13 1051d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1052d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1053d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r14 1054d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 56(%rsi),%rax 1055d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1056d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r14,%r13 1057d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 1058d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rbp),%rbp 1059d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r14 1060d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1061d9e397b599b13d642138480a28c14db7a136bf0Adam Langley mulq %rbx 1062d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %rax,%r15 1063d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 1064d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%rdx 1065d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r15,%r14 1066d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r15 1067d9e397b599b13d642138480a28c14db7a136bf0Adam Langley adcq $0,%r15 1068d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1069d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rdi),%rdi 1070d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1071d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %ecx 1072d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz .Loop_mul 1073d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1074d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,(%rdi) 1075d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rdi) 1076d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r10,16(%rdi) 1077d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r11,24(%rdi) 1078d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r12,32(%rdi) 1079d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r13,40(%rdi) 1080d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r14,48(%rdi) 1081d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r15,56(%rdi) 1082d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1083d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 1084d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size __rsaz_512_mul,.-__rsaz_512_mul 1085d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_scatter4 1086d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_scatter4 1087d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_scatter4,@function 1088d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 16 1089d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_scatter4: 1090d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rdi,%rdx,4),%rdi 1091d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $8,%r9d 1092d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Loop_scatter 1093d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 16 1094d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_scatter: 1095d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi),%rax 1096d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rsi),%rsi 1097d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,(%rdi) 1098d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%rax 1099d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,64(%rdi) 1100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128(%rdi),%rdi 1101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %r9d 1102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz .Loop_scatter 1103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 1104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_scatter4,.-rsaz_512_scatter4 1105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl rsaz_512_gather4 1107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.hidden rsaz_512_gather4 1108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.type rsaz_512_gather4,@function 1109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 16 1110d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyrsaz_512_gather4: 1111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq (%rsi,%rdx,4),%rsi 1112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $8,%r9d 1113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp .Loop_gather 1114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 16 1115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.Loop_gather: 1116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl (%rsi),%eax 1117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 64(%rsi),%r8d 1118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 128(%rsi),%rsi 1119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $32,%r8 1120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r8,%rax 1121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,(%rdi) 1122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 8(%rdi),%rdi 1123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %r9d 1124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz .Loop_gather 1125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 1126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.size rsaz_512_gather4,.-rsaz_512_gather4 1127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif 1128