OPTION DOTNAME
include includes\temphls.inc
include includes\win64.inc
include includes\user32.inc
includelib includes\user32.lib
OPTION PROLOGUE:PrologueDef 
OPTION EPILOGUE:EpilogueDef
.data
	AppName: ;DLL Skeleton
		dw 0044h,004ch,004ch,0020h,0053h,006bh,0065h,006ch,0065h,0074h,006fh,006eh,0000h 
	HelloMsg: ;Вызвана функция TestHello
		dw 0412h,044bh,0437h,0432h,0430h,043dh,0430h,0020h,0444h,0443h,043dh,043ah,0446h,0438h,044fh,0020h,0054h,0065h,0073h,0074h,0048h,0065h,006ch,006ch,006fh,0000h 
	LoadMsg: ;DLL Загружена
		dw 0044h,004ch,004ch,0020h,0417h,0430h,0433h,0440h,0443h,0436h,0435h,043dh,0430h,0000h 
	UnloadMsg: ;DLL выгружена
		dw 0044h,004ch,004ch,0020h,0432h,044bh,0433h,0440h,0443h,0436h,0435h,043dh,0430h,0000h 
	SHAMsg: ;"SHA256 Запущена!"
		dw 0053h,0048h,0041h,0032h,0035h,0036h,0020h,0417h,0430h,043fh,0443h,0449h,0435h,043dh,0430h,0021h,0000h 
	
	DllAtata: ;Неожиданно прилетел DLL_THREAD_ATTACH
	 	dw 041dh,0435h,043eh,0436h,0438h,0434h,0430h,043dh,043dh,043eh,0020h,043fh,0440h,0438h,043bh,0435h,0442h,0435h,043bh,0020h,0044h,004ch,004ch,005fh,0054h,0048h,0052h,0045h,0041h,0044h,005fh,0041h,0054h,0054h,0041h,0043h,0048h,0000h
	prime2nums: ;Простые числа от 2 до 311 
				dw 02h,03h,05h,07h,0Bh,0Dh,11h,13h,17h,1Dh,1Fh,25h,29h,2Bh,2Fh,35h,3Bh,3Dh,43h,47h,49h,4Fh,53h,59h
				dw 61h,65h,67h,6Bh,6Dh,71h,7Fh,83h,89h,8Bh,95h,97h,9Dh,0A3h,0A7h,0ADh,0B3h,0B5h,0BFh,0C1h,0C5h,0C7h,0D3h,0DFh
				dw 0E3h,0E5h,0E9h,0EFh,0F1h,0FBh,101h,107h,10Dh,10Fh,115h,119h,11Bh,125h,133h,137h
	
	DllDetata: ;Неожиданно прилетел DLL_PROCESS_DETACH
	 	dw 041dh,0435h,043eh,0436h,0438h,0434h,0430h,043dh,043dh,043eh,0020h,043fh,0440h,0438h,043bh,0435h,0442h,0435h,\
		 043bh,0020h,0044h,004ch,004ch,005fh,0050h,0052h,004fh,0043h,0045h,0053h,0053h,005fh,0044h,0045h,0054h,0041h,0043h,0048h,0000h
	
	prime_nums: ; 8 байт с простыми числами от 2 до 19
	 	db 8 dup (0)	
	align 16	
	k_konst dd 64 dup (0)	;64 32-битных значения инициированных первыми 32 битами дробной части кубических корней от 2 о 311
	align 16
	my3sqrt REAL8 0.3333333333333333333333333333
	;xmminst dq 12232434,13342342342

.code
DllMain proc hInstDLL:QWORD, reason:QWORD, unused:QWORD
	;push rbp
	;mov	rbp,rsp
	;sub rsp,28h
	.if edx==DLL_PROCESS_ATTACH				;Обрабатываю событие вызова DLL
		call _isAvxSupported
		pshufd xmm0,xmm0,10010011b			;Перераспределяет 32-битные qword'ы в xmm согласно битовой маске: 2 бита, числа от 0-3 сообщают
		pshufd xmm0,xmm0,10010011b			;слева направо новое расположение qword'ов в регистре XMM. Например: 3-2-1-0 -> 2-1-0-3(10010011b)
		pshufd xmm0,xmm0,10010011b
		pshufd xmm0,xmm0,10010011b
		mov eax,001020304h					;вычисляю Σ0
		xor rcx,rcx
		ror eax,2
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		ror eax,9
		xor ecx,eax
		;вычисляю ключ
		mov eax,001020304h
		xor eax,ecx
		mov edx,eax 	; в EDX - ключ
		mov eax,001020304h
		xor eax,edx
		;смотрю, подходит ли он для других чисел
		mov eax,005040304h					;вычисляю Σ0
		xor rcx,rcx
		ror eax,2
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		ror eax,9
		xor ecx,eax
		;Подставляю ключ из первого примера
		mov eax,005040304h
		xor eax,edx
		lea rdx,LoadMsg						;Указатель на сообщение "DLL загружена"
	.elseif edx==DLL_PROCESS_DETACH			;Обрабатываю событие закрытия DLL
		lea rdx,UnloadMsg					;Указатель на сообщение "DLL выгружена"
	.elseif edx==DLL_THREAD_ATTACH			;Обрабатываю событие создания треда в вызывающем процессе
											;(ох и попило крови это событие: не обрабатывал, а по-умолчанию падало на другой обработчик)
		;lea rdx,DllAtata					;Указатель на сообщение "неожиданно прилетел DLL_THREAD_ATTACH"
		;add rsp,28h							;восстанавливаю вершину стека
		xor rax,rax							;возвращаю ноль
		ret									;Выхожу
	.elseif edx==DLL_THREAD_DETACH			;Обрабатываю событие закрытия треда в вызывающем процессе 
		;lea rdx,DllDetata					;Указатель на сообщение "Неожиданно прилетел DLL_PROCESS_DETACH"
		;add rsp,28h							;восстанавливаю вершину стека
		xor rax,rax							;возвращаю ноль
		ret									;Выхожу
	.endif 
	mov r9d,MB_OK							;
	jmp exit
DllMain Endp
TestHello proc 
	;sub rsp,28h
	lea rdx,HelloMsg
	mov r9d,MB_OK + MB_ICONERROR
