1e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%ifidn __OUTPUT_FORMAT__,obj 2e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection code use32 class=code align=64 3e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%elifidn __OUTPUT_FORMAT__,win32 4e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%ifdef __YASM_VERSION_ID__ 5e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%if __YASM_VERSION_ID__ < 01010000h 6e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%error yasm version 1.1.0 or later needed. 7e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif 8e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley; Yasm automatically includes .00 and complains about redefining it. 9e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html 10e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%else 11e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley$@feat.00 equ 1 12e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif 13e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection .text code align=64 14e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%else 15e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleysection .text code 16e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley%endif 17e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal _bn_mul_comba8 18e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign 16 19e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_mul_comba8: 20e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_mul_comba8_begin: 21e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push esi 22e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov esi,DWORD [12+esp] 23e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push edi 24e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edi,DWORD [20+esp] 25e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebp 26e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebx 27e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 28e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 29e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 30e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 31e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 0 32e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 33e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[0] 34e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 35e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 36e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 37e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 38e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 39e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 40e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [eax],ebx 41e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 42e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[0] 43e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 1 44e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 45e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[0] 46e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 47e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 48e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 49e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 50e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 51e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 52e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[1] 53e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 54e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 55e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 56e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 57e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 58e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 59e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [4+eax],ecx 60e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 61e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[1] 62e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 2 63e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 64e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[0] 65e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 66e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 67e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 68e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 69e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 70e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 71e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[1] 72e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 73e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 74e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 75e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 76e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 77e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 78e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[2] 79e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 80e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 81e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 82e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 83e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 84e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 85e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [8+eax],ebp 86e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 87e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[2] 88e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 3 89e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 90e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[0] 91e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 92e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 93e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 94e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 95e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 96e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 97e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[1] 98e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 99e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 100e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 101e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 102e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 103e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 104e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[2] 105e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 106e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 107e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 108e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 109e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 110e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 111e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[3] 112e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 113e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 114e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 115e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 116e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 117e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 118e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [12+eax],ebx 119e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[3] 121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 4 122e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 123e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[0] 124e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 125e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 126e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 127e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 128e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 129e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 130e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[1] 131e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 132e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 133e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 134e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 135e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 136e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 137e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[2] 138e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 139e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 140e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 141e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 142e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 143e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 144e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[3] 145e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 146e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 147e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 148e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 149e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 150e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 151e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[4] 152e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 153e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 154e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 155e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 156e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 157e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 158e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [16+eax],ecx 159e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 160e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[4] 161e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 5 162e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 163e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[0] 164e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 165e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 166e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 167e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 168e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 169e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 170e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[1] 171e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 173e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 174e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 175e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 177e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[2] 178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 179e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 180e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 182e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 183e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 184e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[3] 185e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 186e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 187e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 188e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 189e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 190e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 191e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[4] 192e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 193e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 194e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 195e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 196e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 197e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 198e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[5] 199e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 200e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 201e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 202e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 203e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 204e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 205e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [20+eax],ebp 206e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 207e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[5] 208e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 6 209e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 210e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[0] 211e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 212e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 213e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 214e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 215e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 216e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 217e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[1] 218e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 219e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 220e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 221e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 222e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 223e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 224e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[2] 225e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 226e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 227e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 228e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 229e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 230e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 231e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[3] 232e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 233e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 234e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 235e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 236e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 237e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 238e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[4] 239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 240e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 245e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[5] 246e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 247e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 250e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 251e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 252e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[6] 253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 256e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 257e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 258e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [24+eax],ebx 260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 261e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[6] 262e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 7 263e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 264e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[0] 265e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 266e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 267e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 268e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 269e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 270e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 271e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[1] 272e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 273e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 274e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 275e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 276e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 277e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 278e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[2] 279e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 280e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 281e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 282e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 283e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 284e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 285e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[3] 286e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 287e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 288e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 289e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 290e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 291e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 292e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[4] 293e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 294e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 295e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 296e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 297e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 298e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 299e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[5] 300e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 301e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 302e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 303e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 304e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 305e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 306e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[6] 307e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 308e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 309e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 310e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 311e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 312e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 313e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[7] 314e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 315e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 316e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 317e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 318e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 319e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 320e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [28+eax],ecx 321e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 322e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[7] 323e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 8 324e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 325e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[1] 326e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 327e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 328e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 329e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 330e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 331e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 332e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[2] 333e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 334e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 335e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 336e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 337e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 338e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 339e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[3] 340e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 341e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 342e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 343e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 344e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 345e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 346e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[4] 347e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 348e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 349e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 350e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 351e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 352e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 353e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[5] 354e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 355e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 356e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 357e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 358e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 359e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 360e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[6] 361e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 362e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 363e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 364e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 365e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 366e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 367e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[7] 368e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 369e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 370e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 371e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 372e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 373e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 374e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [32+eax],ebp 375e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 376e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[8] 377e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 9 378e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 379e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[2] 380e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 381e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 382e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 383e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 384e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 385e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 386e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[3] 387e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 388e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 389e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 390e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 391e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 392e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 393e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[4] 394e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 395e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 396e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 397e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 398e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 399e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 400e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[5] 401e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 402e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 403e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 404e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 405e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 406e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 407e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[6] 408e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 409e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 410e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 411e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 412e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 413e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 414e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[7] 415e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 416e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 417e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 418e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 419e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 420e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 421e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [36+eax],ebx 422e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 423e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[9] 424e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 10 425e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 426e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[3] 427e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 428e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 429e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 430e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 431e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 432e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 433e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[4] 434e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 435e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 436e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 437e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 438e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 439e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 440e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[5] 441e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 442e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 443e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 444e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 445e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 446e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 447e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[6] 448e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 449e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 450e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 451e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 452e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 453e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 454e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[7] 455e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 456e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 457e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 458e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 459e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+edi] 460e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 461e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [40+eax],ecx 462e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 463e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[10] 464e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 11 465e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 466e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[4] 467e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 468e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 469e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 470e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 471e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 472e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 473e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[5] 474e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 475e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 476e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 477e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 478e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 479e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 480e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[6] 481e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 482e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 483e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 484e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 485e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 486e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 487e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[4]*b[7] 488e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 489e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 490e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 491e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 492e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+edi] 493e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 494e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [44+eax],ebp 495e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 496e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[11] 497e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 12 498e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 499e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[5] 500e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 501e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 502e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 503e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 504e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 505e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 506e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[6] 507e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 508e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 509e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 510e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 511e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 512e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 513e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[5]*b[7] 514e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 515e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 516e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 517e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 518e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+edi] 519e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 520e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [48+eax],ebx 521e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 522e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[12] 523e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 13 524e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 525e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[6] 526e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 527e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 528e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 529e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 530e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 531e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 532e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[6]*b[7] 533e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 534e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 535e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 536e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 537e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [28+edi] 538e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 539e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [52+eax],ecx 540e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 541e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[13] 542e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 14 543e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 544e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[7]*b[7] 545e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 546e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 547e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 548e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 549e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 550e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [56+eax],ebp 551e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[14] 552e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; save r[15] 553e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [60+eax],ebx 554e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebx 555e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebp 556e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop edi 557e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop esi 558e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ret 559e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal _bn_mul_comba4 560e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign 16 561e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_mul_comba4: 562e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_mul_comba4_begin: 563e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push esi 564e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov esi,DWORD [12+esp] 565e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push edi 566e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edi,DWORD [20+esp] 567e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebp 568e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebx 569e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 570e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 571e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 572e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 573e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 0 574e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 575e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[0] 576e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 577e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 578e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 579e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 580e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 581e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 582e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [eax],ebx 583e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 584e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[0] 585e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 1 586e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 587e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[0] 588e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 589e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 590e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 591e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 592e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 593e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 594e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[1] 595e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 596e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 597e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 598e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 599e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 600e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 601e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [4+eax],ecx 602e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 603e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[1] 604e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 2 605e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 606e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[0] 607e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 608e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 609e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 610e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 611e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 612e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 613e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[1] 614e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 615e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 616e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 617e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 618e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 619e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 620e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[2] 621e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 622e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 623e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 624e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 625e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [edi] 626e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 627e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [8+eax],ebp 628e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 629e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[2] 630e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 3 631e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 632e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[0] 633e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 634e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 635e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 636e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 637e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 638e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 639e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[1] 640e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 641e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 642e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 643e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 644e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 645e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 646e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[2] 647e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 648e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 649e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 650e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 651e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 652e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 653e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[0]*b[3] 654e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 655e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 656e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 657e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 658e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+edi] 659e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 660e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [12+eax],ebx 661e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 662e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[3] 663e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 4 664e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 665e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[1] 666e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 667e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 668e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 669e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 670e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 671e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 672e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[2] 673e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 674e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 675e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 676e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 677e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 678e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 679e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[1]*b[3] 680e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 681e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 682e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 683e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 684e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+edi] 685e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 686e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [16+eax],ecx 687e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 688e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[4] 689e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 5 690e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 691e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[2] 692e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 693e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 694e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 695e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 696e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 697e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 698e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[2]*b[3] 699e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 700e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 701e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 702e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 703e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+edi] 704e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 705e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [20+eax],ebp 706e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 707e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[5] 708e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ################## Calculate word 6 709e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 710e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; mul a[3]*b[3] 711e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 712e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 713e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esp] 714e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 715e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 716e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [24+eax],ebx 717e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[6] 718e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; save r[7] 719e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [28+eax],ecx 720e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebx 721e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebp 722e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop edi 723e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop esi 724e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ret 725e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal _bn_sqr_comba8 726e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign 16 727e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_sqr_comba8: 728e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_sqr_comba8_begin: 729e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push esi 730e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push edi 731e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebp 732e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebx 733e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edi,DWORD [20+esp] 734e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov esi,DWORD [24+esp] 735e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 736e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 737e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 738e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 0 739e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 740e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[0]*a[0] 741e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 742e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 743e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 744e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 745e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 746e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [edi],ebx 747e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 748e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[0] 749e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 1 750e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 751e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[1]*a[0] 752e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 753e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 754e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 755e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 756e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 757e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 758e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 759e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 760e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [4+edi],ecx 761e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 762e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[1] 763e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 2 764e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 765e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[0] 766e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 767e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 768e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 769e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 770e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 771e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 772e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 773e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 774e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[1]*a[1] 775e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 776e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 777e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 778e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 779e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 780e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [8+edi],ebp 781e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 782e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[2] 783e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 3 784e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 785e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[0] 786e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 787e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 788e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 789e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 790e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 791e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 792e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 793e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 794e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 795e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[1] 796e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 797e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 798e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 799e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 800e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 801e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 802e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 803e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 804e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [12+edi],ebx 805e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 806e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[3] 807e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 4 808e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 809e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[4]*a[0] 810e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 811e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 812e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 813e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 814e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 815e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 816e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 817e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 818e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 819e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[1] 820e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 821e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 822e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 823e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 824e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 825e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 826e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 827e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 828e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[2] 829e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 830e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 831e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 832e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 833e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 834e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [16+edi],ecx 835e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 836e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[4] 837e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 5 838e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 839e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[0] 840e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 841e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 842e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 843e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 844e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 845e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 846e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 847e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 848e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 849e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[4]*a[1] 850e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 851e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 852e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 853e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 854e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 855e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 856e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 857e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 858e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 859e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[2] 860e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 861e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 862e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 863e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 864e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 865e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 866e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 867e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 868e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [20+edi],ebp 869e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 870e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[5] 871e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 6 872e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 873e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[0] 874e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 875e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 876e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 877e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 878e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 879e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 880e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 881e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 882e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 883e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[1] 884e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 885e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 886e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 887e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 888e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 889e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 890e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 891e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 892e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 893e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[4]*a[2] 894e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 895e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 896e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 897e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 898e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 899e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 900e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 901e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 902e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[3] 903e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 904e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 905e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 906e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 907e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 908e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [24+edi],ebx 909e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 910e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[6] 911e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 7 912e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 913e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[0] 914e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 915e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 916e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 917e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 918e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 919e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 920e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 921e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 922e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 923e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[1] 924e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 925e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 926e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 927e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 928e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 929e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 930e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 931e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 932e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 933e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[2] 934e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 935e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 936e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 937e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 938e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 939e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 940e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 941e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 942e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+esi] 943e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[4]*a[3] 944e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 945e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 946e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 947e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 948e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 949e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 950e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 951e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 952e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [28+edi],ecx 953e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 954e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[7] 955e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 8 956e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 957e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[1] 958e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 959e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 960e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 961e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 962e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 963e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 964e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 965e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 966e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 967e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[2] 968e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 969e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 970e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 971e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 972e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 973e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 974e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 975e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 976e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+esi] 977e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[3] 978e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 979e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 980e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 981e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 982e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 983e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 984e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [16+esi] 985e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 986e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[4]*a[4] 987e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 988e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 989e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 990e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 991e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 992e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [32+edi],ebp 993e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 994e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[8] 995e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 9 996e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 997e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[2] 998e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 999e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1000e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1001e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1002e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1003e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1004e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 1005e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1006e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+esi] 1007e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[3] 1008e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1009e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1010e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1011e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1012e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1013e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1014e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 1015e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1016e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+esi] 1017e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[4] 1018e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1019e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1020e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1021e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1022e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1023e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1024e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 1025e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1026e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [36+edi],ebx 1027e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [12+esi] 1028e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[9] 1029e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 10 1030e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 1031e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[3] 1032e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1033e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1034e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1035e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1036e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1037e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1038e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 1039e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1040e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+esi] 1041e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[4] 1042e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1043e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1044e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1045e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1046e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1047e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1048e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [20+esi] 1049e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1050e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[5]*a[5] 1051e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1052e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1053e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1054e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [16+esi] 1055e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1056e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [40+edi],ecx 1057e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 1058e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[10] 1059e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 11 1060e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 1061e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[4] 1062e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1063e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1064e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1065e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1066e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1067e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1068e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 1069e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1070e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+esi] 1071e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[5] 1072e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1073e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1074e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1075e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1076e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1077e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1078e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 1079e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1080e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [44+edi],ebp 1081e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [20+esi] 1082e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[11] 1083e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 12 1084e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 1085e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[5] 1086e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1087e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1088e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1089e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1090e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1091e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1092e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [24+esi] 1093e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1094e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[6]*a[6] 1095e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1096e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1097e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1098e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [24+esi] 1099e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1100e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [48+edi],ebx 1101e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 1102e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[12] 1103e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 13 1104e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 1105e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[6] 1106e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1107e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1108e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1109e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1110e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1111e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1112e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [28+esi] 1113e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1114e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [52+edi],ecx 1115e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[13] 1116e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 14 1117e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 1118e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[7]*a[7] 1119e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1120e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1121e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1122e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1123e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [56+edi],ebp 1124e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[14] 1125e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [60+edi],ebx 1126e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebx 1127e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebp 1128e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop edi 1129e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop esi 1130e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ret 1131e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyglobal _bn_sqr_comba4 1132e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langleyalign 16 1133e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley_bn_sqr_comba4: 1134e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam LangleyL$_bn_sqr_comba4_begin: 1135e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push esi 1136e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push edi 1137e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebp 1138e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley push ebx 1139e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edi,DWORD [20+esp] 1140e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov esi,DWORD [24+esp] 1141e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 1142e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 1143e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [esi] 1144e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 0 1145e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 1146e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[0]*a[0] 1147e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1148e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1149e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1150e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 1151e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1152e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [edi],ebx 1153e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 1154e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[0] 1155e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 1 1156e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 1157e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[1]*a[0] 1158e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1159e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1160e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1161e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1162e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1163e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1164e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 1165e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1166e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [4+edi],ecx 1167e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 1168e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[1] 1169e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 2 1170e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 1171e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[0] 1172e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1173e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1174e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1175e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1176e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1177e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1178e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [4+esi] 1179e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1180e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[1]*a[1] 1181e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1182e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1183e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1184e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [esi] 1185e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1186e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [8+edi],ebp 1187e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 1188e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[2] 1189e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 3 1190e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 1191e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[0] 1192e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1193e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1194e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1195e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1196e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1197e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1198e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 1199e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1200e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 1201e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[1] 1202e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1203e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1204e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1205e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1206e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1207e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1208e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 1209e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1210e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [12+edi],ebx 1211e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [4+esi] 1212e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[3] 1213e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 4 1214e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebx,ebx 1215e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[1] 1216e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1217e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1218e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1219e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1220e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1221e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1222e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [8+esi] 1223e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1224e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[2]*a[2] 1225e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1226e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ecx,eax 1227e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,edx 1228e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov edx,DWORD [8+esi] 1229e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,0 1230e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [16+edi],ecx 1231e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 1232e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[4] 1233e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 5 1234e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ecx,ecx 1235e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[2] 1236e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul edx 1237e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add eax,eax 1238e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc edx,edx 1239e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1240e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebp,eax 1241e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebx,edx 1242e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov eax,DWORD [12+esi] 1243e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,0 1244e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [20+edi],ebp 1245e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[5] 1246e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; ############### Calculate word 6 1247e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley xor ebp,ebp 1248e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; sqr a[3]*a[3] 1249e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mul eax 1250e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley add ebx,eax 1251e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ecx,edx 1252e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley adc ebp,0 1253e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [24+edi],ebx 1254e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ; saved r[6] 1255e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley mov DWORD [28+edi],ecx 1256e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebx 1257e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop ebp 1258e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop edi 1259e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley pop esi 1260e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5Adam Langley ret 1261