| 142 | namespace sha256d64_x86_shani { |
| 143 | |
| 144 | void Transform_2way(unsigned char* out, const unsigned char* in) |
| 145 | { |
| 146 | __m128i am0, am1, am2, am3, as0, as1, aso0, aso1; |
| 147 | __m128i bm0, bm1, bm2, bm3, bs0, bs1, bso0, bso1; |
| 148 | |
| 149 | /* Transform 1 */ |
| 150 | bs0 = as0 = _mm_load_si128((const __m128i*)INIT0); |
| 151 | bs1 = as1 = _mm_load_si128((const __m128i*)INIT1); |
| 152 | am0 = Load(in); |
| 153 | bm0 = Load(in + 64); |
| 154 | QuadRound(as0, as1, am0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull); |
| 155 | QuadRound(bs0, bs1, bm0, 0xe9b5dba5b5c0fbcfull, 0x71374491428a2f98ull); |
| 156 | am1 = Load(in + 16); |
| 157 | bm1 = Load(in + 80); |
| 158 | QuadRound(as0, as1, am1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); |
| 159 | QuadRound(bs0, bs1, bm1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull); |
| 160 | ShiftMessageA(am0, am1); |
| 161 | ShiftMessageA(bm0, bm1); |
| 162 | am2 = Load(in + 32); |
| 163 | bm2 = Load(in + 96); |
| 164 | QuadRound(as0, as1, am2, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); |
| 165 | QuadRound(bs0, bs1, bm2, 0x550c7dc3243185beull, 0x12835b01d807aa98ull); |
| 166 | ShiftMessageA(am1, am2); |
| 167 | ShiftMessageA(bm1, bm2); |
| 168 | am3 = Load(in + 48); |
| 169 | bm3 = Load(in + 112); |
| 170 | QuadRound(as0, as1, am3, 0xc19bf1749bdc06a7ull, 0x80deb1fe72be5d74ull); |
| 171 | QuadRound(bs0, bs1, bm3, 0xc19bf1749bdc06a7ull, 0x80deb1fe72be5d74ull); |
| 172 | ShiftMessageB(am2, am3, am0); |
| 173 | ShiftMessageB(bm2, bm3, bm0); |
| 174 | QuadRound(as0, as1, am0, 0x240ca1cc0fc19dc6ull, 0xefbe4786E49b69c1ull); |
| 175 | QuadRound(bs0, bs1, bm0, 0x240ca1cc0fc19dc6ull, 0xefbe4786E49b69c1ull); |
| 176 | ShiftMessageB(am3, am0, am1); |
| 177 | ShiftMessageB(bm3, bm0, bm1); |
| 178 | QuadRound(as0, as1, am1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); |
| 179 | QuadRound(bs0, bs1, bm1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full); |
| 180 | ShiftMessageB(am0, am1, am2); |
| 181 | ShiftMessageB(bm0, bm1, bm2); |
| 182 | QuadRound(as0, as1, am2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); |
| 183 | QuadRound(bs0, bs1, bm2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull); |
| 184 | ShiftMessageB(am1, am2, am3); |
| 185 | ShiftMessageB(bm1, bm2, bm3); |
| 186 | QuadRound(as0, as1, am3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); |
| 187 | QuadRound(bs0, bs1, bm3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull); |
| 188 | ShiftMessageB(am2, am3, am0); |
| 189 | ShiftMessageB(bm2, bm3, bm0); |
| 190 | QuadRound(as0, as1, am0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); |
| 191 | QuadRound(bs0, bs1, bm0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull); |
| 192 | ShiftMessageB(am3, am0, am1); |
| 193 | ShiftMessageB(bm3, bm0, bm1); |
| 194 | QuadRound(as0, as1, am1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); |
| 195 | QuadRound(bs0, bs1, bm1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull); |
| 196 | ShiftMessageB(am0, am1, am2); |
| 197 | ShiftMessageB(bm0, bm1, bm2); |
| 198 | QuadRound(as0, as1, am2, 0xc76c51A3c24b8b70ull, 0xa81a664ba2bfe8a1ull); |
| 199 | QuadRound(bs0, bs1, bm2, 0xc76c51A3c24b8b70ull, 0xa81a664ba2bfe8a1ull); |
| 200 | ShiftMessageB(am1, am2, am3); |
| 201 | ShiftMessageB(bm1, bm2, bm3); |
nothing calls this directly
no test coverage detected