private unsafe static void SHATransform(uint *expandedBuffer, uint *state, byte *block) { uint num = *state; uint num2 = state[1]; uint num3 = state[2]; uint num4 = state[3]; uint num5 = state[4]; uint num6 = state[5]; uint num7 = state[6]; uint num8 = state[7]; Utils.DWORDFromBigEndian(expandedBuffer, 16, block); SHA256Managed.SHA256Expand(expandedBuffer); for (int i = 0; i < 64; i++) { uint num9 = num8 + SHA256Managed.Sigma_1(num5) + SHA256Managed.Ch(num5, num6, num7) + SHA256Managed._K[i] + expandedBuffer[i]; uint num10 = num4 + num9; uint num11 = num9 + SHA256Managed.Sigma_0(num) + SHA256Managed.Maj(num, num2, num3); i++; num9 = num7 + SHA256Managed.Sigma_1(num10) + SHA256Managed.Ch(num10, num5, num6) + SHA256Managed._K[i] + expandedBuffer[i]; uint num12 = num3 + num9; uint num13 = num9 + SHA256Managed.Sigma_0(num11) + SHA256Managed.Maj(num11, num, num2); i++; num9 = num6 + SHA256Managed.Sigma_1(num12) + SHA256Managed.Ch(num12, num10, num5) + SHA256Managed._K[i] + expandedBuffer[i]; uint num14 = num2 + num9; uint num15 = num9 + SHA256Managed.Sigma_0(num13) + SHA256Managed.Maj(num13, num11, num); i++; num9 = num5 + SHA256Managed.Sigma_1(num14) + SHA256Managed.Ch(num14, num12, num10) + SHA256Managed._K[i] + expandedBuffer[i]; uint num16 = num + num9; uint num17 = num9 + SHA256Managed.Sigma_0(num15) + SHA256Managed.Maj(num15, num13, num11); i++; num9 = num10 + SHA256Managed.Sigma_1(num16) + SHA256Managed.Ch(num16, num14, num12) + SHA256Managed._K[i] + expandedBuffer[i]; num8 = num11 + num9; num4 = num9 + SHA256Managed.Sigma_0(num17) + SHA256Managed.Maj(num17, num15, num13); i++; num9 = num12 + SHA256Managed.Sigma_1(num8) + SHA256Managed.Ch(num8, num16, num14) + SHA256Managed._K[i] + expandedBuffer[i]; num7 = num13 + num9; num3 = num9 + SHA256Managed.Sigma_0(num4) + SHA256Managed.Maj(num4, num17, num15); i++; num9 = num14 + SHA256Managed.Sigma_1(num7) + SHA256Managed.Ch(num7, num8, num16) + SHA256Managed._K[i] + expandedBuffer[i]; num6 = num15 + num9; num2 = num9 + SHA256Managed.Sigma_0(num3) + SHA256Managed.Maj(num3, num4, num17); i++; num9 = num16 + SHA256Managed.Sigma_1(num6) + SHA256Managed.Ch(num6, num7, num8) + SHA256Managed._K[i] + expandedBuffer[i]; num5 = num17 + num9; num = num9 + SHA256Managed.Sigma_0(num2) + SHA256Managed.Maj(num2, num3, num4); } *state += num; state[1] += num2; state[2] += num3; state[3] += num4; state[4] += num5; state[5] += num6; state[6] += num7; state[7] += num8; }
private static unsafe void SHATransform(uint *expandedBuffer, uint *state, byte *block) { uint num1 = *state; uint num2 = *(uint *)((IntPtr)state + 4); uint num3 = state[2]; uint num4 = state[3]; uint num5 = state[4]; uint num6 = state[5]; uint num7 = state[6]; uint num8 = state[7]; Utils.DWORDFromBigEndian(expandedBuffer, 16, block); SHA256Managed.SHA256Expand(expandedBuffer); int index1; for (int index2 = 0; index2 < 64; index2 = index1 + 1) { uint num9 = num8 + SHA256Managed.Sigma_1(num5) + SHA256Managed.Ch(num5, num6, num7) + SHA256Managed._K[index2] + expandedBuffer[index2]; uint num10 = num4 + num9; uint num11 = num9 + SHA256Managed.Sigma_0(num1) + SHA256Managed.Maj(num1, num2, num3); int index3 = index2 + 1; uint num12 = num7 + SHA256Managed.Sigma_1(num10) + SHA256Managed.Ch(num10, num5, num6) + SHA256Managed._K[index3] + expandedBuffer[index3]; uint num13 = num3 + num12; uint num14 = num12 + SHA256Managed.Sigma_0(num11) + SHA256Managed.Maj(num11, num1, num2); int index4 = index3 + 1; uint num15 = num6 + SHA256Managed.Sigma_1(num13) + SHA256Managed.Ch(num13, num10, num5) + SHA256Managed._K[index4] + expandedBuffer[index4]; uint num16 = num2 + num15; uint num17 = num15 + SHA256Managed.Sigma_0(num14) + SHA256Managed.Maj(num14, num11, num1); int index5 = index4 + 1; uint num18 = num5 + SHA256Managed.Sigma_1(num16) + SHA256Managed.Ch(num16, num13, num10) + SHA256Managed._K[index5] + expandedBuffer[index5]; uint num19 = num1 + num18; uint num20 = num18 + SHA256Managed.Sigma_0(num17) + SHA256Managed.Maj(num17, num14, num11); int index6 = index5 + 1; uint num21 = num10 + SHA256Managed.Sigma_1(num19) + SHA256Managed.Ch(num19, num16, num13) + SHA256Managed._K[index6] + expandedBuffer[index6]; num8 = num11 + num21; num4 = num21 + SHA256Managed.Sigma_0(num20) + SHA256Managed.Maj(num20, num17, num14); int index7 = index6 + 1; uint num22 = num13 + SHA256Managed.Sigma_1(num8) + SHA256Managed.Ch(num8, num19, num16) + SHA256Managed._K[index7] + expandedBuffer[index7]; num7 = num14 + num22; num3 = num22 + SHA256Managed.Sigma_0(num4) + SHA256Managed.Maj(num4, num20, num17); int index8 = index7 + 1; uint num23 = num16 + SHA256Managed.Sigma_1(num7) + SHA256Managed.Ch(num7, num8, num19) + SHA256Managed._K[index8] + expandedBuffer[index8]; num6 = num17 + num23; num2 = num23 + SHA256Managed.Sigma_0(num3) + SHA256Managed.Maj(num3, num4, num20); index1 = index8 + 1; uint num24 = num19 + SHA256Managed.Sigma_1(num6) + SHA256Managed.Ch(num6, num7, num8) + SHA256Managed._K[index1] + expandedBuffer[index1]; num5 = num20 + num24; num1 = num24 + SHA256Managed.Sigma_0(num2) + SHA256Managed.Maj(num2, num3, num4); } uint *numPtr = state; int num25 = (int)*numPtr + (int)num1; * numPtr = (uint)num25; IntPtr num26 = (IntPtr)state + 4; int num27 = (int)*(uint *)num26 + (int)num2; *(int *)num26 = num27; IntPtr num28 = (IntPtr)(state + 2); int num29 = (int)*(uint *)num28 + (int)num3; *(int *)num28 = num29; IntPtr num30 = (IntPtr)(state + 3); int num31 = (int)*(uint *)num30 + (int)num4; *(int *)num30 = num31; IntPtr num32 = (IntPtr)(state + 4); int num33 = (int)*(uint *)num32 + (int)num5; *(int *)num32 = num33; IntPtr num34 = (IntPtr)(state + 5); int num35 = (int)*(uint *)num34 + (int)num6; *(int *)num34 = num35; IntPtr num36 = (IntPtr)(state + 6); int num37 = (int)*(uint *)num36 + (int)num7; *(int *)num36 = num37; IntPtr num38 = (IntPtr)(state + 7); int num39 = (int)*(uint *)num38 + (int)num8; *(int *)num38 = num39; }