# qhasm: int64 a # qhasm: int64 arg1 # qhasm: int64 arg2 # qhasm: int64 arg3 # qhasm: int64 arg4 # qhasm: input arg1 # qhasm: input arg2 # qhasm: input arg3 # qhasm: input arg4 # qhasm: int64 r11 # qhasm: int64 r12 # qhasm: int64 r13 # qhasm: int64 r14 # qhasm: int64 r15 # qhasm: int64 rbx # qhasm: int64 rbp # qhasm: caller r11 # qhasm: caller r12 # qhasm: caller r13 # qhasm: caller r14 # qhasm: caller r15 # qhasm: caller rbx # qhasm: caller rbp # qhasm: stack64 r11_stack # qhasm: stack64 r12_stack # qhasm: stack64 r13_stack # qhasm: stack64 r14_stack # qhasm: stack64 r15_stack # qhasm: stack64 rbx_stack # qhasm: stack64 rbp_stack # qhasm: int64 k # qhasm: int64 kbits # qhasm: int64 iv # qhasm: int64 i # qhasm: int64 x # qhasm: int64 m # qhasm: int64 out # qhasm: int64 bytes # qhasm: int6464 diag0 # qhasm: int6464 diag1 # qhasm: int6464 diag2 # qhasm: int6464 diag3 # qhasm: int6464 a0 # qhasm: int6464 a1 # qhasm: int6464 a2 # qhasm: int6464 a3 # qhasm: int6464 a4 # qhasm: int6464 a5 # qhasm: int6464 a6 # qhasm: int6464 a7 # qhasm: int6464 b0 # qhasm: int6464 b1 # qhasm: int6464 b2 # qhasm: int6464 b3 # qhasm: int6464 b4 # qhasm: int6464 b5 # qhasm: int6464 b6 # qhasm: int6464 b7 # qhasm: int6464 z0 # qhasm: int6464 z1 # qhasm: int6464 z2 # qhasm: int6464 z3 # qhasm: int6464 z4 # qhasm: int6464 z5 # qhasm: int6464 z6 # qhasm: int6464 z7 # qhasm: int6464 z8 # qhasm: int6464 z9 # qhasm: int6464 z10 # qhasm: int6464 z11 # qhasm: int6464 z12 # qhasm: int6464 z13 # qhasm: int6464 z14 # qhasm: int6464 z15 # qhasm: stack128 z0_stack # qhasm: stack128 z1_stack # qhasm: stack128 z2_stack # qhasm: stack128 z3_stack # qhasm: stack128 z4_stack # qhasm: stack128 z5_stack # qhasm: stack128 z6_stack # qhasm: stack128 z7_stack # qhasm: stack128 z8_stack # qhasm: stack128 z9_stack # qhasm: stack128 z10_stack # qhasm: stack128 z11_stack # qhasm: stack128 z12_stack # qhasm: stack128 z13_stack # qhasm: stack128 z14_stack # qhasm: stack128 z15_stack # qhasm: int6464 y0 # qhasm: int6464 y1 # qhasm: int6464 y2 # qhasm: int6464 y3 # qhasm: int6464 y4 # qhasm: int6464 y5 # qhasm: int6464 y6 # qhasm: int6464 y7 # qhasm: int6464 y8 # qhasm: int6464 y9 # qhasm: int6464 y10 # qhasm: int6464 y11 # qhasm: int6464 y12 # qhasm: int6464 y13 # qhasm: int6464 y14 # qhasm: int6464 y15 # qhasm: int6464 shift4 # qhasm: int6464 shift5 # qhasm: int6464 shift6 # qhasm: int6464 shift7 # qhasm: int6464 shift12 # qhasm: int6464 shift13 # qhasm: int6464 shift14 # qhasm: int6464 shift15 # qhasm: stack128 orig0 # qhasm: stack128 orig1 # qhasm: stack128 orig2 # qhasm: stack128 orig3 # qhasm: stack128 orig4 # qhasm: stack128 orig5 # qhasm: stack128 orig6 # qhasm: stack128 orig7 # qhasm: stack128 orig8 # qhasm: stack128 orig9 # qhasm: stack128 orig10 # qhasm: stack128 orig11 # qhasm: stack128 orig12 # qhasm: stack128 orig13 # qhasm: stack128 orig14 # qhasm: stack128 orig15 # qhasm: int64 in0 # qhasm: int64 in1 # qhasm: int64 in2 # qhasm: int64 in3 # qhasm: int64 in4 # qhasm: int64 in5 # qhasm: int64 in6 # qhasm: int64 in7 # qhasm: int64 in8 # qhasm: int64 in9 # qhasm: int64 in10 # qhasm: int64 in11 # qhasm: int64 in12 # qhasm: int64 in13 # qhasm: int64 in14 # qhasm: int64 in15 # qhasm: stack512 tmp # qhasm: int64 ctarget # qhasm: stack64 bytes_backup # qhasm: enter ECRYPT_keystream_bytes .text .p2align 5 .globl _ECRYPT_keystream_bytes .globl ECRYPT_keystream_bytes _ECRYPT_keystream_bytes: ECRYPT_keystream_bytes: mov %rsp,%r11 and $31,%r11 add $384,%r11 sub %r11,%rsp # qhasm: x = arg1 # asm 1: mov x=int64#5 # asm 2: mov x=%r8 mov %rdi,%r8 # qhasm: m = arg2 # asm 1: mov m=int64#2 # asm 2: mov m=%rsi mov %rsi,%rsi # qhasm: out = m # asm 1: mov out=int64#1 # asm 2: mov out=%rdi mov %rsi,%rdi # qhasm: bytes = arg3 # asm 1: mov bytes=int64#3 # asm 2: mov bytes=%rdx mov %rdx,%rdx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # qhasm: a = 0 # asm 1: mov $0,>a=int64#7 # asm 2: mov $0,>a=%rax mov $0,%rax # qhasm: i = bytes # asm 1: mov i=int64#4 # asm 2: mov i=%rcx mov %rdx,%rcx # qhasm: while (i) { *out++ = a; --i } rep stosb # qhasm: out -= bytes # asm 1: sub x=int64#5 # asm 2: mov x=%r8 mov %rdi,%r8 # qhasm: m = arg2 # asm 1: mov m=int64#2 # asm 2: mov m=%rsi mov %rsi,%rsi # qhasm: out = arg3 # asm 1: mov out=int64#1 # asm 2: mov out=%rdi mov %rdx,%rdi # qhasm: bytes = arg4 # asm 1: mov bytes=int64#3 # asm 2: mov bytes=%rdx mov %rcx,%rdx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # comment:fp stack unchanged by jump # qhasm: goto start jmp ._start # qhasm: enter ECRYPT_encrypt_bytes .text .p2align 5 .globl _ECRYPT_encrypt_bytes .globl ECRYPT_encrypt_bytes _ECRYPT_encrypt_bytes: ECRYPT_encrypt_bytes: mov %rsp,%r11 and $31,%r11 add $384,%r11 sub %r11,%rsp # qhasm: x = arg1 # asm 1: mov x=int64#5 # asm 2: mov x=%r8 mov %rdi,%r8 # qhasm: m = arg2 # asm 1: mov m=int64#2 # asm 2: mov m=%rsi mov %rsi,%rsi # qhasm: out = arg3 # asm 1: mov out=int64#1 # asm 2: mov out=%rdi mov %rdx,%rdi # qhasm: bytes = arg4 # asm 1: mov bytes=int64#3 # asm 2: mov bytes=%rdx mov %rcx,%rdx # qhasm: unsigned>? bytes - 0 # asm 1: cmp $0, jbe ._done # comment:fp stack unchanged by fallthrough # qhasm: start: ._start: # qhasm: unsignedz0=int6464#1 # asm 2: movdqa 0(z0=%xmm0 movdqa 0(%r8),%xmm0 # qhasm: z1 = z0[1,1,1,1] # asm 1: pshufd $0x55,z1=int6464#2 # asm 2: pshufd $0x55,z1=%xmm1 pshufd $0x55,%xmm0,%xmm1 # qhasm: z2 = z0[2,2,2,2] # asm 1: pshufd $0xaa,z2=int6464#3 # asm 2: pshufd $0xaa,z2=%xmm2 pshufd $0xaa,%xmm0,%xmm2 # qhasm: z3 = z0[3,3,3,3] # asm 1: pshufd $0xff,z3=int6464#4 # asm 2: pshufd $0xff,z3=%xmm3 pshufd $0xff,%xmm0,%xmm3 # qhasm: z0 = z0[0,0,0,0] # asm 1: pshufd $0x00,z0=int6464#1 # asm 2: pshufd $0x00,z0=%xmm0 pshufd $0x00,%xmm0,%xmm0 # qhasm: orig0 = z0 # asm 1: movdqa orig0=stack128#1 # asm 2: movdqa orig0=0(%rsp) movdqa %xmm0,0(%rsp) # qhasm: orig1 = z1 # asm 1: movdqa orig1=stack128#2 # asm 2: movdqa orig1=16(%rsp) movdqa %xmm1,16(%rsp) # qhasm: orig2 = z2 # asm 1: movdqa orig2=stack128#3 # asm 2: movdqa orig2=32(%rsp) movdqa %xmm2,32(%rsp) # qhasm: orig3 = z3 # asm 1: movdqa orig3=stack128#4 # asm 2: movdqa orig3=48(%rsp) movdqa %xmm3,48(%rsp) # qhasm: z4 = *(int128 *) (x + 16) # asm 1: movdqa 16(z4=int6464#1 # asm 2: movdqa 16(z4=%xmm0 movdqa 16(%r8),%xmm0 # qhasm: z5 = z4[1,1,1,1] # asm 1: pshufd $0x55,z5=int6464#2 # asm 2: pshufd $0x55,z5=%xmm1 pshufd $0x55,%xmm0,%xmm1 # qhasm: z6 = z4[2,2,2,2] # asm 1: pshufd $0xaa,z6=int6464#3 # asm 2: pshufd $0xaa,z6=%xmm2 pshufd $0xaa,%xmm0,%xmm2 # qhasm: z7 = z4[3,3,3,3] # asm 1: pshufd $0xff,z7=int6464#4 # asm 2: pshufd $0xff,z7=%xmm3 pshufd $0xff,%xmm0,%xmm3 # qhasm: z4 = z4[0,0,0,0] # asm 1: pshufd $0x00,z4=int6464#1 # asm 2: pshufd $0x00,z4=%xmm0 pshufd $0x00,%xmm0,%xmm0 # qhasm: orig4 = z4 # asm 1: movdqa orig4=stack128#5 # asm 2: movdqa orig4=64(%rsp) movdqa %xmm0,64(%rsp) # qhasm: orig5 = z5 # asm 1: movdqa orig5=stack128#6 # asm 2: movdqa orig5=80(%rsp) movdqa %xmm1,80(%rsp) # qhasm: orig6 = z6 # asm 1: movdqa orig6=stack128#7 # asm 2: movdqa orig6=96(%rsp) movdqa %xmm2,96(%rsp) # qhasm: orig7 = z7 # asm 1: movdqa orig7=stack128#8 # asm 2: movdqa orig7=112(%rsp) movdqa %xmm3,112(%rsp) # qhasm: z8 = *(int128 *) (x + 32) # asm 1: movdqa 32(z8=int6464#1 # asm 2: movdqa 32(z8=%xmm0 movdqa 32(%r8),%xmm0 # qhasm: z9 = z8[1,1,1,1] # asm 1: pshufd $0x55,z9=int6464#2 # asm 2: pshufd $0x55,z9=%xmm1 pshufd $0x55,%xmm0,%xmm1 # qhasm: z10 = z8[2,2,2,2] # asm 1: pshufd $0xaa,z10=int6464#3 # asm 2: pshufd $0xaa,z10=%xmm2 pshufd $0xaa,%xmm0,%xmm2 # qhasm: z11 = z8[3,3,3,3] # asm 1: pshufd $0xff,z11=int6464#4 # asm 2: pshufd $0xff,z11=%xmm3 pshufd $0xff,%xmm0,%xmm3 # qhasm: z8 = z8[0,0,0,0] # asm 1: pshufd $0x00,z8=int6464#1 # asm 2: pshufd $0x00,z8=%xmm0 pshufd $0x00,%xmm0,%xmm0 # qhasm: orig8 = z8 # asm 1: movdqa orig8=stack128#9 # asm 2: movdqa orig8=128(%rsp) movdqa %xmm0,128(%rsp) # qhasm: orig9 = z9 # asm 1: movdqa orig9=stack128#10 # asm 2: movdqa orig9=144(%rsp) movdqa %xmm1,144(%rsp) # qhasm: orig10 = z10 # asm 1: movdqa orig10=stack128#11 # asm 2: movdqa orig10=160(%rsp) movdqa %xmm2,160(%rsp) # qhasm: orig11 = z11 # asm 1: movdqa orig11=stack128#12 # asm 2: movdqa orig11=176(%rsp) movdqa %xmm3,176(%rsp) # qhasm: z12 = *(int128 *) (x + 48) # asm 1: movdqa 48(z12=int6464#1 # asm 2: movdqa 48(z12=%xmm0 movdqa 48(%r8),%xmm0 # qhasm: z14 = z12[2,2,2,2] # asm 1: pshufd $0xaa,z14=int6464#2 # asm 2: pshufd $0xaa,z14=%xmm1 pshufd $0xaa,%xmm0,%xmm1 # qhasm: z15 = z12[3,3,3,3] # asm 1: pshufd $0xff,z15=int6464#1 # asm 2: pshufd $0xff,z15=%xmm0 pshufd $0xff,%xmm0,%xmm0 # qhasm: orig14 = z14 # asm 1: movdqa orig14=stack128#13 # asm 2: movdqa orig14=192(%rsp) movdqa %xmm1,192(%rsp) # qhasm: orig15 = z15 # asm 1: movdqa orig15=stack128#14 # asm 2: movdqa orig15=208(%rsp) movdqa %xmm0,208(%rsp) # qhasm: bytesatleast256: ._bytesatleast256: # qhasm: bytes_backup = bytes # asm 1: movq bytes_backup=stack64#1 # asm 2: movq bytes_backup=288(%rsp) movq %rdx,288(%rsp) # qhasm: in0 = *(uint64 *) (x + 48) # asm 1: movq 48(in0=int64#3 # asm 2: movq 48(in0=%rdx movq 48(%r8),%rdx # qhasm: in1 = in0 + 1 # asm 1: lea 1(in1=int64#4 # asm 2: lea 1(in1=%rcx lea 1(%rdx),%rcx # qhasm: in2 = in0 + 2 # asm 1: lea 2(in2=int64#6 # asm 2: lea 2(in2=%r9 lea 2(%rdx),%r9 # qhasm: in3 = in0 + 3 # asm 1: lea 3(in3=int64#7 # asm 2: lea 3(in3=%rax lea 3(%rdx),%rax # qhasm: in4 = in0 + 4 # asm 1: lea 4(in4=int64#8 # asm 2: lea 4(in4=%r10 lea 4(%rdx),%r10 # qhasm: ((uint32 *) &orig12)[0] = in0 # asm 1: movl orig12=stack128#15 # asm 2: movl orig12=224(%rsp) movl %edx,224(%rsp) # qhasm: ((uint32 *) &orig12)[1] = in1 # asm 1: movl >= 32 # asm 1: shr $32,>= 32 # asm 1: shr $32,>= 32 # asm 1: shr $32,>= 32 # asm 1: shr $32,orig13=stack128#16 # asm 2: movl orig13=240(%rsp) movl %edx,240(%rsp) # qhasm: ((uint32 *) &orig13)[1] = in1 # asm 1: movl i=int64#3 # asm 2: mov $8,>i=%rdx mov $8,%rdx # qhasm: z2 = orig2 # asm 1: movdqa z2=int6464#1 # asm 2: movdqa z2=%xmm0 movdqa 32(%rsp),%xmm0 # qhasm: z6 = orig6 # asm 1: movdqa z6=int6464#2 # asm 2: movdqa z6=%xmm1 movdqa 96(%rsp),%xmm1 # qhasm: z10 = orig10 # asm 1: movdqa z10=int6464#3 # asm 2: movdqa z10=%xmm2 movdqa 160(%rsp),%xmm2 # qhasm: z14 = orig14 # asm 1: movdqa z14=int6464#4 # asm 2: movdqa z14=%xmm3 movdqa 192(%rsp),%xmm3 # qhasm: z3 = orig3 # asm 1: movdqa z3=int6464#5 # asm 2: movdqa z3=%xmm4 movdqa 48(%rsp),%xmm4 # qhasm: z7 = orig7 # asm 1: movdqa z7=int6464#6 # asm 2: movdqa z7=%xmm5 movdqa 112(%rsp),%xmm5 # qhasm: z11 = orig11 # asm 1: movdqa z11=int6464#7 # asm 2: movdqa z11=%xmm6 movdqa 176(%rsp),%xmm6 # qhasm: z15 = orig15 # asm 1: movdqa z15=int6464#8 # asm 2: movdqa z15=%xmm7 movdqa 208(%rsp),%xmm7 # qhasm: z0 = orig0 # asm 1: movdqa z0=int6464#9 # asm 2: movdqa z0=%xmm8 movdqa 0(%rsp),%xmm8 # qhasm: z4 = orig4 # asm 1: movdqa z4=int6464#10 # asm 2: movdqa z4=%xmm9 movdqa 64(%rsp),%xmm9 # qhasm: z8 = orig8 # asm 1: movdqa z8=int6464#11 # asm 2: movdqa z8=%xmm10 movdqa 128(%rsp),%xmm10 # qhasm: z12 = orig12 # asm 1: movdqa z12=int6464#12 # asm 2: movdqa z12=%xmm11 movdqa 224(%rsp),%xmm11 # qhasm: z1 = orig1 # asm 1: movdqa z1=int6464#13 # asm 2: movdqa z1=%xmm12 movdqa 16(%rsp),%xmm12 # qhasm: z5 = orig5 # asm 1: movdqa z5=int6464#14 # asm 2: movdqa z5=%xmm13 movdqa 80(%rsp),%xmm13 # qhasm: z9 = orig9 # asm 1: movdqa z9=int6464#15 # asm 2: movdqa z9=%xmm14 movdqa 144(%rsp),%xmm14 # qhasm: z13 = orig13 # asm 1: movdqa z13=int6464#16 # asm 2: movdqa z13=%xmm15 movdqa 240(%rsp),%xmm15 # qhasm: z11_stack = z11 # asm 1: movdqa z11_stack=stack128#17 # asm 2: movdqa z11_stack=256(%rsp) movdqa %xmm6,256(%rsp) # qhasm: mainloop1: ._mainloop1: # qhasm: uint32323232 z0 += z4 # asm 1: paddd shift12=int6464#7 # asm 2: movdqa shift12=%xmm6 movdqa %xmm11,%xmm6 # qhasm: uint32323232 z12 >>= 16 # asm 1: psrld $16,shift13=int6464#7 # asm 2: movdqa shift13=%xmm6 movdqa %xmm15,%xmm6 # qhasm: uint32323232 z13 >>= 16 # asm 1: psrld $16,shift4=int6464#7 # asm 2: movdqa shift4=%xmm6 movdqa %xmm9,%xmm6 # qhasm: uint32323232 z4 >>= 20 # asm 1: psrld $20,shift5=int6464#7 # asm 2: movdqa shift5=%xmm6 movdqa %xmm13,%xmm6 # qhasm: uint32323232 z5 >>= 20 # asm 1: psrld $20,shift12=int6464#7 # asm 2: movdqa shift12=%xmm6 movdqa %xmm11,%xmm6 # qhasm: uint32323232 z12 >>= 24 # asm 1: psrld $24,shift13=int6464#7 # asm 2: movdqa shift13=%xmm6 movdqa %xmm15,%xmm6 # qhasm: uint32323232 z13 >>= 24 # asm 1: psrld $24,shift4=int6464#7 # asm 2: movdqa shift4=%xmm6 movdqa %xmm9,%xmm6 # qhasm: uint32323232 z4 >>= 25 # asm 1: psrld $25,shift5=int6464#7 # asm 2: movdqa shift5=%xmm6 movdqa %xmm13,%xmm6 # qhasm: uint32323232 z5 >>= 25 # asm 1: psrld $25,z9_stack=stack128#18 # asm 2: movdqa z9_stack=272(%rsp) movdqa %xmm14,272(%rsp) # qhasm: z11 = z11_stack # asm 1: movdqa z11=int6464#7 # asm 2: movdqa z11=%xmm6 movdqa 256(%rsp),%xmm6 # qhasm: uint32323232 z2 += z6 # asm 1: paddd shift14=int6464#15 # asm 2: movdqa shift14=%xmm14 movdqa %xmm3,%xmm14 # qhasm: uint32323232 z14 >>= 16 # asm 1: psrld $16,shift15=int6464#15 # asm 2: movdqa shift15=%xmm14 movdqa %xmm7,%xmm14 # qhasm: uint32323232 z15 >>= 16 # asm 1: psrld $16,shift6=int6464#15 # asm 2: movdqa shift6=%xmm14 movdqa %xmm1,%xmm14 # qhasm: uint32323232 z6 >>= 20 # asm 1: psrld $20,shift7=int6464#15 # asm 2: movdqa shift7=%xmm14 movdqa %xmm5,%xmm14 # qhasm: uint32323232 z7 >>= 20 # asm 1: psrld $20,shift14=int6464#15 # asm 2: movdqa shift14=%xmm14 movdqa %xmm3,%xmm14 # qhasm: uint32323232 z14 >>= 24 # asm 1: psrld $24,shift15=int6464#15 # asm 2: movdqa shift15=%xmm14 movdqa %xmm7,%xmm14 # qhasm: uint32323232 z15 >>= 24 # asm 1: psrld $24,shift6=int6464#15 # asm 2: movdqa shift6=%xmm14 movdqa %xmm1,%xmm14 # qhasm: uint32323232 z6 >>= 25 # asm 1: psrld $25,shift7=int6464#15 # asm 2: movdqa shift7=%xmm14 movdqa %xmm5,%xmm14 # qhasm: uint32323232 z7 >>= 25 # asm 1: psrld $25,shift15=int6464#15 # asm 2: movdqa shift15=%xmm14 movdqa %xmm7,%xmm14 # qhasm: uint32323232 z15 >>= 16 # asm 1: psrld $16,shift13=int6464#15 # asm 2: movdqa shift13=%xmm14 movdqa %xmm11,%xmm14 # qhasm: uint32323232 z12 >>= 16 # asm 1: psrld $16,shift5=int6464#15 # asm 2: movdqa shift5=%xmm14 movdqa %xmm13,%xmm14 # qhasm: uint32323232 z5 >>= 20 # asm 1: psrld $20,shift6=int6464#15 # asm 2: movdqa shift6=%xmm14 movdqa %xmm1,%xmm14 # qhasm: uint32323232 z6 >>= 20 # asm 1: psrld $20,shift15=int6464#15 # asm 2: movdqa shift15=%xmm14 movdqa %xmm7,%xmm14 # qhasm: uint32323232 z15 >>= 24 # asm 1: psrld $24,shift13=int6464#15 # asm 2: movdqa shift13=%xmm14 movdqa %xmm11,%xmm14 # qhasm: uint32323232 z12 >>= 24 # asm 1: psrld $24,shift5=int6464#15 # asm 2: movdqa shift5=%xmm14 movdqa %xmm13,%xmm14 # qhasm: uint32323232 z5 >>= 25 # asm 1: psrld $25,shift6=int6464#15 # asm 2: movdqa shift6=%xmm14 movdqa %xmm1,%xmm14 # qhasm: uint32323232 z6 >>= 25 # asm 1: psrld $25,z11_stack=stack128#17 # asm 2: movdqa z11_stack=256(%rsp) movdqa %xmm6,256(%rsp) # qhasm: z9 = z9_stack # asm 1: movdqa z9=int6464#15 # asm 2: movdqa z9=%xmm14 movdqa 272(%rsp),%xmm14 # qhasm: uint32323232 z2 += z7 # asm 1: paddd shift13=int6464#7 # asm 2: movdqa shift13=%xmm6 movdqa %xmm15,%xmm6 # qhasm: uint32323232 z13 >>= 16 # asm 1: psrld $16,shift14=int6464#7 # asm 2: movdqa shift14=%xmm6 movdqa %xmm3,%xmm6 # qhasm: uint32323232 z14 >>= 16 # asm 1: psrld $16,shift7=int6464#7 # asm 2: movdqa shift7=%xmm6 movdqa %xmm5,%xmm6 # qhasm: uint32323232 z7 >>= 20 # asm 1: psrld $20,? i -= 2 # asm 1: sub $2,shift4=int6464#7 # asm 2: movdqa shift4=%xmm6 movdqa %xmm9,%xmm6 # qhasm: uint32323232 z4 >>= 20 # asm 1: psrld $20,shift13=int6464#7 # asm 2: movdqa shift13=%xmm6 movdqa %xmm15,%xmm6 # qhasm: uint32323232 z13 >>= 24 # asm 1: psrld $24,shift14=int6464#7 # asm 2: movdqa shift14=%xmm6 movdqa %xmm3,%xmm6 # qhasm: uint32323232 z14 >>= 24 # asm 1: psrld $24,shift7=int6464#7 # asm 2: movdqa shift7=%xmm6 movdqa %xmm5,%xmm6 # qhasm: uint32323232 z7 >>= 25 # asm 1: psrld $25,shift4=int6464#7 # asm 2: movdqa shift4=%xmm6 movdqa %xmm9,%xmm6 # qhasm: uint32323232 z4 >>= 25 # asm 1: psrld $25, ja ._mainloop1 # qhasm: z11 = z11_stack # asm 1: movdqa z11=int6464#7 # asm 2: movdqa z11=%xmm6 movdqa 256(%rsp),%xmm6 # qhasm: uint32323232 z0 += orig0 # asm 1: paddd in0=int64#3 # asm 2: movd in0=%rdx movd %xmm8,%rdx # qhasm: in1 = z1 # asm 1: movd in1=int64#4 # asm 2: movd in1=%rcx movd %xmm12,%rcx # qhasm: in2 = z2 # asm 1: movd in2=int64#6 # asm 2: movd in2=%r9 movd %xmm0,%r9 # qhasm: in3 = z3 # asm 1: movd in3=int64#7 # asm 2: movd in3=%rax movd %xmm4,%rax # qhasm: z0 <<<= 96 # asm 1: pshufd $0x39,in0=int64#3 # asm 2: movd in0=%rdx movd %xmm8,%rdx # qhasm: in1 = z1 # asm 1: movd in1=int64#4 # asm 2: movd in1=%rcx movd %xmm12,%rcx # qhasm: in2 = z2 # asm 1: movd in2=int64#6 # asm 2: movd in2=%r9 movd %xmm0,%r9 # qhasm: in3 = z3 # asm 1: movd in3=int64#7 # asm 2: movd in3=%rax movd %xmm4,%rax # qhasm: z0 <<<= 96 # asm 1: pshufd $0x39,in0=int64#3 # asm 2: movd in0=%rdx movd %xmm8,%rdx # qhasm: in1 = z1 # asm 1: movd in1=int64#4 # asm 2: movd in1=%rcx movd %xmm12,%rcx # qhasm: in2 = z2 # asm 1: movd in2=int64#6 # asm 2: movd in2=%r9 movd %xmm0,%r9 # qhasm: in3 = z3 # asm 1: movd in3=int64#7 # asm 2: movd in3=%rax movd %xmm4,%rax # qhasm: z0 <<<= 96 # asm 1: pshufd $0x39,in0=int64#3 # asm 2: movd in0=%rdx movd %xmm8,%rdx # qhasm: in1 = z1 # asm 1: movd in1=int64#4 # asm 2: movd in1=%rcx movd %xmm12,%rcx # qhasm: in2 = z2 # asm 1: movd in2=int64#6 # asm 2: movd in2=%r9 movd %xmm0,%r9 # qhasm: in3 = z3 # asm 1: movd in3=int64#7 # asm 2: movd in3=%rax movd %xmm4,%rax # qhasm: (uint32) in0 ^= *(uint32 *) (m + 192) # asm 1: xorl 192(in4=int64#3 # asm 2: movd in4=%rdx movd %xmm9,%rdx # qhasm: in5 = z5 # asm 1: movd in5=int64#4 # asm 2: movd in5=%rcx movd %xmm13,%rcx # qhasm: in6 = z6 # asm 1: movd in6=int64#6 # asm 2: movd in6=%r9 movd %xmm1,%r9 # qhasm: in7 = z7 # asm 1: movd in7=int64#7 # asm 2: movd in7=%rax movd %xmm5,%rax # qhasm: z4 <<<= 96 # asm 1: pshufd $0x39,in4=int64#3 # asm 2: movd in4=%rdx movd %xmm9,%rdx # qhasm: in5 = z5 # asm 1: movd in5=int64#4 # asm 2: movd in5=%rcx movd %xmm13,%rcx # qhasm: in6 = z6 # asm 1: movd in6=int64#6 # asm 2: movd in6=%r9 movd %xmm1,%r9 # qhasm: in7 = z7 # asm 1: movd in7=int64#7 # asm 2: movd in7=%rax movd %xmm5,%rax # qhasm: z4 <<<= 96 # asm 1: pshufd $0x39,in4=int64#3 # asm 2: movd in4=%rdx movd %xmm9,%rdx # qhasm: in5 = z5 # asm 1: movd in5=int64#4 # asm 2: movd in5=%rcx movd %xmm13,%rcx # qhasm: in6 = z6 # asm 1: movd in6=int64#6 # asm 2: movd in6=%r9 movd %xmm1,%r9 # qhasm: in7 = z7 # asm 1: movd in7=int64#7 # asm 2: movd in7=%rax movd %xmm5,%rax # qhasm: z4 <<<= 96 # asm 1: pshufd $0x39,in4=int64#3 # asm 2: movd in4=%rdx movd %xmm9,%rdx # qhasm: in5 = z5 # asm 1: movd in5=int64#4 # asm 2: movd in5=%rcx movd %xmm13,%rcx # qhasm: in6 = z6 # asm 1: movd in6=int64#6 # asm 2: movd in6=%r9 movd %xmm1,%r9 # qhasm: in7 = z7 # asm 1: movd in7=int64#7 # asm 2: movd in7=%rax movd %xmm5,%rax # qhasm: (uint32) in4 ^= *(uint32 *) (m + 208) # asm 1: xorl 208(in8=int64#3 # asm 2: movd in8=%rdx movd %xmm10,%rdx # qhasm: in9 = z9 # asm 1: movd in9=int64#4 # asm 2: movd in9=%rcx movd %xmm14,%rcx # qhasm: in10 = z10 # asm 1: movd in10=int64#6 # asm 2: movd in10=%r9 movd %xmm2,%r9 # qhasm: in11 = z11 # asm 1: movd in11=int64#7 # asm 2: movd in11=%rax movd %xmm6,%rax # qhasm: z8 <<<= 96 # asm 1: pshufd $0x39,in8=int64#3 # asm 2: movd in8=%rdx movd %xmm10,%rdx # qhasm: in9 = z9 # asm 1: movd in9=int64#4 # asm 2: movd in9=%rcx movd %xmm14,%rcx # qhasm: in10 = z10 # asm 1: movd in10=int64#6 # asm 2: movd in10=%r9 movd %xmm2,%r9 # qhasm: in11 = z11 # asm 1: movd in11=int64#7 # asm 2: movd in11=%rax movd %xmm6,%rax # qhasm: z8 <<<= 96 # asm 1: pshufd $0x39,in8=int64#3 # asm 2: movd in8=%rdx movd %xmm10,%rdx # qhasm: in9 = z9 # asm 1: movd in9=int64#4 # asm 2: movd in9=%rcx movd %xmm14,%rcx # qhasm: in10 = z10 # asm 1: movd in10=int64#6 # asm 2: movd in10=%r9 movd %xmm2,%r9 # qhasm: in11 = z11 # asm 1: movd in11=int64#7 # asm 2: movd in11=%rax movd %xmm6,%rax # qhasm: z8 <<<= 96 # asm 1: pshufd $0x39,in8=int64#3 # asm 2: movd in8=%rdx movd %xmm10,%rdx # qhasm: in9 = z9 # asm 1: movd in9=int64#4 # asm 2: movd in9=%rcx movd %xmm14,%rcx # qhasm: in10 = z10 # asm 1: movd in10=int64#6 # asm 2: movd in10=%r9 movd %xmm2,%r9 # qhasm: in11 = z11 # asm 1: movd in11=int64#7 # asm 2: movd in11=%rax movd %xmm6,%rax # qhasm: (uint32) in8 ^= *(uint32 *) (m + 224) # asm 1: xorl 224(in12=int64#3 # asm 2: movd in12=%rdx movd %xmm11,%rdx # qhasm: in13 = z13 # asm 1: movd in13=int64#4 # asm 2: movd in13=%rcx movd %xmm15,%rcx # qhasm: in14 = z14 # asm 1: movd in14=int64#6 # asm 2: movd in14=%r9 movd %xmm3,%r9 # qhasm: in15 = z15 # asm 1: movd in15=int64#7 # asm 2: movd in15=%rax movd %xmm7,%rax # qhasm: z12 <<<= 96 # asm 1: pshufd $0x39,in12=int64#3 # asm 2: movd in12=%rdx movd %xmm11,%rdx # qhasm: in13 = z13 # asm 1: movd in13=int64#4 # asm 2: movd in13=%rcx movd %xmm15,%rcx # qhasm: in14 = z14 # asm 1: movd in14=int64#6 # asm 2: movd in14=%r9 movd %xmm3,%r9 # qhasm: in15 = z15 # asm 1: movd in15=int64#7 # asm 2: movd in15=%rax movd %xmm7,%rax # qhasm: z12 <<<= 96 # asm 1: pshufd $0x39,in12=int64#3 # asm 2: movd in12=%rdx movd %xmm11,%rdx # qhasm: in13 = z13 # asm 1: movd in13=int64#4 # asm 2: movd in13=%rcx movd %xmm15,%rcx # qhasm: in14 = z14 # asm 1: movd in14=int64#6 # asm 2: movd in14=%r9 movd %xmm3,%r9 # qhasm: in15 = z15 # asm 1: movd in15=int64#7 # asm 2: movd in15=%rax movd %xmm7,%rax # qhasm: z12 <<<= 96 # asm 1: pshufd $0x39,in12=int64#3 # asm 2: movd in12=%rdx movd %xmm11,%rdx # qhasm: in13 = z13 # asm 1: movd in13=int64#4 # asm 2: movd in13=%rcx movd %xmm15,%rcx # qhasm: in14 = z14 # asm 1: movd in14=int64#6 # asm 2: movd in14=%r9 movd %xmm3,%r9 # qhasm: in15 = z15 # asm 1: movd in15=int64#7 # asm 2: movd in15=%rax movd %xmm7,%rax # qhasm: (uint32) in12 ^= *(uint32 *) (m + 240) # asm 1: xorl 240(bytes=int64#3 # asm 2: movq bytes=%rdx movq 288(%rsp),%rdx # qhasm: bytes -= 256 # asm 1: sub $256,? bytes - 0 # asm 1: cmp $0, jbe ._done # comment:fp stack unchanged by fallthrough # qhasm: bytesbetween1and255: ._bytesbetween1and255: # qhasm: unsignedctarget=int64#6 # asm 2: mov ctarget=%r9 mov %rdi,%r9 # qhasm: out = &tmp # asm 1: leaq out=int64#1 # asm 2: leaq out=%rdi leaq 320(%rsp),%rdi # qhasm: i = bytes # asm 1: mov i=int64#4 # asm 2: mov i=%rcx mov %rdx,%rcx # qhasm: while (i) { *out++ = *m++; --i } rep movsb # qhasm: out = &tmp # asm 1: leaq out=int64#1 # asm 2: leaq out=%rdi leaq 320(%rsp),%rdi # qhasm: m = &tmp # asm 1: leaq m=int64#2 # asm 2: leaq m=%rsi leaq 320(%rsp),%rsi # comment:fp stack unchanged by fallthrough # qhasm: nocopy: ._nocopy: # qhasm: bytes_backup = bytes # asm 1: movq bytes_backup=stack64#1 # asm 2: movq bytes_backup=288(%rsp) movq %rdx,288(%rsp) # qhasm: diag0 = *(int128 *) (x + 0) # asm 1: movdqa 0(diag0=int6464#1 # asm 2: movdqa 0(diag0=%xmm0 movdqa 0(%r8),%xmm0 # qhasm: diag1 = *(int128 *) (x + 16) # asm 1: movdqa 16(diag1=int6464#2 # asm 2: movdqa 16(diag1=%xmm1 movdqa 16(%r8),%xmm1 # qhasm: diag2 = *(int128 *) (x + 32) # asm 1: movdqa 32(diag2=int6464#3 # asm 2: movdqa 32(diag2=%xmm2 movdqa 32(%r8),%xmm2 # qhasm: diag3 = *(int128 *) (x + 48) # asm 1: movdqa 48(diag3=int6464#4 # asm 2: movdqa 48(diag3=%xmm3 movdqa 48(%r8),%xmm3 # qhasm: i = 8 # asm 1: mov $8,>i=int64#3 # asm 2: mov $8,>i=%rdx mov $8,%rdx # qhasm: mainloop2: ._mainloop2: # qhasm: uint32323232 diag0 += diag1 # asm 1: paddd b3=int6464#5 # asm 2: movdqa b3=%xmm4 movdqa %xmm3,%xmm4 # qhasm: uint32323232 diag3 <<= 16 # asm 1: pslld $16,>= 16 # asm 1: psrld $16,b1=int6464#5 # asm 2: movdqa b1=%xmm4 movdqa %xmm1,%xmm4 # qhasm: uint32323232 diag1 <<= 12 # asm 1: pslld $12,>= 20 # asm 1: psrld $20,b3=int6464#5 # asm 2: movdqa b3=%xmm4 movdqa %xmm3,%xmm4 # qhasm: uint32323232 diag3 <<= 8 # asm 1: pslld $8,>= 24 # asm 1: psrld $24,b1=int6464#5 # asm 2: movdqa b1=%xmm4 movdqa %xmm1,%xmm4 # qhasm: uint32323232 diag1 <<= 7 # asm 1: pslld $7,>= 25 # asm 1: psrld $25,? i -= 2 # asm 1: sub $2,b3=int6464#5 # asm 2: movdqa b3=%xmm4 movdqa %xmm3,%xmm4 # qhasm: uint32323232 diag3 <<= 16 # asm 1: pslld $16,>= 16 # asm 1: psrld $16,b1=int6464#5 # asm 2: movdqa b1=%xmm4 movdqa %xmm1,%xmm4 # qhasm: uint32323232 diag1 <<= 12 # asm 1: pslld $12,>= 20 # asm 1: psrld $20,b3=int6464#5 # asm 2: movdqa b3=%xmm4 movdqa %xmm3,%xmm4 # qhasm: uint32323232 diag3 <<= 8 # asm 1: pslld $8,>= 24 # asm 1: psrld $24,b1=int6464#5 # asm 2: movdqa b1=%xmm4 movdqa %xmm1,%xmm4 # qhasm: uint32323232 diag1 <<= 7 # asm 1: pslld $7,>= 25 # asm 1: psrld $25, ja ._mainloop2 # qhasm: uint32323232 diag0 += *(int128 *) (x + 0) # asm 1: paddd 0(bytes=int64#3 # asm 2: movq bytes=%rdx movq 288(%rsp),%rdx # qhasm: in12 = *(uint32 *) (x + 48) # asm 1: movl 48(in12=int64#4d # asm 2: movl 48(in12=%ecx movl 48(%r8),%ecx # qhasm: in13 = *(uint32 *) (x + 52) # asm 1: movl 52(in13=int64#7d # asm 2: movl 52(in13=%eax movl 52(%r8),%eax # qhasm: in12 += 1 # asm 1: add $1,in13=int64#7 # asm 2: mov in13=%rax mov %rcx,%rax # qhasm: (uint64) in13 >>= 32 # asm 1: shr $32,? unsigned ja ._bytesatleast65 # comment:fp stack unchanged by jump # qhasm: goto bytesatleast64 if !unsigned< jae ._bytesatleast64 # qhasm: m = out # asm 1: mov m=int64#2 # asm 2: mov m=%rsi mov %rdi,%rsi # qhasm: out = ctarget # asm 1: mov out=int64#1 # asm 2: mov out=%rdi mov %r9,%rdi # qhasm: i = bytes # asm 1: mov i=int64#4 # asm 2: mov i=%rcx mov %rdx,%rcx # qhasm: while (i) { *out++ = *m++; --i } rep movsb # comment:fp stack unchanged by fallthrough # qhasm: bytesatleast64: ._bytesatleast64: # comment:fp stack unchanged by fallthrough # qhasm: done: ._done: # qhasm: leave add %r11,%rsp mov %rdi,%rax mov %rsi,%rdx ret # qhasm: bytesatleast65: ._bytesatleast65: # qhasm: bytes -= 64 # asm 1: sub $64,k=int64#2 # asm 2: mov k=%rsi mov %rsi,%rsi # qhasm: kbits = arg3 # asm 1: mov kbits=int64#3 # asm 2: mov kbits=%rdx mov %rdx,%rdx # qhasm: x = arg1 # asm 1: mov x=int64#1 # asm 2: mov x=%rdi mov %rdi,%rdi # qhasm: in4 = *(uint32 *) (k + 0) # asm 1: movl 0(in4=int64#5d # asm 2: movl 0(in4=%r8d movl 0(%rsi),%r8d # qhasm: in5 = *(uint32 *) (k + 4) # asm 1: movl 4(in5=int64#6d # asm 2: movl 4(in5=%r9d movl 4(%rsi),%r9d # qhasm: in6 = *(uint32 *) (k + 8) # asm 1: movl 8(in6=int64#7d # asm 2: movl 8(in6=%eax movl 8(%rsi),%eax # qhasm: in7 = *(uint32 *) (k + 12) # asm 1: movl 12(in7=int64#8d # asm 2: movl 12(in7=%r10d movl 12(%rsi),%r10d # qhasm: *(uint32 *) (x + 16) = in4 # asm 1: movl in8=int64#3d # asm 2: movl 16(in8=%edx movl 16(%rsi),%edx # qhasm: in9 = *(uint32 *) (k + 20) # asm 1: movl 20(in9=int64#4d # asm 2: movl 20(in9=%ecx movl 20(%rsi),%ecx # qhasm: in10 = *(uint32 *) (k + 24) # asm 1: movl 24(in10=int64#5d # asm 2: movl 24(in10=%r8d movl 24(%rsi),%r8d # qhasm: in11 = *(uint32 *) (k + 28) # asm 1: movl 28(in11=int64#2d # asm 2: movl 28(in11=%esi movl 28(%rsi),%esi # qhasm: *(uint32 *) (x + 32) = in8 # asm 1: movl in0=int64#2 # asm 2: mov $1634760805,>in0=%rsi mov $1634760805,%rsi # qhasm: in1 = 857760878 # asm 1: mov $857760878,>in1=int64#3 # asm 2: mov $857760878,>in1=%rdx mov $857760878,%rdx # qhasm: in2 = 2036477234 # asm 1: mov $2036477234,>in2=int64#4 # asm 2: mov $2036477234,>in2=%rcx mov $2036477234,%rcx # qhasm: in3 = 1797285236 # asm 1: mov $1797285236,>in3=int64#5 # asm 2: mov $1797285236,>in3=%r8 mov $1797285236,%r8 # qhasm: *(uint32 *) (x + 0) = in0 # asm 1: movl in8=int64#3d # asm 2: movl 0(in8=%edx movl 0(%rsi),%edx # qhasm: in9 = *(uint32 *) (k + 4) # asm 1: movl 4(in9=int64#4d # asm 2: movl 4(in9=%ecx movl 4(%rsi),%ecx # qhasm: in10 = *(uint32 *) (k + 8) # asm 1: movl 8(in10=int64#5d # asm 2: movl 8(in10=%r8d movl 8(%rsi),%r8d # qhasm: in11 = *(uint32 *) (k + 12) # asm 1: movl 12(in11=int64#2d # asm 2: movl 12(in11=%esi movl 12(%rsi),%esi # qhasm: *(uint32 *) (x + 32) = in8 # asm 1: movl in0=int64#2 # asm 2: mov $1634760805,>in0=%rsi mov $1634760805,%rsi # qhasm: in1 = 824206446 # asm 1: mov $824206446,>in1=int64#3 # asm 2: mov $824206446,>in1=%rdx mov $824206446,%rdx # qhasm: in2 = 2036477238 # asm 1: mov $2036477238,>in2=int64#4 # asm 2: mov $2036477238,>in2=%rcx mov $2036477238,%rcx # qhasm: in3 = 1797285236 # asm 1: mov $1797285236,>in3=int64#5 # asm 2: mov $1797285236,>in3=%r8 mov $1797285236,%r8 # qhasm: *(uint32 *) (x + 0) = in0 # asm 1: movl iv=int64#2 # asm 2: mov iv=%rsi mov %rsi,%rsi # qhasm: x = arg1 # asm 1: mov x=int64#1 # asm 2: mov x=%rdi mov %rdi,%rdi # qhasm: in12 = 0 # asm 1: mov $0,>in12=int64#5 # asm 2: mov $0,>in12=%r8 mov $0,%r8 # qhasm: in13 = 0 # asm 1: mov $0,>in13=int64#6 # asm 2: mov $0,>in13=%r9 mov $0,%r9 # qhasm: in14 = *(uint32 *) (iv + 0) # asm 1: movl 0(in14=int64#7d # asm 2: movl 0(in14=%eax movl 0(%rsi),%eax # qhasm: in15 = *(uint32 *) (iv + 4) # asm 1: movl 4(in15=int64#2d # asm 2: movl 4(in15=%esi movl 4(%rsi),%esi # qhasm: *(uint32 *) (x + 48) = in12 # asm 1: movl