exit::	lea r8,AppName
	xor rcx,rcx
	call MessageBoxW
	;mov rsp,rbp
	;pop rbp
	;add rsp,28h
	mov rax,TRUE
	leave
	ret
TestHello endp
; Sha256 - хэш-Функция. Возвращаемое значение: NULL в случае успеха, CF_digests заполняется хэш-суммой.
	;1-CF_Addr-Адрес хешируемого объекта:QWORD
	;2-CF_FullSize-его полный размер:QWORD
	;3-CF_CurrSize-Размер отрезка:QWORD
	;4-CF_digests-адрес 8 байт хэша (если ноль, то это первый отрезок):QWORD
	;5-CF_Last-последний ли он?:QWORD
	align 16
Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,CF_Last:QWORD
	LOCAL myXMMSAVE[10]:xmmword 	;локальная область для сохранения/восстановления регистров XMM6-XMM15 (неизменяемые)
	LOCAL myRnSAVE[4]:QWORD			;локальная область для сохранения/восстановления регистров R12-R15 (неизменяемые)
	LOCAL myBuff2Hash[8]:DWORD	;локальная область, куда будут перекинуты данные для хэширования
	LOCAL lastblock[32]:DWORD	;32 двойных слова (1024 бит) - место для одного или двух блоков дописанного кончания файла (блока)
	LOCAL lastblocksize:DWORD	;тут интересен только последний бит: 0-переполнения не было, окончание 512 бит; 1-переполнение было, окончание 1024 бита
	LOCAL myOffset2End:QWORD	;локальная переменная для сохранения смещения до последнего байта хэшируемого отрезка
	LOCAL cyclesInSegment:DWORD	;локальная переменная для сохранения количества циклов перебора отрезка. Перебирается весь отрезок кроме "хвоста"
	LOCAL endingOfSegment:DWORD ;локальная переменная для сохранения размера хвоста файла<=64,который необходимо закончить по SHA-256
	;Сохраняю входные данные	
		mov CF_Addr,rcx ;Сохраняю адрес объекта
		mov CF_FullSize,rdx ;Сохраняю его полный размер
		mov CF_CurrSize,r8	;Сохраняю размер данного отрезка
		mov CF_digests,r9	;Адрес хэша
		;mov rax,[rbp+32]
		;mov CF_Last,rax		;Сохреняю флаг, последний-ли отрезок
	;Сохраняю в выровненную локальную область 10  XMM Регистров  с XMM6-XMM15, r12-r15.
		movdqu myXMMSAVE,XMM6
		movdqu myXMMSAVE+16,XMM7
		movdqu myXMMSAVE+32,XMM8
		movdqu myXMMSAVE+48,XMM9
		movdqu myXMMSAVE+64,XMM10
		movdqu myXMMSAVE+80,XMM11
		movdqu myXMMSAVE+96,XMM12
		movdqu myXMMSAVE+112,XMM13
		movdqu myXMMSAVE+128,XMM14
		movdqu myXMMSAVE+144,XMM15
		mov myRnSAVE,r12
		mov myRnSAVE+4,r13
		mov myRnSAVE+8,r14
		mov myRnSAVE+12,r15
	;если хэш по предложенному адресу = 0, запускаем Sha256Init
		mov rax,qword ptr [r9]
		add r9,8
		or rax,qword ptr [r9]
		add r9,8
		or rax,qword ptr [r9]
		add r9,8
		or rax,qword ptr [r9]
		test rax,rax
		jnz Inithash
		mov rcx,CF_digests
		call Sha256Init
	Inithash:	;Инициирую R12D-r15D (ХЭШ)
		mov rax,CF_digests
		mov r12,QWORD PTR [rax]
		;bswap r12	;привожу в прямой порядок байт r12
		mov r13,QWORD PTR [rax+8]
		;bswap r13	;привожу в прямой порядок байт r13
		mov r14,QWORD PTR [rax+16]
		;bswap r14	;привожу в прямой порядок байт r14
		mov r15,QWORD PTR [rax+24]
		;bswap r15	;привожу в прямой порядок байт r15
	;Является ли массив последним?
		mov rax,CF_Last
		cmp rax,1 ;1-блок является последним
		jnz cycleCheck
	;Да. Копирую окончание массива в локальную область. Заканчиваю блок
		mov lastblocksize,0	; инициирцю lastblocksize. 0, значит - переполнения не было и дописанный "хвост" будет умещён в 1 блок 
		mov rax,CF_FullSize	; В rax=полный размер файла
		xor rdx,rdx			; Обнуляю RDX т.к. он участвукт в расчётах
		mov rbx,CF_CurrSize ; в rbx=размер отрезка
		div rbx				; делю по модулю rax/rbx
		mov myOffset2End,rdx ; в rdx теперь смещение до конца файла в отрезке
		mov rax,rdx			; сохраняю rdx для следующего деления
		xor rdx,rdx			; Обнуляю RDX т.к. он участвукт в расчётах
		mov rbx,64			; в rbx=64-х байтный отрезок, размер хешированя sha256 
		div rbx				; делю по модулю rax/rbx
		mov cyclesInSegment,eax	;в rax теперь количество ЦЕЛЫХ отрезков по 64 байта в массиве
		mov endingOfSegment,edx ;в rdx теперь остаток от деления по модулю 64 (отрезок,<64 байта,который необходимо закончить по SHA-256 )
		mov rax,CF_Addr		;--------------------------------------|
		add rax,myOffset2End;Получаю адрес начала "хвоста" массива-|
		sub rax,rdx			;--------------------------------------|
		cmp rdx,56			;сравниваю "хвост" с 56 (448)
		jb endingofsegment1	;Переходим, если меньше
		mov lastblocksize,1	;сообщаю, что произойдёт переполнение и блока будет 2 (1024 бита)
		endingofsegment1:	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		lea rcx,lastblock	;rcx - указатель									┃
		endingofsegment2:	;													┃
		mov bl,[rax]		;	перебрасываю хвост в локальную область			┃
		mov [rcx],bl		;	оптимизировать!!! наверняка - жуткий тормоз!!!	┃
		inc rax				;													┃
		inc rcx				;													┃
		dec rdx				;													┃
		jnz endingofsegment2;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
		mov BYTE ptr [rcx],128	;дописываю 1 и 7 бит
		mov edx,endingOfSegment
		inc rdx				;в rdx - длинна хвоста + 8 бит
		cmp lastblocksize,1 ;далее разный расчёт в зависимости от того было ли переполнение или нет.
		je endingofsegment3	;если переполнение было, то посылаем на endingofsegment3
		mov rcx,56
		sub rcx,rdx			;в rcx количество байт, необходимых для дописания нулей до значения 56 (448 бит)
		jmp endingofsegment4
		endingofsegment3:
		mov rcx,120
		sub rcx,rdx			;в rcx количество байт, необходимых для дописания нулей до значения 120 (960 бит)
		endingofsegment4:
		lea rax,lastblock
		add rax,rdx			;в rax следующий байт за дописанным 10000000
		loop_endingofsegment:		;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		cmp rcx,0					;													┃
		je end_loop_endingofsegment	;													┃
		mov BYTE PTR [rax],0		;заполняю нулями до кратного 56 или 120 байт		┃
		inc rax						;													┃
		dec rcx						;													┃
		jmp loop_endingofsegment	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
		end_loop_endingofsegment:	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
		mov rbx,CF_FullSize			;													┃
		shl rbx,3					;дописываю в конец 8 байт размера файла				┃
		bswap rbx					;													┃
		mov QWORD PTR [rax],rbx		;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
	;Счётчик цикла=0?
		cycleCheck:
		mov eax,cyclesInSegment
		cycleCheck1:
		cmp eax,0
		je exithash
	;Нет. Беру очередной блок 64B В XMM0-XMM4
		mov rax,CF_Addr
		movdqu XMM0,XMMWORD PTR [rax]
		movdqu XMM1,XMMWORD PTR [rax+16]
		movdqu XMM2,XMMWORD PTR [rax+32]
		movdqu XMM3,XMMWORD PTR [rax+48]
	;Готовлю очередь сообщений W в регистрах XMM0-XMM15 от младшего слова к старшему, от 0 до 15
		call Wt	;
		;Хэширую их
		call CompCycle
		;добавляю к хэш
		mov rax,CF_digests
		add [rax],R12D	; h0=h0+a
		shr r12,32
		add [rax+4],R12D; h1=h1+b
		; R13
		add [rax+8],R13D; h2=h2+c
		shr r13,32
		add [rax+12],R13D; h3=h3+d
		; R14
		add [rax+16],R14D; h4=h4+e
		shr r14,32
		add [rax+20],R14D; h5=h5+f
		; R15
		add [rax+24],R15D; h6=h6+g
		shr r15,32
		add [rax+28],R15D; h7=h7+h
	;Изменяю счётчики
		mov eax,DWORD PTR CF_Addr
		add eax,64
		mov DWORD PTR CF_Addr,eax
		mov eax,cyclesInSegment
		dec eax
		mov cyclesInSegment,eax
		jmp	cycleCheck1	;вовторяю цикл
	;Да. Беру окончание массива (64 или 128 байт), хэширую их
		exithash:
		;Беру очередной блок 64B В XMM0-XMM4
		lea rax,lastblock
		exithash1:
		movdqu XMM0,XMMWORD PTR [rax]
		movdqu XMM1,XMMWORD PTR [rax+16]
		movdqu XMM2,XMMWORD PTR [rax+32]
		movdqu XMM3,XMMWORD PTR [rax+48]
		call Wt	;
		;Хэширую их
		call CompCycle
		;добавляю к хэш
		; R12
		mov rax,CF_digests
		add [rax],R12D	; h0=h0+a
		shr r12,32
		add [rax+4],R12D; h1=h1+b
		; R13
		add [rax+8],R13D; h2=h2+c
		shr r13,32
		add [rax+12],R13D; h3=h3+d
		; R14
		add [rax+16],R14D; h4=h4+e
		shr r14,32
		add [rax+20],R14D; h5=h5+f
		; R15
		add [rax+24],R15D; h6=h6+g
		shr r15,32
		add [rax+28],R15D; h7=h7+h
		mov ebx,lastblocksize
		and ebx,1			;Выделяю последний бит. Если 1, то запускаю хэш хвоста, если 0 - хвоста не было.
		je exithash2
		xor eax,eax
		mov lastblocksize,eax		;обнуляю бит пеерполнения, сообщая, что этот блок последний
		lea rax,lastblock+64
		jmp exithash1				;Хеширую остаток
		exithash2:
		;восстанавливаю регистры и выхожу
		movdqu XMM6,myXMMSAVE
		movdqu XMM7,myXMMSAVE+16
		movdqu XMM8,myXMMSAVE+32
		movdqu XMM9,myXMMSAVE+48
		movdqu XMM10,myXMMSAVE+64
		movdqu XMM11,myXMMSAVE+80
		movdqu XMM12,myXMMSAVE+96
		movdqu XMM13,myXMMSAVE+112
		movdqu XMM14,myXMMSAVE+128
		movdqu XMM15,myXMMSAVE+144
		mov R12,myRnSAVE
		mov R13,myRnSAVE+4
		mov R14,myRnSAVE+8
		mov R15,myRnSAVE+12
		ret
