|
@@ -0,0 +1,1951 @@
|
|
|
+procedure SHA1Transform(var ctx: TSHA1Context; const Buf: Pointer);assembler;
|
|
|
+var
|
|
|
+ pctx:^TSHA1Context;
|
|
|
+ pbuf:pointer;
|
|
|
+ A, B, C, D, E, T: Cardinal;
|
|
|
+ Data: array[0..15] of Cardinal;
|
|
|
+
|
|
|
+{$asmmode intel}
|
|
|
+asm
|
|
|
+ push EAX
|
|
|
+ push EBX
|
|
|
+ push ECX
|
|
|
+ push EDX
|
|
|
+ push ESI
|
|
|
+ push EDI
|
|
|
+ push EBP
|
|
|
+
|
|
|
+ mov pctx, eax
|
|
|
+ mov pbuf, edx
|
|
|
+
|
|
|
+// Invert(Buf, @Data, 64);
|
|
|
+//Beginning of Invert
|
|
|
+ mov eax, edx//[pbuf]
|
|
|
+ mov ebx, [eax+0]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+0], ebx
|
|
|
+ mov ebx, [eax+4]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+4], ebx
|
|
|
+ mov ebx, [eax+8]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+8], ebx
|
|
|
+ mov ebx, [eax+12]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+12], ebx
|
|
|
+ mov ebx, [eax+16]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+16], ebx
|
|
|
+ mov ebx, [eax+20]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+20], ebx
|
|
|
+ mov ebx, [eax+24]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+24], ebx
|
|
|
+ mov ebx, [eax+28]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+28], ebx
|
|
|
+ mov ebx, [eax+32]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+32], ebx
|
|
|
+ mov ebx, [eax+36]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+36], ebx
|
|
|
+ mov ebx, [eax+40]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+40], ebx
|
|
|
+ mov ebx, [eax+44]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+44], ebx
|
|
|
+ mov ebx, [eax+48]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+48], ebx
|
|
|
+ mov ebx, [eax+52]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+52], ebx
|
|
|
+ mov ebx, [eax+56]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+56], ebx
|
|
|
+ mov ebx, [eax+60]
|
|
|
+ bswap ebx
|
|
|
+ mov [data+60], ebx
|
|
|
+//End of Invert
|
|
|
+
|
|
|
+// A := ctx.State[0];
|
|
|
+ mov EDI, pctx{.State}
|
|
|
+ mov EAX, [EDI]
|
|
|
+// B := ctx.State[1];
|
|
|
+ mov EBX, [EDI+4]
|
|
|
+// C := ctx.State[2];
|
|
|
+ mov ECX, [EDI+8]
|
|
|
+// D := ctx.State[3];
|
|
|
+ mov EDX, [EDI+12]
|
|
|
+// E := ctx.State[4];
|
|
|
+ mov ESI, [EDI+16]
|
|
|
+//i=0
|
|
|
+//* T := (EBX and ECX) or (not EBX and EDX) + K20 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[0];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*0]
|
|
|
+//* Data[0] := roldword(Data[0] xor Data[2] xor Data[8] xor Data[13], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*0], EDI
|
|
|
+
|
|
|
+//i=1
|
|
|
+//* T := (EAX and EBX) or (not EAX and ECX) + K20 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[1];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*1]
|
|
|
+//* Data[1] := roldword(Data[1] xor Data[3] xor Data[9] xor Data[14], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*1], EDI
|
|
|
+
|
|
|
+//i=2
|
|
|
+//* T := (ESI and EAX) or (not ESI and EBX) + K20 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[2];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*2]
|
|
|
+//* Data[2] := roldword(Data[2] xor Data[4] xor Data[10] xor Data[15], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*2], EDI
|
|
|
+
|
|
|
+//i=3
|
|
|
+//* T := (EDX and ESI) or (not EDX and EAX) + K20 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[3];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*3]
|
|
|
+//* Data[3] := roldword(Data[3] xor Data[5] xor Data[11] xor Data[0], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*3], EDI
|
|
|
+
|
|
|
+//i=4
|
|
|
+//* T := (ECX and EDX) or (not ECX and ESI) + K20 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[4];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*4]
|
|
|
+//* Data[4] := roldword(Data[4] xor Data[6] xor Data[12] xor Data[1], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*4], EDI
|
|
|
+
|
|
|
+//i=5
|
|
|
+//* T := (EBX and ECX) or (not EBX and EDX) + K20 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[5];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*5]
|
|
|
+//* Data[5] := roldword(Data[5] xor Data[7] xor Data[13] xor Data[2], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*5], EDI
|
|
|
+
|
|
|
+//i=6
|
|
|
+//* T := (EAX and EBX) or (not EAX and ECX) + K20 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[6];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*6]
|
|
|
+//* Data[6] := roldword(Data[6] xor Data[8] xor Data[14] xor Data[3], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*6], EDI
|
|
|
+
|
|
|
+//i=7
|
|
|
+//* T := (ESI and EAX) or (not ESI and EBX) + K20 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[7];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*7]
|
|
|
+//* Data[7] := roldword(Data[7] xor Data[9] xor Data[15] xor Data[4], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*7], EDI
|
|
|
+
|
|
|
+//i=8
|
|
|
+//* T := (EDX and ESI) or (not EDX and EAX) + K20 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[8];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*8]
|
|
|
+//* Data[8] := roldword(Data[8] xor Data[10] xor Data[0] xor Data[5], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*8], EDI
|
|
|
+
|
|
|
+//i=9
|
|
|
+//* T := (ECX and EDX) or (not ECX and ESI) + K20 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[9];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*9]
|
|
|
+//* Data[9] := roldword(Data[9] xor Data[11] xor Data[1] xor Data[6], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*9], EDI
|
|
|
+
|
|
|
+//i=10
|
|
|
+//* T := (EBX and ECX) or (not EBX and EDX) + K20 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[10];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*10]
|
|
|
+//* Data[10] := roldword(Data[10] xor Data[12] xor Data[2] xor Data[7], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*10], EDI
|
|
|
+
|
|
|
+//i=11
|
|
|
+//* T := (EAX and EBX) or (not EAX and ECX) + K20 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[11];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*11]
|
|
|
+//* Data[11] := roldword(Data[11] xor Data[13] xor Data[3] xor Data[8], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*11], EDI
|
|
|
+
|
|
|
+//i=12
|
|
|
+//* T := (ESI and EAX) or (not ESI and EBX) + K20 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[12];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*12]
|
|
|
+//* Data[12] := roldword(Data[12] xor Data[14] xor Data[4] xor Data[9], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*12], EDI
|
|
|
+
|
|
|
+//i=13
|
|
|
+//* T := (EDX and ESI) or (not EDX and EAX) + K20 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[13];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*13]
|
|
|
+//* Data[13] := roldword(Data[13] xor Data[15] xor Data[5] xor Data[10], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*13], EDI
|
|
|
+
|
|
|
+//i=14
|
|
|
+//* T := (ECX and EDX) or (not ECX and ESI) + K20 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[14];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*14]
|
|
|
+//* Data[14] := roldword(Data[14] xor Data[0] xor Data[6] xor Data[11], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*14], EDI
|
|
|
+
|
|
|
+//i=15
|
|
|
+//* T := (EBX and ECX) or (not EBX and EDX) + K20 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[15];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*15]
|
|
|
+//* Data[15] := roldword(Data[15] xor Data[1] xor Data[7] xor Data[12], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*15], EDI
|
|
|
+
|
|
|
+//i=16
|
|
|
+//* T := (EAX and EBX) or (not EAX and ECX) + K20 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[0];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*0]
|
|
|
+//* Data[0] := roldword(Data[0] xor Data[2] xor Data[8] xor Data[13], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*0], EDI
|
|
|
+
|
|
|
+//i=17
|
|
|
+//* T := (ESI and EAX) or (not ESI and EBX) + K20 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[1];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*1]
|
|
|
+//* Data[1] := roldword(Data[1] xor Data[3] xor Data[9] xor Data[14], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*1], EDI
|
|
|
+
|
|
|
+//i=18
|
|
|
+//* T := (EDX and ESI) or (not EDX and EAX) + K20 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[2];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*2]
|
|
|
+//* Data[2] := roldword(Data[2] xor Data[4] xor Data[10] xor Data[15], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*2], EDI
|
|
|
+
|
|
|
+//i=19
|
|
|
+//* T := (ECX and EDX) or (not ECX and ESI) + K20 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K20
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[3];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*3]
|
|
|
+//* Data[3] := roldword(Data[3] xor Data[5] xor Data[11] xor Data[0], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*3], EDI
|
|
|
+
|
|
|
+//i=20
|
|
|
+//* T := (EBX xor ECX xor EDX) + K40 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[4];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*4]
|
|
|
+//* Data[4] := roldword(Data[4] xor Data[6] xor Data[12] xor Data[1], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*4], EDI
|
|
|
+
|
|
|
+//i=21
|
|
|
+//* T := (EAX xor EBX xor ECX) + K40 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[5];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*5]
|
|
|
+//* Data[5] := roldword(Data[5] xor Data[7] xor Data[13] xor Data[2], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*5], EDI
|
|
|
+
|
|
|
+//i=22
|
|
|
+//* T := (ESI xor EAX xor EBX) + K40 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[6];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*6]
|
|
|
+//* Data[6] := roldword(Data[6] xor Data[8] xor Data[14] xor Data[3], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*6], EDI
|
|
|
+
|
|
|
+//i=23
|
|
|
+//* T := (EDX xor ESI xor EAX) + K40 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[7];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*7]
|
|
|
+//* Data[7] := roldword(Data[7] xor Data[9] xor Data[15] xor Data[4], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*7], EDI
|
|
|
+
|
|
|
+//i=24
|
|
|
+//* T := (ECX xor EDX xor ESI) + K40 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[8];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*8]
|
|
|
+//* Data[8] := roldword(Data[8] xor Data[10] xor Data[0] xor Data[5], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*8], EDI
|
|
|
+
|
|
|
+//i=25
|
|
|
+//* T := (EBX xor ECX xor EDX) + K40 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[9];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*9]
|
|
|
+//* Data[9] := roldword(Data[9] xor Data[11] xor Data[1] xor Data[6], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*9], EDI
|
|
|
+
|
|
|
+//i=26
|
|
|
+//* T := (EAX xor EBX xor ECX) + K40 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[10];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*10]
|
|
|
+//* Data[10] := roldword(Data[10] xor Data[12] xor Data[2] xor Data[7], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*10], EDI
|
|
|
+
|
|
|
+//i=27
|
|
|
+//* T := (ESI xor EAX xor EBX) + K40 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[11];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*11]
|
|
|
+//* Data[11] := roldword(Data[11] xor Data[13] xor Data[3] xor Data[8], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*11], EDI
|
|
|
+
|
|
|
+//i=28
|
|
|
+//* T := (EDX xor ESI xor EAX) + K40 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[12];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*12]
|
|
|
+//* Data[12] := roldword(Data[12] xor Data[14] xor Data[4] xor Data[9], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*12], EDI
|
|
|
+
|
|
|
+//i=29
|
|
|
+//* T := (ECX xor EDX xor ESI) + K40 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[13];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*13]
|
|
|
+//* Data[13] := roldword(Data[13] xor Data[15] xor Data[5] xor Data[10], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*13], EDI
|
|
|
+
|
|
|
+//i=30
|
|
|
+//* T := (EBX xor ECX xor EDX) + K40 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[14];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*14]
|
|
|
+//* Data[14] := roldword(Data[14] xor Data[0] xor Data[6] xor Data[11], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*14], EDI
|
|
|
+
|
|
|
+//i=31
|
|
|
+//* T := (EAX xor EBX xor ECX) + K40 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[15];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*15]
|
|
|
+//* Data[15] := roldword(Data[15] xor Data[1] xor Data[7] xor Data[12], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*15], EDI
|
|
|
+
|
|
|
+//i=32
|
|
|
+//* T := (ESI xor EAX xor EBX) + K40 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[0];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*0]
|
|
|
+//* Data[0] := roldword(Data[0] xor Data[2] xor Data[8] xor Data[13], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*0], EDI
|
|
|
+
|
|
|
+//i=33
|
|
|
+//* T := (EDX xor ESI xor EAX) + K40 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[1];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*1]
|
|
|
+//* Data[1] := roldword(Data[1] xor Data[3] xor Data[9] xor Data[14], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*1], EDI
|
|
|
+
|
|
|
+//i=34
|
|
|
+//* T := (ECX xor EDX xor ESI) + K40 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[2];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*2]
|
|
|
+//* Data[2] := roldword(Data[2] xor Data[4] xor Data[10] xor Data[15], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*2], EDI
|
|
|
+
|
|
|
+//i=35
|
|
|
+//* T := (EBX xor ECX xor EDX) + K40 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[3];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*3]
|
|
|
+//* Data[3] := roldword(Data[3] xor Data[5] xor Data[11] xor Data[0], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*3], EDI
|
|
|
+
|
|
|
+//i=36
|
|
|
+//* T := (EAX xor EBX xor ECX) + K40 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[4];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*4]
|
|
|
+//* Data[4] := roldword(Data[4] xor Data[6] xor Data[12] xor Data[1], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*4], EDI
|
|
|
+
|
|
|
+//i=37
|
|
|
+//* T := (ESI xor EAX xor EBX) + K40 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[5];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*5]
|
|
|
+//* Data[5] := roldword(Data[5] xor Data[7] xor Data[13] xor Data[2], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*5], EDI
|
|
|
+
|
|
|
+//i=38
|
|
|
+//* T := (EDX xor ESI xor EAX) + K40 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[6];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*6]
|
|
|
+//* Data[6] := roldword(Data[6] xor Data[8] xor Data[14] xor Data[3], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*6], EDI
|
|
|
+
|
|
|
+//i=39
|
|
|
+//* T := (ECX xor EDX xor ESI) + K40 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K40
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[7];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*7]
|
|
|
+//* Data[7] := roldword(Data[7] xor Data[9] xor Data[15] xor Data[4], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*7], EDI
|
|
|
+
|
|
|
+//i=40
|
|
|
+//* T := (EBX and ECX) or (EBX and EDX) or (ECX and EDX) + K60 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ mov EBP, ECX
|
|
|
+ or EDI, EDX
|
|
|
+ and EBP, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[8];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*8]
|
|
|
+//* Data[8] := roldword(Data[8] xor Data[10] xor Data[0] xor Data[5], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*8], EDI
|
|
|
+
|
|
|
+//i=41
|
|
|
+//* T := (EAX and EBX) or (EAX and ECX) or (EBX and ECX) + K60 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ mov EBP, EBX
|
|
|
+ or EDI, ECX
|
|
|
+ and EBP, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[9];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*9]
|
|
|
+//* Data[9] := roldword(Data[9] xor Data[11] xor Data[1] xor Data[6], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*9], EDI
|
|
|
+
|
|
|
+//i=42
|
|
|
+//* T := (ESI and EAX) or (ESI and EBX) or (EAX and EBX) + K60 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ mov EBP, EAX
|
|
|
+ or EDI, EBX
|
|
|
+ and EBP, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[10];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*10]
|
|
|
+//* Data[10] := roldword(Data[10] xor Data[12] xor Data[2] xor Data[7], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*10], EDI
|
|
|
+
|
|
|
+//i=43
|
|
|
+//* T := (EDX and ESI) or (EDX and EAX) or (ESI and EAX) + K60 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ mov EBP, ESI
|
|
|
+ or EDI, EAX
|
|
|
+ and EBP, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[11];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*11]
|
|
|
+//* Data[11] := roldword(Data[11] xor Data[13] xor Data[3] xor Data[8], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*11], EDI
|
|
|
+
|
|
|
+//i=44
|
|
|
+//* T := (ECX and EDX) or (ECX and ESI) or (EDX and ESI) + K60 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ mov EBP, EDX
|
|
|
+ or EDI, ESI
|
|
|
+ and EBP, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[12];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*12]
|
|
|
+//* Data[12] := roldword(Data[12] xor Data[14] xor Data[4] xor Data[9], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*12], EDI
|
|
|
+
|
|
|
+//i=45
|
|
|
+//* T := (EBX and ECX) or (EBX and EDX) or (ECX and EDX) + K60 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ mov EBP, ECX
|
|
|
+ or EDI, EDX
|
|
|
+ and EBP, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[13];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*13]
|
|
|
+//* Data[13] := roldword(Data[13] xor Data[15] xor Data[5] xor Data[10], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*13], EDI
|
|
|
+
|
|
|
+//i=46
|
|
|
+//* T := (EAX and EBX) or (EAX and ECX) or (EBX and ECX) + K60 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ mov EBP, EBX
|
|
|
+ or EDI, ECX
|
|
|
+ and EBP, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[14];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*14]
|
|
|
+//* Data[14] := roldword(Data[14] xor Data[0] xor Data[6] xor Data[11], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*14], EDI
|
|
|
+
|
|
|
+//i=47
|
|
|
+//* T := (ESI and EAX) or (ESI and EBX) or (EAX and EBX) + K60 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ mov EBP, EAX
|
|
|
+ or EDI, EBX
|
|
|
+ and EBP, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[15];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*15]
|
|
|
+//* Data[15] := roldword(Data[15] xor Data[1] xor Data[7] xor Data[12], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*15], EDI
|
|
|
+
|
|
|
+//i=48
|
|
|
+//* T := (EDX and ESI) or (EDX and EAX) or (ESI and EAX) + K60 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ mov EBP, ESI
|
|
|
+ or EDI, EAX
|
|
|
+ and EBP, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[0];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*0]
|
|
|
+//* Data[0] := roldword(Data[0] xor Data[2] xor Data[8] xor Data[13], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*0], EDI
|
|
|
+
|
|
|
+//i=49
|
|
|
+//* T := (ECX and EDX) or (ECX and ESI) or (EDX and ESI) + K60 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ mov EBP, EDX
|
|
|
+ or EDI, ESI
|
|
|
+ and EBP, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[1];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*1]
|
|
|
+//* Data[1] := roldword(Data[1] xor Data[3] xor Data[9] xor Data[14], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*1], EDI
|
|
|
+
|
|
|
+//i=50
|
|
|
+//* T := (EBX and ECX) or (EBX and EDX) or (ECX and EDX) + K60 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ mov EBP, ECX
|
|
|
+ or EDI, EDX
|
|
|
+ and EBP, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[2];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*2]
|
|
|
+//* Data[2] := roldword(Data[2] xor Data[4] xor Data[10] xor Data[15], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*2], EDI
|
|
|
+
|
|
|
+//i=51
|
|
|
+//* T := (EAX and EBX) or (EAX and ECX) or (EBX and ECX) + K60 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ mov EBP, EBX
|
|
|
+ or EDI, ECX
|
|
|
+ and EBP, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[3];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*3]
|
|
|
+//* Data[3] := roldword(Data[3] xor Data[5] xor Data[11] xor Data[0], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*3], EDI
|
|
|
+
|
|
|
+//i=52
|
|
|
+//* T := (ESI and EAX) or (ESI and EBX) or (EAX and EBX) + K60 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ mov EBP, EAX
|
|
|
+ or EDI, EBX
|
|
|
+ and EBP, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[4];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*4]
|
|
|
+//* Data[4] := roldword(Data[4] xor Data[6] xor Data[12] xor Data[1], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*4], EDI
|
|
|
+
|
|
|
+//i=53
|
|
|
+//* T := (EDX and ESI) or (EDX and EAX) or (ESI and EAX) + K60 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ mov EBP, ESI
|
|
|
+ or EDI, EAX
|
|
|
+ and EBP, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[5];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*5]
|
|
|
+//* Data[5] := roldword(Data[5] xor Data[7] xor Data[13] xor Data[2], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*5], EDI
|
|
|
+
|
|
|
+//i=54
|
|
|
+//* T := (ECX and EDX) or (ECX and ESI) or (EDX and ESI) + K60 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ mov EBP, EDX
|
|
|
+ or EDI, ESI
|
|
|
+ and EBP, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[6];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*6]
|
|
|
+//* Data[6] := roldword(Data[6] xor Data[8] xor Data[14] xor Data[3], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*6], EDI
|
|
|
+
|
|
|
+//i=55
|
|
|
+//* T := (EBX and ECX) or (EBX and EDX) or (ECX and EDX) + K60 + ESI;
|
|
|
+ mov EDI, ECX
|
|
|
+ mov EBP, ECX
|
|
|
+ or EDI, EDX
|
|
|
+ and EBP, EDX
|
|
|
+ and EDI, EBX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[7];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*7]
|
|
|
+//* Data[7] := roldword(Data[7] xor Data[9] xor Data[15] xor Data[4], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*7], EDI
|
|
|
+
|
|
|
+//i=56
|
|
|
+//* T := (EAX and EBX) or (EAX and ECX) or (EBX and ECX) + K60 + EDX;
|
|
|
+ mov EDI, EBX
|
|
|
+ mov EBP, EBX
|
|
|
+ or EDI, ECX
|
|
|
+ and EBP, ECX
|
|
|
+ and EDI, EAX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[8];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*8]
|
|
|
+//* Data[8] := roldword(Data[8] xor Data[10] xor Data[0] xor Data[5], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*8], EDI
|
|
|
+
|
|
|
+//i=57
|
|
|
+//* T := (ESI and EAX) or (ESI and EBX) or (EAX and EBX) + K60 + ECX;
|
|
|
+ mov EDI, EAX
|
|
|
+ mov EBP, EAX
|
|
|
+ or EDI, EBX
|
|
|
+ and EBP, EBX
|
|
|
+ and EDI, ESI
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[9];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*9]
|
|
|
+//* Data[9] := roldword(Data[9] xor Data[11] xor Data[1] xor Data[6], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*9], EDI
|
|
|
+
|
|
|
+//i=58
|
|
|
+//* T := (EDX and ESI) or (EDX and EAX) or (ESI and EAX) + K60 + EBX;
|
|
|
+ mov EDI, ESI
|
|
|
+ mov EBP, ESI
|
|
|
+ or EDI, EAX
|
|
|
+ and EBP, EAX
|
|
|
+ and EDI, EDX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[10];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*10]
|
|
|
+//* Data[10] := roldword(Data[10] xor Data[12] xor Data[2] xor Data[7], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*10], EDI
|
|
|
+
|
|
|
+//i=59
|
|
|
+//* T := (ECX and EDX) or (ECX and ESI) or (EDX and ESI) + K60 + EAX;
|
|
|
+ mov EDI, EDX
|
|
|
+ mov EBP, EDX
|
|
|
+ or EDI, ESI
|
|
|
+ and EBP, ESI
|
|
|
+ and EDI, ECX
|
|
|
+ or EDI, EBP
|
|
|
+ add EDI, K60
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[11];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*11]
|
|
|
+//* Data[11] := roldword(Data[11] xor Data[13] xor Data[3] xor Data[8], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*11], EDI
|
|
|
+
|
|
|
+//i=60
|
|
|
+//* T := (EBX xor ECX xor EDX) + K80 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[12];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*12]
|
|
|
+//* Data[12] := roldword(Data[12] xor Data[14] xor Data[4] xor Data[9], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*12], EDI
|
|
|
+
|
|
|
+//i=61
|
|
|
+//* T := (EAX xor EBX xor ECX) + K80 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[13];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*13]
|
|
|
+//* Data[13] := roldword(Data[13] xor Data[15] xor Data[5] xor Data[10], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*13], EDI
|
|
|
+
|
|
|
+//i=62
|
|
|
+//* T := (ESI xor EAX xor EBX) + K80 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[14];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*14]
|
|
|
+//* Data[14] := roldword(Data[14] xor Data[0] xor Data[6] xor Data[11], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*14], EDI
|
|
|
+
|
|
|
+//i=63
|
|
|
+//* T := (EDX xor ESI xor EAX) + K80 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[15];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*15]
|
|
|
+//* Data[15] := roldword(Data[15] xor Data[1] xor Data[7] xor Data[12], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*15], EDI
|
|
|
+
|
|
|
+//i=64
|
|
|
+//* T := (ECX xor EDX xor ESI) + K80 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[0];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*0]
|
|
|
+//* Data[0] := roldword(Data[0] xor Data[2] xor Data[8] xor Data[13], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*0], EDI
|
|
|
+
|
|
|
+//i=65
|
|
|
+//* T := (EBX xor ECX xor EDX) + K80 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[1];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*1]
|
|
|
+//* Data[1] := roldword(Data[1] xor Data[3] xor Data[9] xor Data[14], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*1], EDI
|
|
|
+
|
|
|
+//i=66
|
|
|
+//* T := (EAX xor EBX xor ECX) + K80 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[2];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*2]
|
|
|
+//* Data[2] := roldword(Data[2] xor Data[4] xor Data[10] xor Data[15], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*2], EDI
|
|
|
+
|
|
|
+//i=67
|
|
|
+//* T := (ESI xor EAX xor EBX) + K80 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[3];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*3]
|
|
|
+//* Data[3] := roldword(Data[3] xor Data[5] xor Data[11] xor Data[0], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*3], EDI
|
|
|
+
|
|
|
+//i=68
|
|
|
+//* T := (EDX xor ESI xor EAX) + K80 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[4];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*4]
|
|
|
+//* Data[4] := roldword(Data[4] xor Data[6] xor Data[12] xor Data[1], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*4], EDI
|
|
|
+
|
|
|
+//i=69
|
|
|
+//* T := (ECX xor EDX xor ESI) + K80 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[5];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*5]
|
|
|
+//* Data[5] := roldword(Data[5] xor Data[7] xor Data[13] xor Data[2], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*5], EDI
|
|
|
+
|
|
|
+//i=70
|
|
|
+//* T := (EBX xor ECX xor EDX) + K80 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[6];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*6]
|
|
|
+//* Data[6] := roldword(Data[6] xor Data[8] xor Data[14] xor Data[3], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*6], EDI
|
|
|
+
|
|
|
+//i=71
|
|
|
+//* T := (EAX xor EBX xor ECX) + K80 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[7];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*7]
|
|
|
+//* Data[7] := roldword(Data[7] xor Data[9] xor Data[15] xor Data[4], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*7], EDI
|
|
|
+
|
|
|
+//i=72
|
|
|
+//* T := (ESI xor EAX xor EBX) + K80 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[8];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*8]
|
|
|
+//* Data[8] := roldword(Data[8] xor Data[10] xor Data[0] xor Data[5], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*8]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*8], EDI
|
|
|
+
|
|
|
+//i=73
|
|
|
+//* T := (EDX xor ESI xor EAX) + K80 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[9];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*9]
|
|
|
+//* Data[9] := roldword(Data[9] xor Data[11] xor Data[1] xor Data[6], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*9]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*9], EDI
|
|
|
+
|
|
|
+//i=74
|
|
|
+//* T := (ECX xor EDX xor ESI) + K80 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[10];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*10]
|
|
|
+//* Data[10] := roldword(Data[10] xor Data[12] xor Data[2] xor Data[7], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*10]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*2]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*10], EDI
|
|
|
+
|
|
|
+//i=75
|
|
|
+//* T := (EBX xor ECX xor EDX) + K80 + ESI;
|
|
|
+ mov EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ESI
|
|
|
+//* EBX := rordword(EBX, 2);
|
|
|
+ ror EBX, 2
|
|
|
+//* ESI := T + roldword(EAX, 5) + Data[11];
|
|
|
+ mov ESI, EAX
|
|
|
+ rol ESI, 5
|
|
|
+ add ESI, EDI
|
|
|
+ add ESI, [esp+96-96+4*7+4*11]
|
|
|
+//* Data[11] := roldword(Data[11] xor Data[13] xor Data[3] xor Data[8], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*11]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*3]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*8]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*11], EDI
|
|
|
+
|
|
|
+//i=76
|
|
|
+//* T := (EAX xor EBX xor ECX) + K80 + EDX;
|
|
|
+ mov EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ xor EDI, ECX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EDX
|
|
|
+//* EAX := rordword(EAX, 2);
|
|
|
+ ror EAX, 2
|
|
|
+//* EDX := T + roldword(ESI, 5) + Data[12];
|
|
|
+ mov EDX, ESI
|
|
|
+ rol EDX, 5
|
|
|
+ add EDX, EDI
|
|
|
+ add EDX, [esp+96-96+4*7+4*12]
|
|
|
+//* Data[12] := roldword(Data[12] xor Data[14] xor Data[4] xor Data[9], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*12]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*4]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*9]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*12], EDI
|
|
|
+
|
|
|
+//i=77
|
|
|
+//* T := (ESI xor EAX xor EBX) + K80 + ECX;
|
|
|
+ mov EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ xor EDI, EBX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, ECX
|
|
|
+//* ESI := rordword(ESI, 2);
|
|
|
+ ror ESI, 2
|
|
|
+//* ECX := T + roldword(EDX, 5) + Data[13];
|
|
|
+ mov ECX, EDX
|
|
|
+ rol ECX, 5
|
|
|
+ add ECX, EDI
|
|
|
+ add ECX, [esp+96-96+4*7+4*13]
|
|
|
+//* Data[13] := roldword(Data[13] xor Data[15] xor Data[5] xor Data[10], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*13]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*5]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*10]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*13], EDI
|
|
|
+
|
|
|
+//i=78
|
|
|
+//* T := (EDX xor ESI xor EAX) + K80 + EBX;
|
|
|
+ mov EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ xor EDI, EAX
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EBX
|
|
|
+//* EDX := rordword(EDX, 2);
|
|
|
+ ror EDX, 2
|
|
|
+//* EBX := T + roldword(ECX, 5) + Data[14];
|
|
|
+ mov EBX, ECX
|
|
|
+ rol EBX, 5
|
|
|
+ add EBX, EDI
|
|
|
+ add EBX, [esp+96-96+4*7+4*14]
|
|
|
+//* Data[14] := roldword(Data[14] xor Data[0] xor Data[6] xor Data[11], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*14]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*0]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*6]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*11]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*14], EDI
|
|
|
+
|
|
|
+//i=79
|
|
|
+//* T := (ECX xor EDX xor ESI) + K80 + EAX;
|
|
|
+ mov EDI, ECX
|
|
|
+ xor EDI, EDX
|
|
|
+ xor EDI, ESI
|
|
|
+ add EDI, K80
|
|
|
+ add EDI, EAX
|
|
|
+//* ECX := rordword(ECX, 2);
|
|
|
+ ror ECX, 2
|
|
|
+//* EAX := T + roldword(EBX, 5) + Data[15];
|
|
|
+ mov EAX, EBX
|
|
|
+ rol EAX, 5
|
|
|
+ add EAX, EDI
|
|
|
+ add EAX, [esp+96-96+4*7+4*15]
|
|
|
+//* Data[15] := roldword(Data[15] xor Data[1] xor Data[7] xor Data[12], 1);
|
|
|
+ mov EDI, [esp+96-96+4*7+4*15]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*1]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*7]
|
|
|
+ xor EDI, [esp+96-96+4*7+4*12]
|
|
|
+ rol EDI, 1
|
|
|
+ mov [esp+96-96+4*7+4*15], EDI
|
|
|
+
|
|
|
+ pop EBP
|
|
|
+
|
|
|
+ mov EDI, [pctx{.State}]
|
|
|
+// Inc(ctx.State[0], A);
|
|
|
+ add [EDI+4*0], EAX
|
|
|
+// Inc(ctx.State[1], B);
|
|
|
+ add [EDI+4*1], EBX
|
|
|
+// Inc(ctx.State[2], C);
|
|
|
+ add [EDI+4*2], ECX
|
|
|
+// Inc(ctx.State[3], D);
|
|
|
+ add [EDI+4*3], EDX
|
|
|
+// Inc(ctx.State[4], E);
|
|
|
+ add [EDI+4*4], ESI
|
|
|
+
|
|
|
+//Inc(ctx.Length,64);
|
|
|
+ mov eax, [ebp-4]
|
|
|
+ add dword ptr [eax+88],64
|
|
|
+ adc dword ptr [eax+92],0
|
|
|
+
|
|
|
+ pop EDI
|
|
|
+ pop ESI
|
|
|
+ pop EDX
|
|
|
+ pop ECX
|
|
|
+ pop EBX
|
|
|
+ pop EAX
|
|
|
+end;
|
|
|
+
|