mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
3883 lines
76 KiB
PHP
3883 lines
76 KiB
PHP
{
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; Copyright (c) 2012, Intel Corporation
|
|
;
|
|
; All rights reserved.
|
|
;
|
|
; Redistribution and use in source and binary forms, with or without
|
|
; modification, are permitted provided that the following conditions are
|
|
; met:
|
|
;
|
|
; * Redistributions of source code must retain the above copyright
|
|
; notice, this list of conditions and the following disclaimer.
|
|
;
|
|
; * Redistributions in binary form must reproduce the above copyright
|
|
; notice, this list of conditions and the following disclaimer in the
|
|
; documentation and/or other materials provided with the
|
|
; distribution.
|
|
;
|
|
; * Neither the name of the Intel Corporation nor the names of its
|
|
; contributors may be used to endorse or promote products derived from
|
|
; this software without specific prior written permission.
|
|
;
|
|
;
|
|
; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY
|
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
|
|
; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
*/
|
|
/*
|
|
* Conversion to GAS assembly and integration to libgcrypt
|
|
* by Jussi Kivilinna <jussi.kivilinna@iki.fi>
|
|
*
|
|
* Note: original implementation was named as SHA512-SSE4. However, only SSSE3
|
|
* is required.
|
|
*/
|
|
}
|
|
|
|
procedure sha512_compress_sse(HashBuffer: PByte; CurrentHash: PInt64; BufferCount: UIntPtr); assembler; nostackframe;
|
|
asm
|
|
{$IF DEFINED(WIN64)}
|
|
pushq %rsi
|
|
pushq %rdi
|
|
movq %rcx, %rdi
|
|
movq %rdx, %rsi
|
|
movq %r8, %rdx
|
|
{$ENDIF}
|
|
|
|
xor %eax,%eax
|
|
|
|
cmp $0x0,%rdx
|
|
je .Lnowork
|
|
|
|
//* Allocate Stack Space */
|
|
sub $0x2b8,%rsp
|
|
|
|
//* Save GPRs */
|
|
mov %rbx,0x290(%rsp)
|
|
mov %r12,0x298(%rsp)
|
|
mov %r13,0x2a0(%rsp)
|
|
mov %r14,0x2a8(%rsp)
|
|
mov %r15,0x2b0(%rsp)
|
|
|
|
.Lupdateblock:
|
|
|
|
mov (%rsi),%r9
|
|
mov 0x8(%rsi),%r10
|
|
mov 0x10(%rsi),%r11
|
|
mov 0x18(%rsi),%r12
|
|
mov 0x20(%rsi),%r13
|
|
mov 0x28(%rsi),%r14
|
|
mov 0x30(%rsi),%r15
|
|
mov 0x38(%rsi),%rbx
|
|
|
|
//* (80 rounds) / (2 rounds/iteration) + (1 iteration) */
|
|
|
|
//.if t < 2 (t == 0)
|
|
|
|
//* BSWAP 2 QWORDS */
|
|
movdqa .LXMM_QWORD_BSWAP(%rip),%xmm1
|
|
movdqu (%rdi),%xmm0
|
|
//* BSWAP */
|
|
pshufb %xmm1,%xmm0
|
|
//* Store Scheduled Pair */
|
|
movdqa %xmm0,(%rsp)
|
|
//* Compute W[t]+K[t] */
|
|
paddq .LK512_0(%rip),%xmm0
|
|
//* Store into WK for rounds */
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 2)
|
|
|
|
//* BSWAP 2 QWORDS; Compute 2 Rounds */
|
|
movdqu 0x10(%rdi),%xmm0
|
|
//* BSWAP */
|
|
pshufb %xmm1,%xmm0
|
|
//* Round t-2 */
|
|
mov %r14,%rcx
|
|
mov %r13,%rax
|
|
xor %r15,%rcx
|
|
ror $0x17,%rax
|
|
and %r13,%rcx
|
|
xor %r13,%rax
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r13,%rax
|
|
mov %r9,%r8
|
|
add %rbx,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r9,%rax
|
|
xor %r11,%r8
|
|
and %r11,%rax
|
|
and %r10,%r8
|
|
xor %rax,%r8
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
xor %r9,%rax
|
|
add %rcx,%r12
|
|
ror $0x6,%rax
|
|
xor %r9,%rax
|
|
lea (%rcx,%r8,1),%rbx
|
|
ror $0x1c,%rax
|
|
add %rax,%rbx
|
|
//* Store Scheduled Pair */
|
|
movdqa %xmm0,0x10(%rsp)
|
|
//* Compute W[t]+K[t] */
|
|
paddq .LK512_1(%rip),%xmm0
|
|
|
|
//* Round t-1 */
|
|
mov %r13,%rcx
|
|
mov %r12,%rax
|
|
xor %r14,%rcx
|
|
ror $0x17,%rax
|
|
and %r12,%rcx
|
|
xor %r12,%rax
|
|
xor %r14,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
mov %rbx,%r8
|
|
add %r15,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %rbx,%rax
|
|
xor %r10,%r8
|
|
and %r10,%rax
|
|
and %r9,%r8
|
|
xor %rax,%r8
|
|
mov %rbx,%rax
|
|
ror $0x5,%rax
|
|
xor %rbx,%rax
|
|
add %rcx,%r11
|
|
ror $0x6,%rax
|
|
xor %rbx,%rax
|
|
lea (%rcx,%r8,1),%r15
|
|
ror $0x1c,%rax
|
|
add %rax,%r15
|
|
//* Store W[t]+K[t] into WK */
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 4)
|
|
movdqu 0x20(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %r12,%rcx
|
|
mov %r11,%rax
|
|
xor %r13,%rcx
|
|
ror $0x17,%rax
|
|
and %r11,%rcx
|
|
xor %r11,%rax
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r11,%rax
|
|
mov %r15,%r8
|
|
add %r14,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r15,%rax
|
|
xor %r9,%r8
|
|
and %r9,%rax
|
|
and %rbx,%r8
|
|
xor %rax,%r8
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
xor %r15,%rax
|
|
add %rcx,%r10
|
|
ror $0x6,%rax
|
|
xor %r15,%rax
|
|
lea (%rcx,%r8,1),%r14
|
|
ror $0x1c,%rax
|
|
add %rax,%r14
|
|
movdqa %xmm0,0x20(%rsp)
|
|
paddq .LK512_2(%rip),%xmm0
|
|
|
|
mov %r11,%rcx
|
|
mov %r10,%rax
|
|
xor %r12,%rcx
|
|
ror $0x17,%rax
|
|
and %r10,%rcx
|
|
xor %r10,%rax
|
|
xor %r12,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
mov %r14,%r8
|
|
add %r13,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r14,%rax
|
|
xor %rbx,%r8
|
|
and %rbx,%rax
|
|
and %r15,%r8
|
|
xor %rax,%r8
|
|
mov %r14,%rax
|
|
ror $0x5,%rax
|
|
xor %r14,%rax
|
|
add %rcx,%r9
|
|
ror $0x6,%rax
|
|
xor %r14,%rax
|
|
lea (%rcx,%r8,1),%r13
|
|
ror $0x1c,%rax
|
|
add %rax,%r13
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 6)
|
|
movdqu 0x30(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %r10,%rcx
|
|
mov %r9,%rax
|
|
xor %r11,%rcx
|
|
ror $0x17,%rax
|
|
and %r9,%rcx
|
|
xor %r9,%rax
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r9,%rax
|
|
mov %r13,%r8
|
|
add %r12,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r13,%rax
|
|
xor %r15,%r8
|
|
and %r15,%rax
|
|
and %r14,%r8
|
|
xor %rax,%r8
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
xor %r13,%rax
|
|
add %rcx,%rbx
|
|
ror $0x6,%rax
|
|
xor %r13,%rax
|
|
lea (%rcx,%r8,1),%r12
|
|
ror $0x1c,%rax
|
|
add %rax,%r12
|
|
movdqa %xmm0,0x30(%rsp)
|
|
paddq .LK512_3(%rip),%xmm0
|
|
|
|
mov %r9,%rcx
|
|
mov %rbx,%rax
|
|
xor %r10,%rcx
|
|
ror $0x17,%rax
|
|
and %rbx,%rcx
|
|
xor %rbx,%rax
|
|
xor %r10,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
mov %r12,%r8
|
|
add %r11,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r12,%rax
|
|
xor %r14,%r8
|
|
and %r14,%rax
|
|
and %r13,%r8
|
|
xor %rax,%r8
|
|
mov %r12,%rax
|
|
ror $0x5,%rax
|
|
xor %r12,%rax
|
|
add %rcx,%r15
|
|
ror $0x6,%rax
|
|
xor %r12,%rax
|
|
lea (%rcx,%r8,1),%r11
|
|
ror $0x1c,%rax
|
|
add %rax,%r11
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 8)
|
|
movdqu 0x40(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %rbx,%rcx
|
|
mov %r15,%rax
|
|
xor %r9,%rcx
|
|
ror $0x17,%rax
|
|
and %r15,%rcx
|
|
xor %r15,%rax
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r15,%rax
|
|
mov %r11,%r8
|
|
add %r10,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r11,%rax
|
|
xor %r13,%r8
|
|
and %r13,%rax
|
|
and %r12,%r8
|
|
xor %rax,%r8
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
xor %r11,%rax
|
|
add %rcx,%r14
|
|
ror $0x6,%rax
|
|
xor %r11,%rax
|
|
lea (%rcx,%r8,1),%r10
|
|
ror $0x1c,%rax
|
|
add %rax,%r10
|
|
movdqa %xmm0,0x40(%rsp)
|
|
paddq .LK512_4(%rip),%xmm0
|
|
|
|
mov %r15,%rcx
|
|
mov %r14,%rax
|
|
xor %rbx,%rcx
|
|
ror $0x17,%rax
|
|
and %r14,%rcx
|
|
xor %r14,%rax
|
|
xor %rbx,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
mov %r10,%r8
|
|
add %r9,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r10,%rax
|
|
xor %r12,%r8
|
|
and %r12,%rax
|
|
and %r11,%r8
|
|
xor %rax,%r8
|
|
mov %r10,%rax
|
|
ror $0x5,%rax
|
|
xor %r10,%rax
|
|
add %rcx,%r13
|
|
ror $0x6,%rax
|
|
xor %r10,%rax
|
|
lea (%rcx,%r8,1),%r9
|
|
ror $0x1c,%rax
|
|
add %rax,%r9
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 10)
|
|
movdqu 0x50(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %r14,%rcx
|
|
mov %r13,%rax
|
|
xor %r15,%rcx
|
|
ror $0x17,%rax
|
|
and %r13,%rcx
|
|
xor %r13,%rax
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r13,%rax
|
|
mov %r9,%r8
|
|
add %rbx,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r9,%rax
|
|
xor %r11,%r8
|
|
and %r11,%rax
|
|
and %r10,%r8
|
|
xor %rax,%r8
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
xor %r9,%rax
|
|
add %rcx,%r12
|
|
ror $0x6,%rax
|
|
xor %r9,%rax
|
|
lea (%rcx,%r8,1),%rbx
|
|
ror $0x1c,%rax
|
|
add %rax,%rbx
|
|
movdqa %xmm0,0x50(%rsp)
|
|
paddq .LK512_5(%rip),%xmm0
|
|
|
|
mov %r13,%rcx
|
|
mov %r12,%rax
|
|
xor %r14,%rcx
|
|
ror $0x17,%rax
|
|
and %r12,%rcx
|
|
xor %r12,%rax
|
|
xor %r14,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
mov %rbx,%r8
|
|
add %r15,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %rbx,%rax
|
|
xor %r10,%r8
|
|
and %r10,%rax
|
|
and %r9,%r8
|
|
xor %rax,%r8
|
|
mov %rbx,%rax
|
|
ror $0x5,%rax
|
|
xor %rbx,%rax
|
|
add %rcx,%r11
|
|
ror $0x6,%rax
|
|
xor %rbx,%rax
|
|
lea (%rcx,%r8,1),%r15
|
|
ror $0x1c,%rax
|
|
add %rax,%r15
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 12)
|
|
movdqu 0x60(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %r12,%rcx
|
|
mov %r11,%rax
|
|
xor %r13,%rcx
|
|
ror $0x17,%rax
|
|
and %r11,%rcx
|
|
xor %r11,%rax
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r11,%rax
|
|
mov %r15,%r8
|
|
add %r14,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r15,%rax
|
|
xor %r9,%r8
|
|
and %r9,%rax
|
|
and %rbx,%r8
|
|
xor %rax,%r8
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
xor %r15,%rax
|
|
add %rcx,%r10
|
|
ror $0x6,%rax
|
|
xor %r15,%rax
|
|
lea (%rcx,%r8,1),%r14
|
|
ror $0x1c,%rax
|
|
add %rax,%r14
|
|
movdqa %xmm0,0x60(%rsp)
|
|
paddq .LK512_6(%rip),%xmm0
|
|
|
|
mov %r11,%rcx
|
|
mov %r10,%rax
|
|
xor %r12,%rcx
|
|
ror $0x17,%rax
|
|
and %r10,%rcx
|
|
xor %r10,%rax
|
|
xor %r12,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
mov %r14,%r8
|
|
add %r13,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r14,%rax
|
|
xor %rbx,%r8
|
|
and %rbx,%rax
|
|
and %r15,%r8
|
|
xor %rax,%r8
|
|
mov %r14,%rax
|
|
ror $0x5,%rax
|
|
xor %r14,%rax
|
|
add %rcx,%r9
|
|
ror $0x6,%rax
|
|
xor %r14,%rax
|
|
lea (%rcx,%r8,1),%r13
|
|
ror $0x1c,%rax
|
|
add %rax,%r13
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 16 (t == 14)
|
|
movdqu 0x70(%rdi),%xmm0
|
|
pshufb %xmm1,%xmm0
|
|
mov %r10,%rcx
|
|
mov %r9,%rax
|
|
xor %r11,%rcx
|
|
ror $0x17,%rax
|
|
and %r9,%rcx
|
|
xor %r9,%rax
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r9,%rax
|
|
mov %r13,%r8
|
|
add %r12,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r13,%rax
|
|
xor %r15,%r8
|
|
and %r15,%rax
|
|
and %r14,%r8
|
|
xor %rax,%r8
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
xor %r13,%rax
|
|
add %rcx,%rbx
|
|
ror $0x6,%rax
|
|
xor %r13,%rax
|
|
lea (%rcx,%r8,1),%r12
|
|
ror $0x1c,%rax
|
|
add %rax,%r12
|
|
movdqa %xmm0,0x70(%rsp)
|
|
paddq .LK512_7(%rip),%xmm0
|
|
|
|
mov %r9,%rcx
|
|
mov %rbx,%rax
|
|
xor %r10,%rcx
|
|
ror $0x17,%rax
|
|
and %rbx,%rcx
|
|
xor %rbx,%rax
|
|
xor %r10,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
mov %r12,%r8
|
|
add %r11,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r12,%rax
|
|
xor %r14,%r8
|
|
and %r14,%rax
|
|
and %r13,%r8
|
|
xor %rax,%r8
|
|
mov %r12,%rax
|
|
ror $0x5,%rax
|
|
xor %r12,%rax
|
|
add %rcx,%r15
|
|
ror $0x6,%rax
|
|
xor %r12,%rax
|
|
lea (%rcx,%r8,1),%r11
|
|
ror $0x1c,%rax
|
|
add %rax,%r11
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
//.elseif t < 79 (t == 16)
|
|
|
|
//* Schedule 2 QWORDS; Compute 2 Rounds */
|
|
mov %rbx,%rcx
|
|
movdqa 0x70(%rsp),%xmm2
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x8(%rsp),%xmm5
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x48(%rsp),%xmm1
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq (%rsp),%xmm0
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x80(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_8(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 18)
|
|
mov %r14,%rcx
|
|
movdqa 0x80(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x18(%rsp),%xmm5
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x58(%rsp),%xmm1
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x10(%rsp),%xmm0
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x90(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_9(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 20)
|
|
mov %r12,%rcx
|
|
movdqa 0x90(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x28(%rsp),%xmm5
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x68(%rsp),%xmm1
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x20(%rsp),%xmm0
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xa0(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_10(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 22)
|
|
mov %r10,%rcx
|
|
movdqa 0xa0(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x38(%rsp),%xmm5
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x78(%rsp),%xmm1
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x30(%rsp),%xmm0
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xb0(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_11(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 24)
|
|
mov %rbx,%rcx
|
|
movdqa 0xb0(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x48(%rsp),%xmm5
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x88(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x40(%rsp),%xmm0
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xc0(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_12(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 26)
|
|
mov %r14,%rcx
|
|
movdqa 0xc0(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x58(%rsp),%xmm5
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x98(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x50(%rsp),%xmm0
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xd0(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_13(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 28)
|
|
mov %r12,%rcx
|
|
movdqa 0xd0(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x68(%rsp),%xmm5
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0xa8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x60(%rsp),%xmm0
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xe0(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_14(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 30)
|
|
mov %r10,%rcx
|
|
movdqa 0xe0(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x78(%rsp),%xmm5
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0xb8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x70(%rsp),%xmm0
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0xf0(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_15(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 32)
|
|
mov %rbx,%rcx
|
|
movdqa 0xf0(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x88(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0xc8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x80(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x100(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_16(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 34)
|
|
mov %r14,%rcx
|
|
movdqa 0x100(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x98(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0xd8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x90(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x110(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_17(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 36)
|
|
mov %r12,%rcx
|
|
movdqa 0x110(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xa8(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0xe8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xa0(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x120(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_18(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 38)
|
|
mov %r10,%rcx
|
|
movdqa 0x120(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xb8(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0xf8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xb0(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x130(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_19(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 40)
|
|
mov %rbx,%rcx
|
|
movdqa 0x130(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xc8(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x108(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xc0(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x140(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_20(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 42)
|
|
mov %r14,%rcx
|
|
movdqa 0x140(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xd8(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x118(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xd0(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x150(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_21(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 44)
|
|
mov %r12,%rcx
|
|
movdqa 0x150(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xe8(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x128(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xe0(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x160(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_22(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 46)
|
|
mov %r10,%rcx
|
|
movdqa 0x160(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0xf8(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x138(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0xf0(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x170(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_23(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 48)
|
|
mov %rbx,%rcx
|
|
movdqa 0x170(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x108(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x148(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x100(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x180(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_24(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 50)
|
|
mov %r14,%rcx
|
|
movdqa 0x180(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x118(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x158(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x110(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x190(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_25(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 52)
|
|
mov %r12,%rcx
|
|
movdqa 0x190(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x128(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x168(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x120(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1a0(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_26(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 54)
|
|
mov %r10,%rcx
|
|
movdqa 0x1a0(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x138(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x178(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x130(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1b0(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_27(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 56)
|
|
mov %rbx,%rcx
|
|
movdqa 0x1b0(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x148(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x188(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x140(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1c0(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_28(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 58)
|
|
mov %r14,%rcx
|
|
movdqa 0x1c0(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x158(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x198(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x150(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1d0(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_29(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 60)
|
|
mov %r12,%rcx
|
|
movdqa 0x1d0(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x168(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x1a8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x160(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1e0(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_30(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 62)
|
|
mov %r10,%rcx
|
|
movdqa 0x1e0(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x178(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x1b8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x170(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x1f0(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_31(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 64)
|
|
mov %rbx,%rcx
|
|
movdqa 0x1f0(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x188(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x1c8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x180(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x200(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_32(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 66)
|
|
mov %r14,%rcx
|
|
movdqa 0x200(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x198(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x1d8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x190(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x210(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_33(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 68)
|
|
mov %r12,%rcx
|
|
movdqa 0x210(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1a8(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x1e8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1a0(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x220(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_34(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 70)
|
|
mov %r10,%rcx
|
|
movdqa 0x220(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1b8(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x1f8(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1b0(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x230(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_35(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//.elseif t < 79 (t == 72)
|
|
mov %rbx,%rcx
|
|
movdqa 0x230(%rsp),%xmm2
|
|
|
|
xor %r9,%rcx
|
|
and %r15,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1c8(%rsp),%xmm5
|
|
|
|
mov %r15,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r15,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r10,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r11,%r8
|
|
xor %r13,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r12,%r8
|
|
mov %r11,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r13,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r11,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r14
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r10
|
|
movdqa %xmm2,%xmm1
|
|
mov %r15,%rcx
|
|
xor %rbx,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r14,%rcx
|
|
xor %rbx,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r14,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r9,%rcx
|
|
mov %r10,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r12,%r8
|
|
and %r11,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r10,%rax
|
|
and %r12,%rax
|
|
movdqu 0x208(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r10,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1c0(%rsp),%xmm0
|
|
|
|
xor %r10,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x240(%rsp)
|
|
|
|
xor %r10,%rax
|
|
paddq .LK512_36(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r13
|
|
lea (%rcx,%r8,1),%r9
|
|
|
|
//.elseif t < 79 (t == 74)
|
|
mov %r14,%rcx
|
|
movdqa 0x240(%rsp),%xmm2
|
|
|
|
xor %r15,%rcx
|
|
and %r13,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r15,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1d8(%rsp),%xmm5
|
|
|
|
mov %r13,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r13,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %rbx,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r9,%r8
|
|
xor %r11,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r10,%r8
|
|
mov %r9,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r11,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r9,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r9,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r12
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%rbx
|
|
movdqa %xmm2,%xmm1
|
|
mov %r13,%rcx
|
|
xor %r14,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r12,%rcx
|
|
xor %r14,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r12,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r12,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r15,%rcx
|
|
mov %rbx,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r10,%r8
|
|
and %r9,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %rbx,%rax
|
|
and %r10,%rax
|
|
movdqu 0x218(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %rbx,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1d0(%rsp),%xmm0
|
|
|
|
xor %rbx,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x250(%rsp)
|
|
|
|
xor %rbx,%rax
|
|
paddq .LK512_37(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r11
|
|
lea (%rcx,%r8,1),%r15
|
|
|
|
//.elseif t < 79 (t == 76)
|
|
mov %r12,%rcx
|
|
movdqa 0x250(%rsp),%xmm2
|
|
|
|
xor %r13,%rcx
|
|
and %r11,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r13,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1e8(%rsp),%xmm5
|
|
|
|
mov %r11,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r11,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r11,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r14,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r15,%r8
|
|
xor %r9,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %rbx,%r8
|
|
mov %r15,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r9,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r15,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r15,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r15,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%r10
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r14
|
|
movdqa %xmm2,%xmm1
|
|
mov %r11,%rcx
|
|
xor %r12,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %r10,%rcx
|
|
xor %r12,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %r10,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %r10,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r13,%rcx
|
|
mov %r14,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %rbx,%r8
|
|
and %r15,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r14,%rax
|
|
and %rbx,%rax
|
|
movdqu 0x228(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r14,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1e0(%rsp),%xmm0
|
|
|
|
xor %r14,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x260(%rsp)
|
|
|
|
xor %r14,%rax
|
|
paddq .LK512_38(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r9
|
|
lea (%rcx,%r8,1),%r13
|
|
|
|
//.elseif t < 79 (t == 78)
|
|
mov %r10,%rcx
|
|
movdqa 0x260(%rsp),%xmm2
|
|
|
|
xor %r11,%rcx
|
|
and %r9,%rcx
|
|
movdqa %xmm2,%xmm0
|
|
xor %r11,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
movdqu 0x1f8(%rsp),%xmm5
|
|
|
|
mov %r9,%rax
|
|
ror $0x17,%rax
|
|
movdqa %xmm5,%xmm3
|
|
xor %r9,%rax
|
|
ror $0x4,%rax
|
|
psrlq $0x2a,%xmm0
|
|
xor %r9,%rax
|
|
ror $0xe,%rax
|
|
psrlq $0x1,%xmm3
|
|
add %rax,%rcx
|
|
add %r12,%rcx
|
|
pxor %xmm2,%xmm0
|
|
mov %r13,%r8
|
|
xor %r15,%r8
|
|
pxor %xmm5,%xmm3
|
|
and %r14,%r8
|
|
mov %r13,%rax
|
|
psrlq $0xd,%xmm0
|
|
and %r15,%rax
|
|
xor %rax,%r8
|
|
psrlq $0x6,%xmm3
|
|
mov %r13,%rax
|
|
ror $0x5,%rax
|
|
pxor %xmm2,%xmm0
|
|
xor %r13,%rax
|
|
ror $0x6,%rax
|
|
pxor %xmm5,%xmm3
|
|
xor %r13,%rax
|
|
ror $0x1c,%rax
|
|
psrlq $0x6,%xmm0
|
|
add %rax,%r8
|
|
add %rcx,%rbx
|
|
psrlq $0x1,%xmm3
|
|
lea (%rcx,%r8,1),%r12
|
|
movdqa %xmm2,%xmm1
|
|
mov %r9,%rcx
|
|
xor %r10,%rcx
|
|
movdqa %xmm5,%xmm4
|
|
and %rbx,%rcx
|
|
xor %r10,%rcx
|
|
psllq $0x2a,%xmm1
|
|
add 0x288(%rsp),%rcx
|
|
|
|
mov %rbx,%rax
|
|
psllq $0x7,%xmm4
|
|
ror $0x17,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm2,%xmm1
|
|
ror $0x4,%rax
|
|
xor %rbx,%rax
|
|
pxor %xmm5,%xmm4
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
psllq $0x3,%xmm1
|
|
add %r11,%rcx
|
|
mov %r12,%r8
|
|
psllq $0x38,%xmm4
|
|
xor %r14,%r8
|
|
and %r13,%r8
|
|
pxor %xmm1,%xmm0
|
|
mov %r12,%rax
|
|
and %r14,%rax
|
|
movdqu 0x238(%rsp),%xmm1
|
|
|
|
xor %rax,%r8
|
|
pxor %xmm4,%xmm3
|
|
mov %r12,%rax
|
|
paddq %xmm3,%xmm0
|
|
ror $0x5,%rax
|
|
paddq 0x1f0(%rsp),%xmm0
|
|
|
|
xor %r12,%rax
|
|
paddq %xmm1,%xmm0
|
|
ror $0x6,%rax
|
|
movdqa %xmm0,0x270(%rsp)
|
|
|
|
xor %r12,%rax
|
|
paddq .LK512_39(%rip),%xmm0
|
|
|
|
ror $0x1c,%rax
|
|
movdqa %xmm0,0x280(%rsp)
|
|
|
|
add %rax,%r8
|
|
add %rcx,%r15
|
|
lea (%rcx,%r8,1),%r11
|
|
|
|
//* Compute 2 Rounds */
|
|
|
|
// SHA512_Round (t - 2)
|
|
mov %rbx,%rcx
|
|
mov %r15,%rax
|
|
xor %r9,%rcx
|
|
ror $0x17,%rax
|
|
and %r15,%rcx
|
|
xor %r15,%rax
|
|
xor %r9,%rcx
|
|
add 0x280(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r15,%rax
|
|
mov %r11,%r8
|
|
add %r10,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r11,%rax
|
|
xor %r13,%r8
|
|
and %r13,%rax
|
|
and %r12,%r8
|
|
xor %rax,%r8
|
|
mov %r11,%rax
|
|
ror $0x5,%rax
|
|
xor %r11,%rax
|
|
add %rcx,%r14
|
|
ror $0x6,%rax
|
|
xor %r11,%rax
|
|
lea (%rcx,%r8,1),%r10
|
|
ror $0x1c,%rax
|
|
add %rax,%r10
|
|
|
|
// SHA512_Round (t - 1)
|
|
mov %r15,%rcx
|
|
mov %r14,%rax
|
|
xor %rbx,%rcx
|
|
ror $0x17,%rax
|
|
and %r14,%rcx
|
|
xor %r14,%rax
|
|
xor %rbx,%rcx
|
|
add 0x288(%rsp),%rcx
|
|
|
|
ror $0x4,%rax
|
|
xor %r14,%rax
|
|
mov %r10,%r8
|
|
add %r9,%rcx
|
|
ror $0xe,%rax
|
|
add %rax,%rcx
|
|
mov %r10,%rax
|
|
xor %r12,%r8
|
|
and %r12,%rax
|
|
and %r11,%r8
|
|
xor %rax,%r8
|
|
mov %r10,%rax
|
|
ror $0x5,%rax
|
|
xor %r10,%rax
|
|
add %rcx,%r13
|
|
ror $0x6,%rax
|
|
xor %r10,%rax
|
|
lea (%rcx,%r8,1),%r9
|
|
ror $0x1c,%rax
|
|
add %rax,%r9
|
|
|
|
//* Update digest */
|
|
add %r9,(%rsi)
|
|
add %r10,0x8(%rsi)
|
|
add %r11,0x10(%rsi)
|
|
add %r12,0x18(%rsi)
|
|
add %r13,0x20(%rsi)
|
|
add %r14,0x28(%rsi)
|
|
add %r15,0x30(%rsi)
|
|
add %rbx,0x38(%rsi)
|
|
|
|
//* Advance to next message block */
|
|
add $0x80,%rdi
|
|
dec %rdx
|
|
jne .Lupdateblock
|
|
|
|
//* Restore GPRs */
|
|
mov 0x290(%rsp),%rbx
|
|
mov 0x298(%rsp),%r12
|
|
mov 0x2a0(%rsp),%r13
|
|
mov 0x2a8(%rsp),%r14
|
|
mov 0x2b0(%rsp),%r15
|
|
|
|
//* Restore Stack Pointer */
|
|
add $0x2b8,%rsp
|
|
|
|
pxor %xmm0,%xmm0
|
|
pxor %xmm1,%xmm1
|
|
pxor %xmm2,%xmm2
|
|
pxor %xmm3,%xmm3
|
|
pxor %xmm4,%xmm4
|
|
pxor %xmm5,%xmm5
|
|
|
|
//* Return stack burn depth */
|
|
mov $0x2b8,%rax
|
|
|
|
.Lnowork:
|
|
{$IF DEFINED(WIN64)}
|
|
popq %rdi
|
|
popq %rsi
|
|
{$ENDIF}
|
|
retq
|
|
|
|
//*
|
|
// Binary Data
|
|
//*
|
|
|
|
.balign 16
|
|
|
|
//* Mask for byte-swapping a couple of qwords in an XMM register using (v)pshufb. */
|
|
.LXMM_QWORD_BSWAP:
|
|
.quad 0x0001020304050607, 0x08090a0b0c0d0e0f
|
|
|
|
//* K[t] used in SHA512 hashing */
|
|
.LK512_0:
|
|
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
|
.LK512_1:
|
|
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
|
.LK512_2:
|
|
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
|
.LK512_3:
|
|
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
|
.LK512_4:
|
|
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
|
.LK512_5:
|
|
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
|
.LK512_6:
|
|
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
|
.LK512_7:
|
|
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
|
.LK512_8:
|
|
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
|
.LK512_9:
|
|
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
|
.LK512_10:
|
|
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
|
.LK512_11:
|
|
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
|
.LK512_12:
|
|
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
|
.LK512_13:
|
|
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
|
.LK512_14:
|
|
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
|
.LK512_15:
|
|
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
|
.LK512_16:
|
|
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
|
.LK512_17:
|
|
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
|
.LK512_18:
|
|
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
|
.LK512_19:
|
|
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
|
.LK512_20:
|
|
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
|
.LK512_21:
|
|
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
|
.LK512_22:
|
|
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
|
.LK512_23:
|
|
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
|
.LK512_24:
|
|
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
|
.LK512_25:
|
|
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
|
.LK512_26:
|
|
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
|
.LK512_27:
|
|
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
|
.LK512_28:
|
|
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
|
.LK512_29:
|
|
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
|
.LK512_30:
|
|
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
|
.LK512_31:
|
|
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
|
.LK512_32:
|
|
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
|
.LK512_33:
|
|
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
|
.LK512_34:
|
|
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
|
.LK512_35:
|
|
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
|
.LK512_36:
|
|
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
|
.LK512_37:
|
|
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
|
.LK512_38:
|
|
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
|
.LK512_39:
|
|
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
|
end;
|
|
|