Sha256 Endp
;Инициализация хэш функции, ввод исходных значений
Sha256Init proc;__fastcall
	LOCAL myInt64:QWORD ;Число для преобразования
	LOCAL squareRoot:QWORD ;Корень
	LOCAL delitel:QWORD ;делитель (равен 1 для извлечения дробной части числа)
	LOCAL mnoz:QWORD;множитель для выведение целого числа
	LOCAL myxmmword:XMMWORD
	;push rbp			;пролог, для того что бы по rbp-n \
	;mov rbp,rsp			;\обращаться к локальным переменным
	;sub rsp,4*8		;создаю стековый фрйм, нахуя он нужен в душе не ябу(((
	lea rdx,prime_nums ;в RDX массив простых чисел
	mov r8,rcx ;в R8 - адрес инициализированного хэша переданного вызывающей процедурой
	mov rcx,8 ;в RCX количество повторений цикла. Для процессора нет разницы, обращаться к DL или к RDX, поэтому снижаю расходы приводя всё к единому размеру
	mov rax,1373893702338282242 ;8 простых чисел от 2 до 19-ти, прекрасно ложатся в 16 байт 64-битного регистра. Поэтому сунул их в один регистр
	mov QWORD PTR [rdx],rax ; инициализирую простые числа от 2 до 19
	loop1:
	finit
	mov al, BYTE PTR [rdx]		;беру текущее простое число
	and rax,255
	mov myInt64,rax 	
	mov delitel,1				;делитель 1 нужен для отсечения целой части, при делениии на 1 по модулю
	mov rax,4294967296			;множитель 2^32, нужен...\
	mov QWORD PTR mnoz,rax		;...для сдвига дробной части на 32 бита
	fild QWORD PTR mnoz			; сохраняю всё в стек FPU
	fild QWORD PTR delitel	
	fild QWORD PTR myInt64
	fsqrt						;извлекаю корень
	fprem						;делю на 1 по модулю
	fmul ST,ST(2)				;сдвигаю на 32
	fisttp qword ptr squareRoot	;сохраняю для проверки
	mov eax,dword ptr squareRoot	;сохраняю результат в хеше
	mov dword ptr [r8],eax
	add r8,4;сдвигаю указатель на хэш
	inc rdx						;сдвигаю указатель на простое число 
	dec rcx
	jnz loop1					;цикл
	; Далее, инициализирую константы (k) кубическим корнем ряда первых 64 простых числел от 2 до 311
	lea rdx,prime2nums ;в RDX адресс массива простых числел
	forxmm0: ;Заполняю регистр XMM0 значениями 4-х корней
	mov r8,64	;счётчик цикла
	lea r9,k_konst ;указатель на буфер k_konst
	loopxmm0:	
	mov cx, word ptr [rdx]; беру текущее простое число
	and rcx,65535	;обнуляю остальные биты
	call z3sqrt ;вызываю процедуру рассчёта дробной части от кубического корня от числа в rcx
	mov dword ptr [r9],eax ;сохраняю результат в буфер
	add rdx,2	;сдвигаю указатель на простое число
	add r9,4	;сдвигаю указатель на буфер k_konst
	dec r8	;уменьшаю счётчик
	jnz loopxmm0						;цикл
	ret
Sha256Init Endp
_isAvxSupported: ; extern "C" int isAvxSupported()
    xor eax, eax
    cpuid
    cmp eax, 1 ; Поддерживает ли CPUID параметр eax = 1?
    jb not_supported
    mov eax, 1
    cpuid
    and ecx, 018000000h ; Проверяем, что установлены биты 27 (ОС использует XSAVE/XRSTOR)
    cmp ecx, 018000000h ; и 28 (поддержка AVX процессором)
    jne not_supported
    xor ecx, ecx ; Номер регистра XFEATURE_ENABLED_MASK/XCR0 есть 0
    xgetbv ; Регистр XFEATURE_ENABLED_MASK теперь в edx:eax
    and eax, 110b
    cmp eax, 110b ; Убеждаемся, что ОС сохраняет AVX регистры при переключении контекста
    jne not_supported
    mov eax, 1
    ret
	not_supported:
    xor eax, eax
    ret
z3sqrt proc  ;вынес вычисление кубического корня в процедуру. На входе, в rcx - простое число, на выходе, в rax 32 бита остатка.
	LOCAL myInt64:QWORD	;локальная переменная для хранения простого числа
	LOCAL delitel:QWORD ;делитель (равен 1 для извлечения дробной части числа)
	LOCAL mnoz:QWORD;множитель для выведение целого числа
	LOCAL result:QWORD ;результат
	LOCAL regCR:word	;ячейка для сохренения регистра CR (FPU)	
	mov myInt64,rcx	;сохраняю в переменную
	mov delitel,1	;единица для деления по модулю
	mov rax,4294967296			;множитель 2^32, нужен...\
	mov QWORD PTR mnoz,rax		;...для сдвига дробной части на 32 бита
	finit
	fstcw regCR 	;сохраняю регистр CR (FPU), для изменения значения бита округления
	or word ptr regCR,3072	;включаю 10 и 11 биты, сообщающие, что нужно округлять до нуля (в сторону нуля)
	fldcw regCR	;записываю изменённые значения в регистра CR 
	fild QWORD PTR mnoz			; сохраняю всё в стек FPU
	fild QWORD PTR delitel
	fld QWORD PTR my3sqrt 	;загружаю 1/3
	fild QWORD PTR myInt64 			;текущее простое число
	FYL2X 					;получаю LN(x)
	fld ST(0)				;Создаем еще одну копию LN(x)
	frndint					;Округляем
	fsubr st(0),st(1)  		;ST(1)=z, ST(0)=z-trunc(z)
	f2xm1  ;ST(1)=z, ST(0)=2**(z-trunc(z))-1
  	fld1
  	faddp  ;ST(1)=z, ST(0)=2**(z-trunc(z))
  	fscale ;ST(1)=z, ST(0)=(2**trunc(z))*(2**(z-trunc(z)))=2**t
  	fxch st(1)
  	fstp st ;Результат остается на вершине стека ST(0)
	fprem						;делю на 1 по модулю
	fmul ST,ST(2)				;сдвигаю на 32
	fisttp qword ptr result	;сохраняю результат	
	mov rax,result
	ret
z3sqrt endp
Wt proc; вынес в отдельную процедуру заполнение Wt. На выходе - заполненные XMM регистры 
	xorps xmm4,xmm4		;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
	xorps xmm5,xmm5		;													┃
	xorps xmm6,xmm6		;													┃
	xorps xmm7,xmm7		;													┃
	xorps xmm8,xmm8		;													┃
	xorps xmm9,xmm9		;													┃
	xorps xmm10,xmm10	;инициирую xmm регистры нулями						┃
	xorps xmm11,xmm11	;													┃
	xorps xmm12,xmm12	;													┃
	xorps xmm13,xmm13	;													┃
	xorps xmm14,xmm14	;													┃
	xorps xmm15,xmm15	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
	;W16--------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm0,xmm0,00111001b	;-15. 1-е слово двигается на младшую позицию XMM
		movd eax,xmm0
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm3,xmm3,01001110b	;-2. 14-е слово двигается на младшую позицию XMM
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,xmm3
		bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm0,xmm0,10010011b ;-16. 0-е слово двигается на младшую позицию XMM
		xor rdx,rdx
		movd eax,xmm0
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd xmm2,xmm2,00111001b ;-7. 9-е слово двигается на младшую позицию XMM
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm4,xmm4,11100100b ;16-е слово двигается на младшую позицию XMM
		;bswap edx
		movd xmm4,edx
		;movd eax,xmm4;проверяю, как хранить данные в xmm/
	;W17---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm0,xmm0,01001110b	;-15. 2-е слово двигается на младшую позицию XMM
		movd eax,xmm0
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm3,XMM3,00111001b	;-2. 15-е слово двигается на младшую позицию 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM3
		bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm0,xmm0,10010011b ;-16. 1-е слово двигается на младшую позицию XMM
		xor rdx,rdx
		movd eax,xmm0
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd xmm2,xmm2,00111001b ;-7. 10-е слово двигается на младшую позицию XMM
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm4,xmm4,00111001b ;17-е слово двигается на младшую позицию XMM
		;bswap edx
		movd xmm15,edx
		orpd xmm4,xmm15
	;W18---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm0,xmm0,01001110b	;-15. 2-е слово двигается на младшую позицию XMM
		movd eax,xmm0
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm4,xmm4,10010011b	;-2. 15-е слово двигается на младшую позицию 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM4
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm0,xmm0,10010011b ;-16. 1-е слово двигается на младшую позицию XMM
		xor rdx,rdx
		movd eax,xmm0
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd xmm2,xmm2,00111001b ;-7. 10-е слово двигается на младшую позицию XMM
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm4,xmm4,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm4,xmm15
	;W19---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		;pshufd xmm0,xmm0,01001110b	;-15.
		movd eax,xmm1
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm4,xmm4,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM4
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm0,xmm0,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm0
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM3,XMM3,00111001b ;-7. 
		movd eax,XMM3
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm4,xmm4,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm4,xmm15
	;W20---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm1,xmm1,00111001b	;-15.
		movd eax,xmm1
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm4,xmm4,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM4
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm1,xmm1,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm1
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM3,XMM3,00111001b ;-7. 
		movd eax,XMM3
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm4,xmm4,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm5,xmm15
	;W21---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm1,xmm1,01001110b	;-15.
		movd eax,xmm1
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm4,xmm4,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM4
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm1,xmm1,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm1
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM3,XMM3,00111001b ;-7. 
		movd eax,XMM3
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm5,xmm5,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm5,xmm15
	;W22---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm1,xmm1,01001110b	;-15.
		movd eax,xmm1
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm5,xmm5,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM5
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm1,xmm1,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm1
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM3,XMM3,00111001b ;-7. 
		movd eax,XMM3
		bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm5,xmm5,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm5,xmm15
	;W23---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm2,xmm2,00111001b	;-15.
		movd eax,xmm2
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm5,xmm5,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM5
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm1,xmm1,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm1
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM4,XMM4,00111001b ;-7. 
		movd eax,XMM4
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm5,xmm5,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm5,xmm15
	;W24---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm2,xmm2,00111001b	;-15.
		movd eax,xmm2
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm5,xmm5,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM5
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm2,xmm2,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM4,XMM4,00111001b ;-7. 
		movd eax,XMM4
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm5,xmm5,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm6,xmm15
	;W25---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm2,xmm2,01001110b	;-15.
		movd eax,xmm2
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm5,xmm5,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM5
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm2,xmm2,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM4,XMM4,00111001b ;-7. 
		movd eax,XMM4
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm6,xmm6,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm6,xmm15
	;W26---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm2,xmm2,01001110b	;-15.
		movd eax,xmm2
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm6,xmm6,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM6
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm2,xmm2,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM4,XMM4,00111001b ;-7. 
		movd eax,XMM4
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm6,xmm6,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm6,xmm15
	;W27---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm3,xmm3,00111001b	;-15.
		movd eax,xmm3
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm6,xmm6,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM6
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm2,xmm2,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm2
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM5,XMM5,00111001b ;-7. 
		movd eax,XMM5
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm6,xmm6,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm6,xmm15
	;W28---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm3,xmm3,00111001b	;-15.
		movd eax,xmm3
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm6,xmm6,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM6
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm3,xmm3,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm3
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM5,XMM5,00111001b ;-7. 
		movd eax,XMM5
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm6,xmm6,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm7,xmm15
	;W29---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm3,xmm3,01001110b	;-15.
		movd eax,xmm3
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm6,xmm6,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM6
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm3,xmm3,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm3
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM5,XMM5,00111001b ;-7. 
		movd eax,XMM5
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm7,xmm7,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm7,xmm15
	;W30---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm3,xmm3,01001110b	;-15.
		movd eax,xmm3
		bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm7,xmm7,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM7
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm3,xmm3,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm3
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM5,XMM5,00111001b ;-7. 
		movd eax,XMM5
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm7,xmm7,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm7,xmm15
	;W31---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm4,xmm4,00111001b	;-15.
		movd eax,xmm4
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm7,xmm7,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM7
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm3,xmm3,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm3
		bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM6,XMM6,00111001b ;-7. 
		movd eax,XMM6
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm7,xmm7,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm7,xmm15
	;W32---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm4,xmm4,00111001b	;-15.
		movd eax,xmm4
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm7,xmm7,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM7
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm4,xmm4,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm4
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM6,XMM6,00111001b ;-7. 
		movd eax,XMM6
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm6,xmm6,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm8,xmm15
	;W33---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm4,xmm4,01001110b	;-15.
		movd eax,xmm4
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm7,xmm7,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM7
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm4,xmm4,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm4
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM6,XMM6,00111001b ;-7. 
		movd eax,XMM6
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm8,xmm8,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm8,xmm15
	;W34---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm4,xmm4,01001110b	;-15.
		movd eax,xmm4
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm8,xmm8,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM8
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm4,xmm4,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm4
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM6,XMM6,00111001b ;-7. 
		movd eax,XMM6
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm8,xmm8,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm8,xmm15
	;W35---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm5,xmm5,00111001b	;-15.
		movd eax,xmm5
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm8,xmm8,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM8
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm4,xmm4,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm4
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM7,XMM7,00111001b ;-7. 
		movd eax,XMM7
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm8,xmm8,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm8,xmm15
	;W36---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm5,xmm5,00111001b	;-15.
		movd eax,xmm5
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm8,xmm8,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM8
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm5,xmm5,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm5
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM7,XMM7,00111001b ;-7. 
		movd eax,XMM7
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm9,xmm9,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm9,xmm15
	;W37---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm5,xmm5,01001110b	;-15.
		movd eax,xmm5
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm8,xmm8,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM8
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm5,xmm5,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm5
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM7,XMM7,00111001b ;-7. 
		movd eax,XMM7
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm9,xmm9,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm9,xmm15
	;W38---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm5,xmm5,01001110b	;-15.
		movd eax,xmm5
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm9,xmm9,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM9
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm5,xmm5,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm5
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM7,XMM7,00111001b ;-7. 
		movd eax,XMM7
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm9,xmm9,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm9,xmm15
	;W39---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm6,xmm6,00111001b	;-15.
		movd eax,xmm6
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm9,xmm9,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM9
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm5,xmm5,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm5
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM8,XMM8,00111001b ;-7. 
		movd eax,XMM8
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm9,xmm9,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm9,xmm15
	;W40---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm6,xmm6,00111001b	;-15.
		movd eax,xmm6
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm9,xmm9,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM9
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm6,xmm6,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm6
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM8,XMM8,00111001b ;-7. 
		movd eax,XMM8
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm10,xmm10,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm10,xmm15
	;W41---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm6,xmm6,01001110b	;-15.
		movd eax,xmm6
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm9,xmm9,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM9
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm6,xmm6,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm6
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM8,XMM8,00111001b ;-7. 
		movd eax,XMM8
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm10,xmm10,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm10,xmm15
	;W42---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm6,xmm6,01001110b	;-15.
		movd eax,xmm6
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm10,xmm10,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM10
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm6,xmm6,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm6
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM8,XMM8,00111001b ;-7. 
		movd eax,XMM8
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm10,xmm10,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm10,xmm15
	;W43---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm7,xmm7,00111001b	;-15.
		movd eax,xmm7
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm10,xmm10,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM10
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm6,xmm6,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm6
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM9,XMM9,00111001b ;-7. 
		movd eax,XMM9
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm10,xmm10,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm10,xmm15
	;W44---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm7,xmm7,00111001b	;-15.
		movd eax,xmm7
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm10,xmm10,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM10
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm7,xmm7,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm7
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM9,XMM9,00111001b ;-7. 
		movd eax,XMM9
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm11,xmm11,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm11,xmm15
	;W45---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm7,xmm7,01001110b	;-15.
		movd eax,xmm7
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm10,xmm10,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM10
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm7,xmm7,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm7
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM9,XMM9,00111001b ;-7. 
		movd eax,XMM9
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm11,xmm11,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm11,xmm15
	;W46---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm7,xmm7,01001110b	;-15.
		movd eax,xmm7
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm11,xmm11,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM11
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm7,xmm7,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm7
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM9,XMM9,00111001b ;-7. 
		movd eax,XMM9
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm11,xmm11,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm11,xmm15
	;W47---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm8,xmm8,00111001b	;-15.
		movd eax,xmm8
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm11,xmm11,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM11
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm7,xmm7,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm7
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM10,XMM10,00111001b ;-7. 
		movd eax,XMM10
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm11,xmm11,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm11,xmm15
	;W48---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm8,xmm8,00111001b	;-15.
		movd eax,xmm8
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm11,xmm11,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM11
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm8,xmm8,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm8
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM10,XMM10,00111001b ;-7. 
		movd eax,XMM10
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm12,xmm12,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm12,xmm15
	;W49---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm8,xmm8,01001110b	;-15.
		movd eax,xmm8
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm11,xmm11,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM11
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm8,xmm8,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm8
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM10,XMM10,00111001b ;-7. 
		movd eax,XMM10
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm12,xmm12,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm12,xmm15
	;W50---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm8,xmm8,01001110b	;-15.
		movd eax,xmm8
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm12,xmm12,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM12
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm8,xmm8,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm8
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM10,XMM10,00111001b ;-7. 
		movd eax,XMM10
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm12,xmm12,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm12,xmm15
	;W51---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm9,xmm9,00111001b	;-15.
		movd eax,xmm9
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm12,xmm12,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM12
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm8,xmm8,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm8
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM11,XMM11,00111001b ;-7. 
		movd eax,XMM11
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm12,xmm12,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm12,xmm15
	;W52---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm9,xmm9,00111001b	;-15.
		movd eax,xmm9
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm12,xmm12,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM12
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm9,xmm9,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm9
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM11,XMM11,00111001b ;-7. 
		movd eax,XMM11
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm13,xmm13,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm13,xmm15
	;W53---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm9,xmm9,01001110b	;-15.
		movd eax,xmm9
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm12,xmm12,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM12
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm9,xmm9,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm9
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM11,XMM11,00111001b ;-7. 
		movd eax,XMM11
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm13,xmm13,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm13,xmm15
	;W54---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm9,xmm9,01001110b	;-15.
		movd eax,xmm9
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm13,xmm13,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM13
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm9,xmm9,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm9
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM11,XMM11,00111001b ;-7. 
		movd eax,XMM11
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm13,xmm13,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm13,xmm15
	;W55---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm10,xmm10,00111001b	;-15.
		movd eax,xmm10
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm13,xmm13,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM13
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm9,xmm9,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm9
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM12,XMM12,00111001b ;-7. 
		movd eax,XMM12
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm13,xmm13,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm13,xmm15
	;W56---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm10,xmm10,00111001b	;-15.
		movd eax,xmm10
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm13,xmm13,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM13
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm10,xmm10,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm10
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM12,XMM12,00111001b ;-7. 
		movd eax,XMM12
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm14,xmm14,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm14,xmm15
	;W57---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm10,xmm10,01001110b	;-15.
		movd eax,xmm10
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm13,xmm13,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM13
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm10,xmm10,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm10
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM12,XMM12,00111001b ;-7. 
		movd eax,XMM12
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm14,xmm14,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm14,xmm15
	;W58---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm10,xmm10,01001110b	;-15.
		movd eax,xmm10
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm14,xmm14,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM14
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm10,xmm10,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm10
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM12,XMM12,00111001b ;-7. 
		movd eax,XMM12
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm14,xmm14,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm14,xmm15
	;W59---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm11,xmm11,00111001b	;-15.
		movd eax,xmm11
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm14,xmm14,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM14
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm10,xmm10,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm10
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM13,XMM13,00111001b ;-7. 
		movd eax,XMM13
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm14,xmm14,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
		orpd xmm14,xmm15
	;W60---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm11,xmm11,00111001b	;-15.
		movd eax,xmm11
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm14,xmm14,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM14
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm11,xmm11,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm11
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM13,XMM13,00111001b ;-7. 
		movd eax,XMM13
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		;pshufd xmm15,xmm15,11100100b ;-0 (Rec)
		;bswap edx
		movd xmm15,edx
	;W61---------------------------------------------------------------------------
		sub rsp,16
		movdqu [rsp],xmm0; сохраняю в стеке XMM0, чтобы он заменил XMM15
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm11,xmm11,01001110b	;-15.
		movd eax,xmm11
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm14,xmm14,00111001b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM14
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm11,xmm11,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm11
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM13,XMM13,00111001b ;-7. 
		movd eax,XMM13
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm15,xmm15,00111001b ;-0 (Rec)
		;bswap edx
		movd xmm0,edx
		orpd xmm15,xmm0
		
	;W62---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm11,xmm11,01001110b	;-15.
		movd eax,xmm11
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm15,xmm15,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM15
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm11,xmm11,10010011b ;-16. 
		xor rdx,rdx
		movd eax,xmm11
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM13,XMM13,00111001b ;-7. 
		movd eax,XMM13
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm15,xmm15,01001110b ;-0 (Rec)
		;bswap edx
		movd xmm0,edx
		orpd xmm15,xmm0
	;W63---------------------------------------------------------------------------
		xor rcx,rcx	;в ecx будет xor трёх вращений 
		pshufd xmm12,xmm12,00111001b	;-15.
		movd eax,xmm12
		;bswap eax
		ror eax,7
		xor ecx,eax
		ror eax,11
		xor ecx,eax
		rol eax,15
		and eax,1fffffffh
		xor ecx,eax 		; S0
		pshufd xmm15,xmm15,10010011b	;-2. 
		xor rbx,rbx	;в ebx будет xor трёх вращений
		movd eax,XMM15
		;bswap eax
		ror eax,17
		xor ebx,eax
		ror eax,2
		xor ebx,eax
		rol eax,9
		and eax,3fffffh
		xor ebx,eax			;S1
		pshufd xmm11,xmm11,00111001b ;-16. 
		xor rdx,rdx
		movd eax,xmm11
		;bswap eax
		add edx,eax
		add edx,ecx
		pshufd XMM14,XMM14,00111001b ;-7. 
		movd eax,XMM14
		;bswap eax
		add edx,eax
		add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1
		pshufd xmm15,xmm15,01001110b ;-0 (Rec)
		;bswap edx
		movd XMM0,edx
		orpd xmm15,xmm0
		movdqu XMM0,[rsp]
		add rsp,16
	ret	
Wt Endp
CompCycle proc; Цикл сжатия. Вынес в отдельную процедуру
				; на входе: R12-R15 текущий хэш
				;			XMM0 - XMM15 - Wt
	;i=0
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst
			pshufd XMM0,XMM0,00111001b
			movd ebx,XMM0
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=1
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+1*4
			pshufd XMM0,XMM0,00111001b
			movd ebx,XMM0
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=2 
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+2*4
			pshufd XMM0,XMM0,00111001b
			movd ebx,XMM0
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=3
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+3*4
			pshufd XMM0,XMM0,00111001b
			movd ebx,XMM0
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=4
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+4*4
			pshufd XMM1,XMM1,00111001b
			movd ebx,XMM1
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=5
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+5*4
			pshufd XMM1,XMM1,00111001b
			movd ebx,XMM1
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=6
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+6*4
			pshufd XMM1,XMM1,00111001b
			movd ebx,XMM1
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=7
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+7*4
			pshufd XMM1,XMM1,00111001b
			movd ebx,XMM1
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=8
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+8*4
			pshufd XMM2,XMM2,00111001b
			movd ebx,XMM2
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=9
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+9*4
			pshufd XMM2,XMM2,00111001b
			movd ebx,XMM2
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=10
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+10*4
			pshufd XMM2,XMM2,00111001b
			movd ebx,XMM2
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=11
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+11*4
			pshufd XMM2,XMM2,00111001b
			movd ebx,XMM2
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=12
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+12*4
			pshufd XMM3,XMM3,00111001b
			movd ebx,XMM3
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=13
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+13*4
			pshufd XMM3,XMM3,00111001b
			movd ebx,XMM3
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=14
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+14*4
			pshufd XMM3,XMM3,00111001b
			movd ebx,XMM3
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=15
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+15*4
			pshufd XMM3,XMM3,00111001b
			movd ebx,XMM3
			bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=16
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+16*4
			pshufd XMM4,XMM4,00111001b
			movd ebx,XMM4
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=17
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+17*4
			pshufd XMM4,XMM4,00111001b
			movd ebx,XMM4
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=18
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+18*4
			pshufd XMM4,XMM4,00111001b
			movd ebx,XMM4
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=19
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+19*4
			pshufd XMM4,XMM4,00111001b
			movd ebx,XMM4
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=20
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+20*4
			pshufd XMM5,XMM5,00111001b
			movd ebx,XMM5
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=21
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+21*4
			pshufd XMM5,XMM5,00111001b
			movd ebx,XMM5
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=22
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+22*4
			pshufd XMM5,XMM5,00111001b
			movd ebx,XMM5
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=23
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+23*4
			pshufd XMM5,XMM5,00111001b
			movd ebx,XMM5
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=24
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+24*4
			pshufd XMM6,XMM6,00111001b
			movd ebx,XMM6
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=25
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+25*4
			pshufd XMM6,XMM6,00111001b
			movd ebx,XMM6
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=26
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+26*4
			pshufd XMM6,XMM6,00111001b
			movd ebx,XMM6
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=27
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+27*4
			pshufd XMM6,XMM6,00111001b
			movd ebx,XMM6
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=28
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+28*4
			pshufd XMM7,XMM7,00111001b
			movd ebx,XMM7
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=29
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+29*4
			pshufd XMM7,XMM7,00111001b
			movd ebx,XMM7
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=30
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+30*4
			pshufd XMM7,XMM7,00111001b
			movd ebx,XMM7
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=31
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+31*4
			pshufd XMM7,XMM7,00111001b
			movd ebx,XMM7
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=32
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+32*4
			pshufd XMM8,XMM8,00111001b
			movd ebx,XMM8
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=33
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+33*4
			pshufd XMM8,XMM8,00111001b
			movd ebx,XMM8
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=34
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+34*4
			pshufd XMM8,XMM8,00111001b
			movd ebx,XMM8
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=35
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+35*4
			pshufd XMM8,XMM8,00111001b
			movd ebx,XMM8
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=36
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+36*4
			pshufd XMM9,XMM9,00111001b
			movd ebx,XMM9
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=37
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+37*4
			pshufd XMM9,XMM9,00111001b
			movd ebx,XMM9
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=38
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+38*4
			pshufd XMM9,XMM9,00111001b
			movd ebx,XMM9
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=39
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+39*4
			pshufd XMM9,XMM9,00111001b
			movd ebx,XMM9
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=40
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+40*4
			pshufd XMM10,XMM10,00111001b
			movd ebx,XMM10
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=41
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+41*4
			pshufd XMM10,XMM10,00111001b
			movd ebx,XMM10
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=42
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+42*4
			pshufd XMM10,XMM10,00111001b
			movd ebx,XMM10
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=43
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+43*4
			pshufd XMM10,XMM10,00111001b
			movd ebx,XMM10
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=44
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+44*4
			pshufd XMM11,XMM11,00111001b
			movd ebx,XMM11
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=45
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+45*4
			pshufd XMM11,XMM11,00111001b
			movd ebx,XMM11
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=46
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+46*4
			pshufd XMM11,XMM11,00111001b
			movd ebx,XMM11
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=47
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+47*4
			pshufd XMM11,XMM11,00111001b
			movd ebx,XMM11
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=48
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+48*4
			;pshufd XMM12,XMM12,00111001b
			movd ebx,XMM12
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=49
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+49*4
			pshufd XMM12,XMM12,00111001b
			movd ebx,XMM12
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=50
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+50*4
			pshufd XMM12,XMM12,00111001b
			movd ebx,XMM12
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=51
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+51*4
			pshufd XMM12,XMM12,00111001b
			movd ebx,XMM12
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=52
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+52*4
			pshufd XMM13,XMM13,00111001b
			movd ebx,XMM13
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=53
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+53*4
			pshufd XMM13,XMM13,00111001b
			movd ebx,XMM13
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=54
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+54*4
			pshufd XMM13,XMM13,00111001b
			movd ebx,XMM13
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=55
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+55*4
			pshufd XMM13,XMM13,00111001b
			movd ebx,XMM13
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=56
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+56*4
			;pshufd XMM14,XMM14,00111001b
			movd ebx,XMM14
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=57
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+57*4
			pshufd XMM14,XMM14,00111001b
			movd ebx,XMM14
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=58
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+58*4
			pshufd XMM14,XMM14,00111001b
			movd ebx,XMM14
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=59
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+59*4
			pshufd XMM14,XMM14,00111001b
			movd ebx,XMM14
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=60
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+60*4
			pshufd XMM15,XMM15,00111001b
			movd ebx,XMM15
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=61
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+61*4
			pshufd XMM15,XMM15,00111001b
			movd ebx,XMM15
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=62
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+62*4
			pshufd XMM15,XMM15,00111001b
			movd ebx,XMM15
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
	;i=63
			;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)__________________________________________
			mov r8,r12
			mov r9,r13
			mov r10,r14
			mov r11,r15
			rol r12,32  	;B=A
			shl r13,32		;D=C
			rol r14,32		;F=E
			shl r15,32		;H=G
			mov eax,r12d
			or r13,rax		;C=B
			mov eax,r14d
			or r15,rax		;G=F
			mov rax,0ffffffffh
			shl rax,32
			and r12,rax		;A=null
			and r14,rax		;E=null
		;Ma
			mov eax,r8d	;eax=A
			mov rbx,r8
			shr rbx,32	;ebx=B
			mov rcx,r13
			shr rcx,32	;ecx=C
			and eax,ebx	;A and B
			and ebx,ecx	;B and C
			mov edx,r8d ;edx=A
			and edx,ecx	;A and C
			or eax,ebx	;(A and B) or (B and C)
			or edx,eax	;(A and C) or ((A and B) or (B and C))
			;edx=Ma
		;Ch
			mov eax,r10d;eax=E
			and eax,r15d;eax=p1=(E and F)
			mov ebx,r10d;ebx=E
			xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
			mov rcx,r15
			shr rcx,32	;ecx=G
			and ecx,ebx	;ecx=p3=(p2 and G)
			or ecx,eax	
			;ecx=Ch
		;Σо
			ror r8d,2	;a rightrotate 2
			mov eax,r8d
			ror r8d,11	;a rightrotate 13:
			xor eax,r8d
			ror r8d,9	;a rightrotate 22:
			xor r8d,eax
			;r8d=Σо
		;Σ1
			ror r10d,6	;a rightrotate 6
			mov eax,r10d
			ror r10d,5	;a rightrotate 11:
			xor eax,r10d
			ror r10d,14	;a rightrotate 22:
			xor r10d,eax
			;r10d=Σ1
		;T1
			mov eax,k_konst+63*4
			pshufd XMM15,XMM15,00111001b
			movd ebx,XMM15
			;bswap ebx
			add eax,ebx 	;Wt+kn
			add eax,ecx		;Wt+kn+Ch
			add eax,r10d	;Wt+kn+Ch+Σ1
			shr r11,32		;r11d=H
			add r11d,eax	;Wt+kn+Ch+Σ1+h
			shr r9,32		;r9d=D
			add	r9d,r11d	;D+T1
			or r14,r9		;E=D+T1
			add r11d,r8d	;T1+Σо
			add r11d,edx	;T1+Σо+Ma
			or r12,r11		;A=T1+T2
		ret
CompCycle Endp	
end