MCPcopy Create free account
hub / github.com/ElementsProject/elements / Transform_2way

Function Transform_2way

src/crypto/sha256_x86_shani.cpp:144–352  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

142namespace sha256d64_x86_shani {
143
144void 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);

Callers

nothing calls this directly

Calls 7

LoadFunction · 0.85
QuadRoundFunction · 0.85
ShiftMessageAFunction · 0.85
ShiftMessageBFunction · 0.85
ShiftMessageCFunction · 0.85
UnshuffleFunction · 0.85
SaveFunction · 0.85

Tested by

no test coverage detected