#include "crypto_asm_hidden.h" # qhasm: int64 input_0 # qhasm: int64 input_1 # qhasm: int64 input_2 # qhasm: int64 input_3 # qhasm: int64 input_4 # qhasm: int64 input_5 # qhasm: stack64 input_6 # qhasm: stack64 input_7 # qhasm: int64 caller_r11 # qhasm: int64 caller_r12 # qhasm: int64 caller_r13 # qhasm: int64 caller_r14 # qhasm: int64 caller_r15 # qhasm: int64 caller_rbx # qhasm: int64 caller_rbp # qhasm: int64 m # qhasm: int64 f # qhasm: int64 g # qhasm: int64 u # qhasm: int64 v # qhasm: int64 r # qhasm: int64 s # qhasm: int64 uvrs # qhasm: int64 fuv # qhasm: int64 grs # qhasm: int64 mnew # qhasm: int64 z # qhasm: int64 loop # qhasm: int64 rax # qhasm: int64 rdx # qhasm: int64 t0 # qhasm: int64 t1 # qhasm: int64 t2 # qhasm: int64 h # qhasm: int64 oldg # qhasm: int64 i # qhasm: int64 j # qhasm: int64 f0 # qhasm: int64 g0 # qhasm: int64 rtimesoldv # qhasm: int64 stimesolds # qhasm: stack64 stack_out # qhasm: stack256 stack_m1 # qhasm: stack64 stack_m # qhasm: stack256 stack_fxgx # qhasm: stack256 stack_uuss # qhasm: stack256 stack_vvrr # qhasm: stack256 stack_fygy # qhasm: stack64 stack_fuv # qhasm: stack64 stack_f # qhasm: reg256 carryy # qhasm: reg256 carryz # qhasm: reg256 d0 # qhasm: reg256 d1 # qhasm: reg256 d0x19 # qhasm: reg256 d1x19 # qhasm: reg256 out0 # qhasm: reg256 FVGS0 # qhasm: reg256 GSFV0 # qhasm: reg256 out1 # qhasm: reg256 out1plus # qhasm: stack256 stack_FVGS0 # qhasm: reg256 FVGS1 # qhasm: reg256 GSFV1 # qhasm: reg256 out2 # qhasm: reg256 out2plus # qhasm: stack256 stack_FVGS1 # qhasm: reg256 FVGS2 # qhasm: reg256 GSFV2 # qhasm: reg256 out3 # qhasm: reg256 out3plus # qhasm: stack256 stack_FVGS2 # qhasm: reg256 FVGS3 # qhasm: reg256 GSFV3 # qhasm: reg256 out4 # qhasm: reg256 out4plus # qhasm: stack256 stack_FVGS3 # qhasm: reg256 FVGS4 # qhasm: reg256 GSFV4 # qhasm: reg256 out5 # qhasm: reg256 out5plus # qhasm: stack256 stack_FVGS4 # qhasm: reg256 FVGS5 # qhasm: reg256 GSFV5 # qhasm: reg256 out6 # qhasm: reg256 out6plus # qhasm: stack256 stack_FVGS5 # qhasm: reg256 FVGS6 # qhasm: reg256 GSFV6 # qhasm: reg256 out7 # qhasm: reg256 out7plus # qhasm: stack256 stack_FVGS6 # qhasm: reg256 FVGS7 # qhasm: reg256 GSFV7 # qhasm: reg256 out8 # qhasm: reg256 out8plus # qhasm: stack256 stack_FVGS7 # qhasm: reg256 FVGS8 # qhasm: reg256 GSFV8 # qhasm: reg256 out9 # qhasm: reg256 out9plus # qhasm: stack256 stack_FVGS8 # qhasm: reg256 out8plus2 # qhasm: reg256 out10 # qhasm: reg256 ta # qhasm: reg256 tb # qhasm: reg256 uuss # qhasm: reg256 uuss0 # qhasm: reg256 uuss1 # qhasm: reg256 vvrr # qhasm: reg256 vvrr0 # qhasm: reg256 vvrr1 # qhasm: int64 _m2p62 # qhasm: stack64 stack_m2p62 # qhasm: int64 _2p20 # qhasm: stack64 stack_2p20 # qhasm: int64 _m2p41 # qhasm: stack64 stack_m2p41 # qhasm: int64 _m2p20 # qhasm: stack64 stack_m2p20 # qhasm: int64 _2p20a2p41 # qhasm: stack64 stack_2p20a2p41 # qhasm: reg256 _19x4 # qhasm: reg256 _0_19x4 # qhasm: reg256 _32767x4 # qhasm: reg256 _inv19_2p30x4 # qhasm: reg256 _2p30m1x4 # qhasm: reg256 _2p33x4 # qhasm: reg256 _2p48x4 # qhasm: reg256 _2p63x4 # qhasm: reg256 _2p63m2p33x4 # qhasm: stack256 stack_19x4 # qhasm: stack256 stack_0_19x4 # qhasm: stack256 stack_32767x4 # qhasm: stack256 stack_inv19_2p30x4 # qhasm: stack256 stack_2p30m1x4 # qhasm: stack256 stack_2p33x4 # qhasm: stack256 stack_2p48x4 # qhasm: stack256 stack_2p63x4 # qhasm: stack256 stack_2p63m2p33x4 # qhasm: enter inverse25519_skylake_asm .p2align 5 ASM_HIDDEN _CRYPTO_SHARED_NAMESPACE(asm) .global _CRYPTO_SHARED_NAMESPACE(asm) ASM_HIDDEN CRYPTO_SHARED_NAMESPACE(asm) .global CRYPTO_SHARED_NAMESPACE(asm) _CRYPTO_SHARED_NAMESPACE(asm): CRYPTO_SHARED_NAMESPACE(asm): mov %rsp,%r11 and $31,%r11 add $832,%r11 sub %r11,%rsp # qhasm: new stack_m1 # qhasm: stack_out = input_1 # asm 1: movq stack_out=stack64#1 # asm 2: movq stack_out=704(%rsp) movq %rsi,704(%rsp) # qhasm: stack64 stack_r11 # qhasm: stack_r11 = caller_r11 # asm 1: movq stack_r11=stack64#2 # asm 2: movq stack_r11=712(%rsp) movq %r11,712(%rsp) # qhasm: stack64 stack_r12 # qhasm: stack_r12 = caller_r12 # asm 1: movq stack_r12=stack64#3 # asm 2: movq stack_r12=720(%rsp) movq %r12,720(%rsp) # qhasm: stack64 stack_r13 # qhasm: stack_r13 = caller_r13 # asm 1: movq stack_r13=stack64#4 # asm 2: movq stack_r13=728(%rsp) movq %r13,728(%rsp) # qhasm: stack64 stack_r14 # qhasm: stack_r14 = caller_r14 # asm 1: movq stack_r14=stack64#5 # asm 2: movq stack_r14=736(%rsp) movq %r14,736(%rsp) # qhasm: stack64 stack_r15 # qhasm: stack_r15 = caller_r15 # asm 1: movq stack_r15=stack64#6 # asm 2: movq stack_r15=744(%rsp) movq %r15,744(%rsp) # qhasm: stack64 stack_rbx # qhasm: stack_rbx = caller_rbx # asm 1: movq stack_rbx=stack64#7 # asm 2: movq stack_rbx=752(%rsp) movq %rbx,752(%rsp) # qhasm: stack64 stack_rbp # qhasm: stack_rbp = caller_rbp # asm 1: movq stack_rbp=stack64#8 # asm 2: movq stack_rbp=760(%rsp) movq %rbp,760(%rsp) # qhasm: int64 a0 # qhasm: a0 = mem64[input_0 + 0] # asm 1: movq 0(a0=int64#2 # asm 2: movq 0(a0=%rsi movq 0(%rdi),%rsi # qhasm: int64 a1 # qhasm: a1 = mem64[input_0 + 8] # asm 1: movq 8(a1=int64#4 # asm 2: movq 8(a1=%rcx movq 8(%rdi),%rcx # qhasm: int64 a2 # qhasm: a2 = mem64[input_0 + 16] # asm 1: movq 16(a2=int64#5 # asm 2: movq 16(a2=%r8 movq 16(%rdi),%r8 # qhasm: int64 a3 # qhasm: a3 = mem64[input_0 + 24] # asm 1: movq 24(a3=int64#1 # asm 2: movq 24(a3=%rdi movq 24(%rdi),%rdi # qhasm: t0 = a3 # asm 1: mov t0=int64#6 # asm 2: mov t0=%r9 mov %rdi,%r9 # qhasm: (int64) t0 >>= 63 # asm 1: sar $63,t0=int64#6 # asm 2: mov t0=%r9 mov %rdi,%r9 # qhasm: (int64) t0 >>= 63 # asm 1: sar $63,t0=int64#6 # asm 2: mov $-1152921504606846976,>t0=%r9 mov $-1152921504606846976,%r9 # qhasm: g = a0 & ~ t0 # asm 1: andn g=int64#6 # asm 2: andn g=%r9 andn %rsi,%r9,%r9 # qhasm: d1 = mem256[ input_2 + 288 ] # asm 1: vmovupd 288(d1=reg256#1 # asm 2: vmovupd 288(d1=%ymm0 vmovupd 288(%rdx),%ymm0 # qhasm: stack_FVGS0 = d1 # asm 1: vmovapd stack_FVGS0=stack256#2 # asm 2: vmovapd stack_FVGS0=32(%rsp) vmovapd %ymm0,32(%rsp) # qhasm: t0 = a0 # asm 1: mov t0=int64#7 # asm 2: mov t0=%rax mov %rsi,%rax # qhasm: t0 &= 1073741823 # asm 1: and $1073741823,d1=reg256#1 # asm 2: vmovupd 320(d1=%ymm0 vmovupd 320(%rdx),%ymm0 # qhasm: stack_FVGS1 = d1 # asm 1: vmovapd stack_FVGS1=stack256#3 # asm 2: vmovapd stack_FVGS1=64(%rsp) vmovapd %ymm0,64(%rsp) # qhasm: t0 = a0 # asm 1: mov t0=int64#7 # asm 2: mov t0=%rax mov %rsi,%rax # qhasm: (uint64) t0 >>= 30 # asm 1: shr $30,d1=reg256#1 # asm 2: vmovupd 352(d1=%ymm0 vmovupd 352(%rdx),%ymm0 # qhasm: stack_FVGS2 = d1 # asm 1: vmovapd stack_FVGS2=stack256#4 # asm 2: vmovapd stack_FVGS2=96(%rsp) vmovapd %ymm0,96(%rsp) # qhasm: a0 = (a1 a0) >> 60 # asm 1: shrd $60,d1=reg256#1 # asm 2: vmovupd 384(d1=%ymm0 vmovupd 384(%rdx),%ymm0 # qhasm: stack_FVGS3 = d1 # asm 1: vmovapd stack_FVGS3=stack256#5 # asm 2: vmovapd stack_FVGS3=128(%rsp) vmovapd %ymm0,128(%rsp) # qhasm: t0 = a1 # asm 1: mov t0=int64#2 # asm 2: mov t0=%rsi mov %rcx,%rsi # qhasm: (uint64) t0 >>= 26 # asm 1: shr $26,d1=reg256#1 # asm 2: vmovupd 416(d1=%ymm0 vmovupd 416(%rdx),%ymm0 # qhasm: stack_FVGS4 = d1 # asm 1: vmovapd stack_FVGS4=stack256#6 # asm 2: vmovapd stack_FVGS4=160(%rsp) vmovapd %ymm0,160(%rsp) # qhasm: a1 = (a2 a1) >> 56 # asm 1: shrd $56,d1=reg256#1 # asm 2: vmovupd 448(d1=%ymm0 vmovupd 448(%rdx),%ymm0 # qhasm: stack_FVGS5 = d1 # asm 1: vmovapd stack_FVGS5=stack256#7 # asm 2: vmovapd stack_FVGS5=192(%rsp) vmovapd %ymm0,192(%rsp) # qhasm: t0 = a2 # asm 1: mov t0=int64#2 # asm 2: mov t0=%rsi mov %r8,%rsi # qhasm: (uint64) t0 >>= 22 # asm 1: shr $22,d1=reg256#1 # asm 2: vmovupd 480(d1=%ymm0 vmovupd 480(%rdx),%ymm0 # qhasm: stack_FVGS6 = d1 # asm 1: vmovapd stack_FVGS6=stack256#8 # asm 2: vmovapd stack_FVGS6=224(%rsp) vmovapd %ymm0,224(%rsp) # qhasm: a2 = (a3 a2) >> 52 # asm 1: shrd $52,d1=reg256#1 # asm 2: vmovupd 512(d1=%ymm0 vmovupd 512(%rdx),%ymm0 # qhasm: stack_FVGS7 = d1 # asm 1: vmovapd stack_FVGS7=stack256#9 # asm 2: vmovapd stack_FVGS7=256(%rsp) vmovapd %ymm0,256(%rsp) # qhasm: t0 = a3 # asm 1: mov t0=int64#2 # asm 2: mov t0=%rsi mov %rdi,%rsi # qhasm: (uint64) t0 >>= 18 # asm 1: shr $18,d1=reg256#1 # asm 2: vmovupd 544(d1=%ymm0 vmovupd 544(%rdx),%ymm0 # qhasm: stack_FVGS8 = d1 # asm 1: vmovapd stack_FVGS8=stack256#10 # asm 2: vmovapd stack_FVGS8=288(%rsp) vmovapd %ymm0,288(%rsp) # qhasm: (uint64) a3 >>= 48 # asm 1: shr $48,f=int64#1 # asm 2: mov $-19,>f=%rdi mov $-19,%rdi # qhasm: m = 0 # asm 1: xor >m=int64#2,>m=int64#2 # asm 2: xor >m=%rsi,>m=%rsi xor %rsi,%rsi # qhasm: z = -1 # asm 1: mov $-1,>z=int64#4 # asm 2: mov $-1,>z=%rcx mov $-1,%rcx # qhasm: inplace stack_m1[0] = m # asm 1: movq _m2p62=int64#4 # asm 2: mov $-4611686018427387904,>_m2p62=%rcx mov $-4611686018427387904,%rcx # qhasm: stack_m2p62 = _m2p62 # asm 1: movq <_m2p62=int64#4,>stack_m2p62=stack64#9 # asm 2: movq <_m2p62=%rcx,>stack_m2p62=768(%rsp) movq %rcx,768(%rsp) # qhasm: _2p20 = 1048576 # asm 1: mov $1048576,>_2p20=int64#4 # asm 2: mov $1048576,>_2p20=%rcx mov $1048576,%rcx # qhasm: stack_2p20 = _2p20 # asm 1: movq <_2p20=int64#4,>stack_2p20=stack64#10 # asm 2: movq <_2p20=%rcx,>stack_2p20=776(%rsp) movq %rcx,776(%rsp) # qhasm: _m2p41 = -2199023255552 # asm 1: mov $-2199023255552,>_m2p41=int64#4 # asm 2: mov $-2199023255552,>_m2p41=%rcx mov $-2199023255552,%rcx # qhasm: stack_m2p41 = _m2p41 # asm 1: movq <_m2p41=int64#4,>stack_m2p41=stack64#11 # asm 2: movq <_m2p41=%rcx,>stack_m2p41=784(%rsp) movq %rcx,784(%rsp) # qhasm: _m2p20 = -1048576 # asm 1: mov $-1048576,>_m2p20=int64#4 # asm 2: mov $-1048576,>_m2p20=%rcx mov $-1048576,%rcx # qhasm: stack_m2p20 = _m2p20 # asm 1: movq <_m2p20=int64#4,>stack_m2p20=stack64#12 # asm 2: movq <_m2p20=%rcx,>stack_m2p20=792(%rsp) movq %rcx,792(%rsp) # qhasm: _2p20a2p41 = 2199024304128 # asm 1: mov $2199024304128,>_2p20a2p41=int64#5 # asm 2: mov $2199024304128,>_2p20a2p41=%r8 mov $2199024304128,%r8 # qhasm: stack_2p20a2p41 = _2p20a2p41 # asm 1: movq <_2p20a2p41=int64#5,>stack_2p20a2p41=stack64#13 # asm 2: movq <_2p20a2p41=%r8,>stack_2p20a2p41=800(%rsp) movq %r8,800(%rsp) # qhasm: _19x4 = mem256[ input_2 + 0 ] # asm 1: vmovupd 0(_19x4=reg256#1 # asm 2: vmovupd 0(_19x4=%ymm0 vmovupd 0(%rdx),%ymm0 # qhasm: stack_19x4 = _19x4 # asm 1: vmovapd <_19x4=reg256#1,>stack_19x4=stack256#11 # asm 2: vmovapd <_19x4=%ymm0,>stack_19x4=320(%rsp) vmovapd %ymm0,320(%rsp) # qhasm: _0_19x4 = mem256[ input_2 + 32 ] # asm 1: vmovupd 32(_0_19x4=reg256#1 # asm 2: vmovupd 32(_0_19x4=%ymm0 vmovupd 32(%rdx),%ymm0 # qhasm: stack_0_19x4 = _0_19x4 # asm 1: vmovapd <_0_19x4=reg256#1,>stack_0_19x4=stack256#12 # asm 2: vmovapd <_0_19x4=%ymm0,>stack_0_19x4=352(%rsp) vmovapd %ymm0,352(%rsp) # qhasm: _32767x4 = mem256[ input_2 + 64 ] # asm 1: vmovupd 64(_32767x4=reg256#1 # asm 2: vmovupd 64(_32767x4=%ymm0 vmovupd 64(%rdx),%ymm0 # qhasm: stack_32767x4 = _32767x4 # asm 1: vmovapd <_32767x4=reg256#1,>stack_32767x4=stack256#13 # asm 2: vmovapd <_32767x4=%ymm0,>stack_32767x4=384(%rsp) vmovapd %ymm0,384(%rsp) # qhasm: _inv19_2p30x4 = mem256[ input_2 + 96 ] # asm 1: vmovupd 96(_inv19_2p30x4=reg256#1 # asm 2: vmovupd 96(_inv19_2p30x4=%ymm0 vmovupd 96(%rdx),%ymm0 # qhasm: stack_inv19_2p30x4 = _inv19_2p30x4 # asm 1: vmovapd <_inv19_2p30x4=reg256#1,>stack_inv19_2p30x4=stack256#14 # asm 2: vmovapd <_inv19_2p30x4=%ymm0,>stack_inv19_2p30x4=416(%rsp) vmovapd %ymm0,416(%rsp) # qhasm: _2p30m1x4 = mem256[ input_2 + 128 ] # asm 1: vmovupd 128(_2p30m1x4=reg256#1 # asm 2: vmovupd 128(_2p30m1x4=%ymm0 vmovupd 128(%rdx),%ymm0 # qhasm: stack_2p30m1x4 = _2p30m1x4 # asm 1: vmovapd <_2p30m1x4=reg256#1,>stack_2p30m1x4=stack256#15 # asm 2: vmovapd <_2p30m1x4=%ymm0,>stack_2p30m1x4=448(%rsp) vmovapd %ymm0,448(%rsp) # qhasm: _2p33x4 = mem256[ input_2 + 160 ] # asm 1: vmovupd 160(_2p33x4=reg256#1 # asm 2: vmovupd 160(_2p33x4=%ymm0 vmovupd 160(%rdx),%ymm0 # qhasm: stack_2p33x4 = _2p33x4 # asm 1: vmovapd <_2p33x4=reg256#1,>stack_2p33x4=stack256#16 # asm 2: vmovapd <_2p33x4=%ymm0,>stack_2p33x4=480(%rsp) vmovapd %ymm0,480(%rsp) # qhasm: _2p48x4 = mem256[ input_2 + 192 ] # asm 1: vmovupd 192(_2p48x4=reg256#1 # asm 2: vmovupd 192(_2p48x4=%ymm0 vmovupd 192(%rdx),%ymm0 # qhasm: stack_2p48x4 = _2p48x4 # asm 1: vmovapd <_2p48x4=reg256#1,>stack_2p48x4=stack256#17 # asm 2: vmovapd <_2p48x4=%ymm0,>stack_2p48x4=512(%rsp) vmovapd %ymm0,512(%rsp) # qhasm: _2p63x4 = mem256[ input_2 + 224 ] # asm 1: vmovupd 224(_2p63x4=reg256#1 # asm 2: vmovupd 224(_2p63x4=%ymm0 vmovupd 224(%rdx),%ymm0 # qhasm: stack_2p63x4 = _2p63x4 # asm 1: vmovapd <_2p63x4=reg256#1,>stack_2p63x4=stack256#18 # asm 2: vmovapd <_2p63x4=%ymm0,>stack_2p63x4=544(%rsp) vmovapd %ymm0,544(%rsp) # qhasm: _2p63m2p33x4 = mem256[ input_2 + 256 ] # asm 1: vmovupd 256(_2p63m2p33x4=reg256#1 # asm 2: vmovupd 256(_2p63m2p33x4=%ymm0 vmovupd 256(%rdx),%ymm0 # qhasm: i = 10 # asm 1: mov $10,>i=int64#5 # asm 2: mov $10,>i=%r8 mov $10,%r8 # qhasm: u = 1152921504606846976 # asm 1: mov $1152921504606846976,>u=int64#8 # asm 2: mov $1152921504606846976,>u=%r10 mov $1152921504606846976,%r10 # qhasm: v = 0 # asm 1: xor >v=int64#9,>v=int64#9 # asm 2: xor >v=%r11,>v=%r11 xor %r11,%r11 # qhasm: s = u # asm 1: mov s=int64#10 # asm 2: mov s=%r12 mov %r10,%r12 # qhasm: r = 0 # asm 1: xor >r=int64#11,>r=int64#11 # asm 2: xor >r=%r13,>r=%r13 xor %r13,%r13 # qhasm: nop nop # qhasm: nop nop # qhasm: nop nop # qhasm: nop nop # qhasm: bigloop: ._bigloop: # qhasm: rax = g # asm 1: mov rax=int64#7 # asm 2: mov rax=%rax mov %r9,%rax # qhasm: (int128) rdx rax = rax * s # asm 1: imul t2=int64#14 # asm 2: mov t2=%rbx mov %rax,%rbx # qhasm: t1 = rdx # asm 1: mov t1=int64#15 # asm 2: mov t1=%rbp mov %rdx,%rbp # qhasm: rax = f # asm 1: mov rax=int64#7 # asm 2: mov rax=%rax mov %rdi,%rax # qhasm: (int128) rdx rax = rax * r # asm 1: imul > 60 # asm 1: shrd $60,rax=int64#7 # asm 2: mov rax=%rax mov %rdi,%rax # qhasm: (int128) rdx rax = rax * u # asm 1: imul f=int64#1 # asm 2: mov f=%rdi mov %rax,%rdi # qhasm: t0 = rdx # asm 1: mov t0=int64#15 # asm 2: mov t0=%rbp mov %rdx,%rbp # qhasm: rax = g # asm 1: mov rax=int64#7 # asm 2: mov rax=%rax mov %r9,%rax # qhasm: (int128) rdx rax = rax * v # asm 1: imul > 60 # asm 1: shrd $60,g=int64#3 # asm 2: lea (g=%rdx lea (%rbx,%r15),%rdx # qhasm: FVGS0 = stack_FVGS0 # asm 1: vmovapd FVGS0=reg256#3 # asm 2: vmovapd FVGS0=%ymm2 vmovapd 32(%rsp),%ymm2 # qhasm: fuv = f & ~ _m2p20 # asm 1: andn fuv=int64#6 # asm 2: andn fuv=%r9 andn %rdi,%rcx,%r9 # qhasm: loop20_init: ._loop20_init: # qhasm: new uuss # qhasm: grs = g & ~ _m2p20 # asm 1: andn grs=int64#7 # asm 2: andn grs=%rax andn %rdx,%rcx,%rax # qhasm: uuss = u,uuss[1],0,0 # asm 1: vpinsrq $0x0,z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: GSFV0 = FVGS0[1,0] # asm 1: vpermq $0x4e,GSFV0=reg256#5 # asm 2: vpermq $0x4e,GSFV0=%ymm4 vpermq $0x4e,%ymm2,%ymm4 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,uuss=reg256#4 # asm 2: vpermq $0x50,uuss=%ymm3 vpermq $0x50,%ymm3,%ymm3 # qhasm: h = grs if = # asm 1: cmove mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: vvrr = vvrr[0,0,1,1] # asm 1: vpermq $0x50,vvrr=reg256#2 # asm 2: vpermq $0x50,vvrr=%ymm1 vpermq $0x50,%ymm1,%ymm1 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,_2p30m1x4=reg256#6 # asm 2: vmovapd _2p30m1x4=%ymm5 vmovapd 448(%rsp),%ymm5 # qhasm: (int64) h >>= 1 # asm 1: sar $1,uuss0=reg256#7 # asm 2: vpand uuss0=%ymm6 vpand %ymm3,%ymm5,%ymm6 # qhasm: signedvvrr0=reg256#8 # asm 2: vpand vvrr0=%ymm7 vpand %ymm1,%ymm5,%ymm7 # qhasm: grs = h if signed< # asm 1: cmovl ta=reg256#9 # asm 2: vpmuldq ta=%ymm8 vpmuldq %ymm6,%ymm2,%ymm8 # qhasm: z = -1 # asm 1: mov $-1,>z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x tb = int32 vvrr0 * int32 GSFV0 # asm 1: vpmuldq tb=reg256#10 # asm 2: vpmuldq tb=%ymm9 vpmuldq %ymm7,%ymm4,%ymm9 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,out0=reg256#9 # asm 2: vpaddq out0=%ymm8 vpaddq %ymm8,%ymm9,%ymm8 # qhasm: z = m if != # asm 1: cmovne _inv19_2p30x4=reg256#10 # asm 2: vmovapd _inv19_2p30x4=%ymm9 vmovapd 416(%rsp),%ymm9 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: _19x4 = stack_19x4 # asm 1: vmovapd _19x4=reg256#11 # asm 2: vmovapd _19x4=%ymm10 vmovapd 320(%rsp),%ymm10 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,d0=reg256#12 # asm 2: vpmuldq d0=%ymm11 vpmuldq %ymm8,%ymm9,%ymm11 # qhasm: m = -m # asm 1: neg d0x19=reg256#13 # asm 2: vpmuldq d0x19=%ymm12 vpmuldq %ymm11,%ymm10,%ymm12 # qhasm: m = mnew if signed< # asm 1: cmovl z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out0 -= d0x19 # asm 1: vpsubq oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x carryy = out0 + stack_2p63x4 # asm 1: vpaddq carryy=reg256#9 # asm 2: vpaddq carryy=%ymm8 vpaddq 544(%rsp),%ymm8,%ymm8 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,>= 30 # asm 1: vpsrlq $30,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x out8plus2 = d0 << 15 # asm 1: vpsllq $15,out8plus2=reg256#12 # asm 2: vpsllq $15,out8plus2=%ymm11 vpsllq $15,%ymm11,%ymm11 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,FVGS1=reg256#13 # asm 2: vmovapd FVGS1=%ymm12 vmovapd 64(%rsp),%ymm12 # qhasm: m = -m # asm 1: neg GSFV1=reg256#14 # asm 2: vpermq $0x4e,GSFV1=%ymm13 vpermq $0x4e,%ymm12,%ymm13 # qhasm: signedta=reg256#15 # asm 2: vpmuldq ta=%ymm14 vpmuldq %ymm6,%ymm12,%ymm14 # qhasm: m = mnew if signed< # asm 1: cmovl tb=reg256#16 # asm 2: vpmuldq tb=%ymm15 vpmuldq %ymm7,%ymm13,%ymm15 # qhasm: z = -1 # asm 1: mov $-1,>z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x out1plus = ta + tb # asm 1: vpaddq out1plus=reg256#15 # asm 2: vpaddq out1plus=%ymm14 vpaddq %ymm14,%ymm15,%ymm14 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,> 30 # asm 1: vpsrlq $30,uuss1=reg256#4 # asm 2: vpsrlq $30,uuss1=%ymm3 vpsrlq $30,%ymm3,%ymm3 # qhasm: z = m if != # asm 1: cmovne > 30 # asm 1: vpsrlq $30,vvrr1=reg256#2 # asm 2: vpsrlq $30,vvrr1=%ymm1 vpsrlq $30,%ymm1,%ymm1 # qhasm: h = grs if = # asm 1: cmove mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub ta=reg256#3 # asm 2: vpmuldq ta=%ymm2 vpmuldq %ymm3,%ymm2,%ymm2 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,tb=reg256#5 # asm 2: vpmuldq tb=%ymm4 vpmuldq %ymm1,%ymm4,%ymm4 # qhasm: m = -m # asm 1: neg out1=reg256#3 # asm 2: vpaddq out1=%ymm2 vpaddq %ymm2,%ymm4,%ymm2 # qhasm: fuv = oldg if !signed< # asm 1: cmovge z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: 4x out1 += carryy # asm 1: vpaddq oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x d1 = int32 out1 * int32 _inv19_2p30x4 # asm 1: vpmuldq d1=reg256#5 # asm 2: vpmuldq d1=%ymm4 vpmuldq %ymm2,%ymm9,%ymm4 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x d1x19 = int32 d1 * int32 _19x4 # asm 1: vpmuldq d1x19=reg256#9 # asm 2: vpmuldq d1x19=%ymm8 vpmuldq %ymm4,%ymm10,%ymm8 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,carryy=reg256#3 # asm 2: vpaddq carryy=%ymm2 vpaddq %ymm2,%ymm0,%ymm2 # qhasm: signed>= 30 # asm 1: vpsrlq $30,z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out9 = d1 << 15 # asm 1: vpsllq $15,out9=reg256#5 # asm 2: vpsllq $15,out9=%ymm4 vpsllq $15,%ymm4,%ymm4 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: FVGS2 = stack_FVGS2 # asm 1: vmovapd FVGS2=reg256#9 # asm 2: vmovapd FVGS2=%ymm8 vmovapd 96(%rsp),%ymm8 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,GSFV2=reg256#10 # asm 2: vpermq $0x4e,GSFV2=%ymm9 vpermq $0x4e,%ymm8,%ymm9 # qhasm: z = m if != # asm 1: cmovne ta=reg256#11 # asm 2: vpmuldq ta=%ymm10 vpmuldq %ymm3,%ymm12,%ymm10 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub tb=reg256#13 # asm 2: vpmuldq tb=%ymm12 vpmuldq %ymm1,%ymm13,%ymm12 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,out2plus=reg256#11 # asm 2: vpaddq out2plus=%ymm10 vpaddq %ymm10,%ymm12,%ymm10 # qhasm: (int64) h >>= 1 # asm 1: sar $1,ta=reg256#13 # asm 2: vpmuldq ta=%ymm12 vpmuldq %ymm6,%ymm8,%ymm12 # qhasm: fuv = oldg if !signed< # asm 1: cmovge tb=reg256#14 # asm 2: vpmuldq tb=%ymm13 vpmuldq %ymm7,%ymm9,%ymm13 # qhasm: m = mnew if signed< # asm 1: cmovl z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out2 = ta + tb # asm 1: vpaddq out2=reg256#13 # asm 2: vpaddq out2=%ymm12 vpaddq %ymm12,%ymm13,%ymm12 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x out2 += out2plus # asm 1: vpaddq mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x carryy = out2 + _2p63m2p33x4 # asm 1: vpaddq carryy=reg256#3 # asm 2: vpaddq carryy=%ymm2 vpaddq %ymm12,%ymm0,%ymm2 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 30 # asm 1: vpsrlq $30,>= 1 # asm 1: sar $1,FVGS3=reg256#11 # asm 2: vmovapd FVGS3=%ymm10 vmovapd 128(%rsp),%ymm10 # qhasm: m = -m # asm 1: neg GSFV3=reg256#14 # asm 2: vpermq $0x4e,GSFV3=%ymm13 vpermq $0x4e,%ymm10,%ymm13 # qhasm: grs = h if signed< # asm 1: cmovl ta=reg256#9 # asm 2: vpmuldq ta=%ymm8 vpmuldq %ymm3,%ymm8,%ymm8 # qhasm: 4x tb = int32 vvrr1 * int32 GSFV2 # asm 1: vpmuldq tb=reg256#10 # asm 2: vpmuldq tb=%ymm9 vpmuldq %ymm1,%ymm9,%ymm9 # qhasm: z = stack_m1[1] # asm 1: movq z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,out3plus=reg256#9 # asm 2: vpaddq out3plus=%ymm8 vpaddq %ymm8,%ymm9,%ymm8 # qhasm: z = m if != # asm 1: cmovne ta=reg256#10 # asm 2: vpmuldq ta=%ymm9 vpmuldq %ymm6,%ymm10,%ymm9 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x tb = int32 vvrr0 * int32 GSFV3 # asm 1: vpmuldq tb=reg256#15 # asm 2: vpmuldq tb=%ymm14 vpmuldq %ymm7,%ymm13,%ymm14 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,out3=reg256#10 # asm 2: vpaddq out3=%ymm9 vpaddq %ymm9,%ymm14,%ymm9 # qhasm: m = -m # asm 1: neg z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: out2 &= _2p30m1x4 # asm 1: vpand oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x carryy = out3 + _2p63m2p33x4 # asm 1: vpaddq carryy=reg256#3 # asm 2: vpaddq carryy=%ymm2 vpaddq %ymm9,%ymm0,%ymm2 # qhasm: =? grs & 1 # asm 1: test $1,>= 30 # asm 1: vpsrlq $30,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: out3 &= _2p30m1x4 # asm 1: vpand >= 1 # asm 1: sar $1,stack_FVGS1=stack256#3 # asm 2: vmovapd stack_FVGS1=64(%rsp) vmovapd %ymm9,64(%rsp) # qhasm: (int64) h >>= 1 # asm 1: sar $1,ta=reg256#9 # asm 2: vpsllq $30,ta=%ymm8 vpsllq $30,%ymm9,%ymm8 # qhasm: m = -m # asm 1: neg stack_fxgx=stack256#21 # asm 2: vmovapd stack_fxgx=640(%rsp) vmovapd %ymm8,640(%rsp) # qhasm: z = stack_m1[1] # asm 1: movq z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: FVGS4 = stack_FVGS4 # asm 1: vmovapd FVGS4=reg256#9 # asm 2: vmovapd FVGS4=%ymm8 vmovapd 160(%rsp),%ymm8 # qhasm: GSFV4 = FVGS4[1,0] # asm 1: vpermq $0x4e,GSFV4=reg256#10 # asm 2: vpermq $0x4e,GSFV4=%ymm9 vpermq $0x4e,%ymm8,%ymm9 # qhasm: =? grs & 1 # asm 1: test $1,ta=reg256#11 # asm 2: vpmuldq ta=%ymm10 vpmuldq %ymm3,%ymm10,%ymm10 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub tb=reg256#14 # asm 2: vpmuldq tb=%ymm13 vpmuldq %ymm1,%ymm13,%ymm13 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,out4plus=reg256#11 # asm 2: vpaddq out4plus=%ymm10 vpaddq %ymm10,%ymm13,%ymm10 # qhasm: m = -m # asm 1: neg ta=reg256#14 # asm 2: vpmuldq ta=%ymm13 vpmuldq %ymm6,%ymm8,%ymm13 # qhasm: signedtb=reg256#15 # asm 2: vpmuldq tb=%ymm14 vpmuldq %ymm7,%ymm9,%ymm14 # qhasm: m = mnew if signed< # asm 1: cmovl z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: 4x out4 = ta + tb # asm 1: vpaddq out4=reg256#14 # asm 2: vpaddq out4=%ymm13 vpaddq %ymm13,%ymm14,%ymm13 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x out4 += out4plus # asm 1: vpaddq mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub carryy=reg256#3 # asm 2: vpaddq carryy=%ymm2 vpaddq %ymm13,%ymm0,%ymm2 # qhasm: 4x carryy unsigned>>= 30 # asm 1: vpsrlq $30,>= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,FVGS5=reg256#11 # asm 2: vmovapd FVGS5=%ymm10 vmovapd 192(%rsp),%ymm10 # qhasm: signedGSFV5=reg256#15 # asm 2: vpermq $0x4e,GSFV5=%ymm14 vpermq $0x4e,%ymm10,%ymm14 # qhasm: grs = h if signed< # asm 1: cmovl z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: 4x ta = int32 uuss1 * int32 FVGS4 # asm 1: vpmuldq ta=reg256#9 # asm 2: vpmuldq ta=%ymm8 vpmuldq %ymm3,%ymm8,%ymm8 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x tb = int32 vvrr1 * int32 GSFV4 # asm 1: vpmuldq tb=reg256#10 # asm 2: vpmuldq tb=%ymm9 vpmuldq %ymm1,%ymm9,%ymm9 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,out5plus=reg256#9 # asm 2: vpaddq out5plus=%ymm8 vpaddq %ymm8,%ymm9,%ymm8 # qhasm: z = m if != # asm 1: cmovne mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x ta = int32 uuss0 * int32 FVGS5 # asm 1: vpmuldq ta=reg256#10 # asm 2: vpmuldq ta=%ymm9 vpmuldq %ymm6,%ymm10,%ymm9 # qhasm: 4x tb = int32 vvrr0 * int32 GSFV5 # asm 1: vpmuldq tb=reg256#16 # asm 2: vpmuldq tb=%ymm15 vpmuldq %ymm7,%ymm14,%ymm15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,out5=reg256#10 # asm 2: vpaddq out5=%ymm9 vpaddq %ymm9,%ymm15,%ymm9 # qhasm: m = -m # asm 1: neg z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x carryy = out5 + _2p63m2p33x4 # asm 1: vpaddq carryy=reg256#3 # asm 2: vpaddq carryy=%ymm2 vpaddq %ymm9,%ymm0,%ymm2 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x carryy unsigned>>= 30 # asm 1: vpsrlq $30,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: out4 &= _2p30m1x4 # asm 1: vpand >= 1 # asm 1: sar $1,stack_FVGS2=stack256#4 # asm 2: vmovapd stack_FVGS2=96(%rsp) vmovapd %ymm13,96(%rsp) # qhasm: (int64) h >>= 1 # asm 1: sar $1,ta=reg256#9 # asm 2: vpsllq $30,ta=%ymm8 vpsllq $30,%ymm9,%ymm8 # qhasm: fuv = oldg if !signed< # asm 1: cmovge stack_fygy=stack256#22 # asm 2: vmovapd stack_fygy=672(%rsp) vmovapd %ymm8,672(%rsp) # qhasm: z = stack_m1[1] # asm 1: movq z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: FVGS6 = stack_FVGS6 # asm 1: vmovapd FVGS6=reg256#9 # asm 2: vmovapd FVGS6=%ymm8 vmovapd 224(%rsp),%ymm8 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,GSFV6=reg256#14 # asm 2: vpermq $0x4e,GSFV6=%ymm13 vpermq $0x4e,%ymm8,%ymm13 # qhasm: z = m if != # asm 1: cmovne ta=reg256#11 # asm 2: vpmuldq ta=%ymm10 vpmuldq %ymm3,%ymm10,%ymm10 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub tb=reg256#15 # asm 2: vpmuldq tb=%ymm14 vpmuldq %ymm1,%ymm14,%ymm14 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,out6plus=reg256#11 # asm 2: vpaddq out6plus=%ymm10 vpaddq %ymm10,%ymm14,%ymm10 # qhasm: (int64) h >>= 1 # asm 1: sar $1,ta=reg256#15 # asm 2: vpmuldq ta=%ymm14 vpmuldq %ymm6,%ymm8,%ymm14 # qhasm: fuv = oldg if !signed< # asm 1: cmovge tb=reg256#16 # asm 2: vpmuldq tb=%ymm15 vpmuldq %ymm7,%ymm13,%ymm15 # qhasm: m = mnew if signed< # asm 1: cmovl z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out6 = ta + tb # asm 1: vpaddq out6=reg256#15 # asm 2: vpaddq out6=%ymm14 vpaddq %ymm14,%ymm15,%ymm14 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: 4x out6 += carryy # asm 1: vpaddq >= 1 # asm 1: sar $1,carryz=reg256#3 # asm 2: vpaddq carryz=%ymm2 vpaddq %ymm14,%ymm0,%ymm2 # qhasm: 4x carryz unsigned>>= 30 # asm 1: vpsrlq $30,>= 1 # asm 1: sar $1,stack_FVGS3=stack256#5 # asm 2: vmovapd stack_FVGS3=128(%rsp) vmovapd %ymm9,128(%rsp) # qhasm: FVGS7 = stack_FVGS7 # asm 1: vmovapd FVGS7=reg256#10 # asm 2: vmovapd FVGS7=%ymm9 vmovapd 256(%rsp),%ymm9 # qhasm: fuv = oldg if !signed< # asm 1: cmovge GSFV7=reg256#11 # asm 2: vpermq $0x4e,GSFV7=%ymm10 vpermq $0x4e,%ymm9,%ymm10 # qhasm: z = stack_m1[1] # asm 1: movq z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x ta = int32 uuss1 * int32 FVGS6 # asm 1: vpmuldq ta=reg256#9 # asm 2: vpmuldq ta=%ymm8 vpmuldq %ymm3,%ymm8,%ymm8 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,tb=reg256#14 # asm 2: vpmuldq tb=%ymm13 vpmuldq %ymm1,%ymm13,%ymm13 # qhasm: z = m if != # asm 1: cmovne out7plus=reg256#9 # asm 2: vpaddq out7plus=%ymm8 vpaddq %ymm8,%ymm13,%ymm8 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub ta=reg256#14 # asm 2: vpmuldq ta=%ymm13 vpmuldq %ymm6,%ymm9,%ymm13 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,tb=reg256#16 # asm 2: vpmuldq tb=%ymm15 vpmuldq %ymm7,%ymm10,%ymm15 # qhasm: m = -m # asm 1: neg out7=reg256#14 # asm 2: vpaddq out7=%ymm13 vpaddq %ymm13,%ymm15,%ymm13 # qhasm: fuv = oldg if !signed< # asm 1: cmovge z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out7 += carryz # asm 1: vpaddq oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x carryz = out7 + _2p63m2p33x4 # asm 1: vpaddq carryz=reg256#3 # asm 2: vpaddq carryz=%ymm2 vpaddq %ymm13,%ymm0,%ymm2 # qhasm: =? grs & 1 # asm 1: test $1,>= 30 # asm 1: vpsrlq $30,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,stack_FVGS4=stack256#6 # asm 2: vmovapd stack_FVGS4=160(%rsp) vmovapd %ymm14,160(%rsp) # qhasm: (int64) h >>= 1 # asm 1: sar $1,FVGS8=reg256#9 # asm 2: vmovapd FVGS8=%ymm8 vmovapd 288(%rsp),%ymm8 # qhasm: m = -m # asm 1: neg GSFV8=reg256#15 # asm 2: vpermq $0x4e,GSFV8=%ymm14 vpermq $0x4e,%ymm8,%ymm14 # qhasm: grs = h if signed< # asm 1: cmovl ta=reg256#10 # asm 2: vpmuldq ta=%ymm9 vpmuldq %ymm3,%ymm9,%ymm9 # qhasm: z = -1 # asm 1: mov $-1,>z=int64#8 # asm 2: mov $-1,>z=%r10 mov $-1,%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x tb = int32 vvrr1 * int32 GSFV7 # asm 1: vpmuldq tb=reg256#11 # asm 2: vpmuldq tb=%ymm10 vpmuldq %ymm1,%ymm10,%ymm10 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,out8plus=reg256#10 # asm 2: vpaddq out8plus=%ymm9 vpaddq %ymm9,%ymm10,%ymm9 # qhasm: h = grs if = # asm 1: cmove ta=reg256#7 # asm 2: vpmuldq ta=%ymm6 vpmuldq %ymm6,%ymm8,%ymm6 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub tb=reg256#8 # asm 2: vpmuldq tb=%ymm7 vpmuldq %ymm7,%ymm14,%ymm7 # qhasm: (int64) grs >>= 1 # asm 1: sar $1,out8=reg256#7 # asm 2: vpaddq out8=%ymm6 vpaddq %ymm6,%ymm7,%ymm6 # qhasm: (int64) h >>= 1 # asm 1: sar $1,z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: 4x out8 += out8plus2 # asm 1: vpaddq oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: h = grs + fuv # asm 1: lea (h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: 4x carryz = out8 + _2p63m2p33x4 # asm 1: vpaddq carryz=reg256#3 # asm 2: vpaddq carryz=%ymm2 vpaddq %ymm6,%ymm0,%ymm2 # qhasm: =? grs & 1 # asm 1: test $1,>= 30 # asm 1: vpsrlq $30,mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: out7 &= _2p30m1x4 # asm 1: vpand >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,stack_FVGS5=stack256#7 # asm 2: vmovapd stack_FVGS5=192(%rsp) vmovapd %ymm13,192(%rsp) # qhasm: m = -m # asm 1: neg ta=reg256#4 # asm 2: vpmuldq ta=%ymm3 vpmuldq %ymm3,%ymm8,%ymm3 # qhasm: signedtb=reg256#2 # asm 2: vpmuldq tb=%ymm1 vpmuldq %ymm1,%ymm14,%ymm1 # qhasm: grs = h if signed< # asm 1: cmovl out9plus=reg256#2 # asm 2: vpaddq out9plus=%ymm1 vpaddq %ymm3,%ymm1,%ymm1 # qhasm: z = stack_m1[1] # asm 1: movq z=int64#8 # asm 2: movq z=%r10 movq 8(%rsp),%r10 # qhasm: oldg = grs # asm 1: mov oldg=int64#9 # asm 2: mov oldg=%r11 mov %rax,%r11 # qhasm: 4x out9 += out9plus # asm 1: vpaddq h=int64#10 # asm 2: lea (h=%r12 lea (%rax,%r9),%r12 # qhasm: =? grs & 1 # asm 1: test $1,out10=reg256#2 # asm 2: vpaddq out10=%ymm1 vpaddq %ymm4,%ymm0,%ymm1 # qhasm: mnew = m + 1 # asm 1: lea 1(mnew=int64#11 # asm 2: lea 1(mnew=%r13 lea 1(%rsi),%r13 # qhasm: grs -= fuv # asm 1: sub >= 30 # asm 1: vpsrlq $30,>= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,stack_FVGS6=stack256#8 # asm 2: vmovapd stack_FVGS6=224(%rsp) vmovapd %ymm6,224(%rsp) # qhasm: fuv = oldg if !signed< # asm 1: cmovge _32767x4=reg256#3 # asm 2: vmovapd _32767x4=%ymm2 vmovapd 384(%rsp),%ymm2 # qhasm: grs = h if signed< # asm 1: cmovl _2p20a2p41=int64#8 # asm 2: movq _2p20a2p41=%r10 movq 800(%rsp),%r10 # qhasm: s = grs + _2p20a2p41 # asm 1: lea (s=int64#9 # asm 2: lea (s=%r11 lea (%rax,%r10),%r11 # qhasm: _2p48x4 = stack_2p48x4 # asm 1: vmovapd _2p48x4=reg256#4 # asm 2: vmovapd _2p48x4=%ymm3 vmovapd 512(%rsp),%ymm3 # qhasm: 4x carryy = out10 + _2p63m2p33x4 # asm 1: vpaddq carryy=reg256#7 # asm 2: vpaddq carryy=%ymm6 vpaddq %ymm1,%ymm0,%ymm6 # qhasm: (int64) s >>= 42 # asm 1: sar $42,t2=int64#10 # asm 2: mov t2=%r12 mov %rdx,%r12 # qhasm: 4x carryy unsigned>>= 15 # asm 1: vpsrlq $15,v=int64#8 # asm 2: lea (v=%r10 lea (%r9,%r10),%r10 # qhasm: 4x carryy -= _2p48x4 # asm 1: vpsubq <_2p48x4=reg256#4,>= 42 # asm 1: sar $42,_2p20=int64#11 # asm 2: movq _2p20=%r13 movq 776(%rsp),%r13 # qhasm: r = grs + _2p20 # asm 1: lea (r=int64#7 # asm 2: lea (r=%rax lea (%rax,%r13),%rax # qhasm: out9 &= _2p30m1x4 # asm 1: vpand >= 43 # asm 1: sar $43,rax=int64#12 # asm 2: mov rax=%r14 mov %rdi,%r14 # qhasm: rax *= r # asm 1: imul carryy=reg256#3 # asm 2: vpmuldq carryy=%ymm2 vpmuldq 352(%rsp),%ymm6,%ymm2 # qhasm: u = fuv + _2p20 # asm 1: lea (u=int64#6 # asm 2: lea (u=%r9 lea (%r9,%r13),%r9 # qhasm: 4x out2 += carryy # asm 1: vpaddq >= 43 # asm 1: sar $43,stack_FVGS7=stack256#9 # asm 2: vmovapd stack_FVGS7=256(%rsp) vmovapd %ymm4,256(%rsp) # qhasm: f += t2 # asm 1: add stack_FVGS8=stack256#10 # asm 2: vmovapd stack_FVGS8=288(%rsp) vmovapd %ymm1,288(%rsp) # qhasm: (int64) f >>= 20 # asm 1: sar $20,stack_FVGS0=stack256#2 # asm 2: vmovapd stack_FVGS0=32(%rsp) vmovapd %ymm12,32(%rsp) # qhasm: (int64) g >>= 20 # asm 1: sar $20,loop=int64#6 # asm 2: mov $2,>loop=%r9 mov $2,%r9 # qhasm: loop20: ._loop20: # qhasm: fuv = f & ~ _m2p20 # asm 1: andn fuv=int64#7 # asm 2: andn fuv=%rax andn %rdi,%rcx,%rax # qhasm: grs = g & ~ _m2p20 # asm 1: andn grs=int64#8 # asm 2: andn grs=%r10 andn %rdx,%rcx,%r10 # qhasm: fuv += stack_m2p41 # asm 1: addq j=int64#9 # asm 2: mov $2,>j=%r11 mov $2,%r11 # qhasm: loop2: ._loop2: # qhasm: z = -1 # asm 1: mov $-1,>z=int64#10 # asm 2: mov $-1,>z=%r12 mov $-1,%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: mov $-1,>z=%r12 mov $-1,%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: movq z=%r12 movq 8(%rsp),%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,z=int64#10 # asm 2: mov $-1,>z=%r12 mov $-1,%r12 # qhasm: oldg = grs # asm 1: mov oldg=int64#11 # asm 2: mov oldg=%r13 mov %r10,%r13 # qhasm: h = grs + fuv # asm 1: lea (h=int64#12 # asm 2: lea (h=%r14 lea (%r10,%rax),%r14 # qhasm: =? grs & 1 # asm 1: test $1,mnew=int64#13 # asm 2: lea 1(mnew=%r15 lea 1(%rsi),%r15 # qhasm: grs -= fuv # asm 1: sub >= 1 # asm 1: sar $1,>= 1 # asm 1: sar $1,_2p20a2p41=int64#9 # asm 2: movq _2p20a2p41=%r11 movq 800(%rsp),%r11 # qhasm: s = grs + _2p20a2p41 # asm 1: lea (s=int64#10 # asm 2: lea (s=%r12 lea (%r10,%r11),%r12 # qhasm: (int64) s >>= 42 # asm 1: sar $42,t2=int64#11 # asm 2: mov t2=%r13 mov %rdx,%r13 # qhasm: g *= s # asm 1: imul v=int64#9 # asm 2: lea (v=%r11 lea (%rax,%r11),%r11 # qhasm: (int64) v >>= 42 # asm 1: sar $42,_2p20=int64#12 # asm 2: movq _2p20=%r14 movq 776(%rsp),%r14 # qhasm: r = grs + _2p20 # asm 1: lea (r=int64#8 # asm 2: lea (r=%r10 lea (%r10,%r14),%r10 # qhasm: r <<= 22 # asm 1: shl $22,>= 43 # asm 1: sar $43,rax=int64#13 # asm 2: mov rax=%r15 mov %rdi,%r15 # qhasm: rax *= r # asm 1: imul u=int64#7 # asm 2: lea (u=%rax lea (%rax,%r14),%rax # qhasm: u <<= 22 # asm 1: shl $22,>= 43 # asm 1: sar $43,>= 20 # asm 1: sar $20,>= 20 # asm 1: sar $20,t0=int64#11 # asm 2: movq t0=%r13 movq 576(%rsp),%r13 # qhasm: t0 *= u # asm 1: imul t1=int64#12 # asm 2: movq t1=%r14 movq 624(%rsp),%r14 # qhasm: t1 *= v # asm 1: imul rtimesoldv=int64#13 # asm 2: movq rtimesoldv=%r15 movq 608(%rsp),%r15 # qhasm: u *= rtimesoldv # asm 1: imul stimesolds=int64#14 # asm 2: movq stimesolds=%rbx movq 592(%rsp),%rbx # qhasm: v *= stimesolds # asm 1: imul u=int64#7 # asm 2: lea (u=%rax lea (%r13,%r14),%rax # qhasm: r += s # asm 1: add s=int64#10 # asm 2: lea (s=%r12 lea (%r15,%rbx),%r12 # qhasm: first_loop: ._first_loop: # qhasm: inplace stack_vvrr[0] = v # asm 1: movq _2p20a2p41=int64#1 # asm 2: movq _2p20a2p41=%rdi movq 800(%rsp),%rdi # qhasm: s = grs + _2p20a2p41 # asm 1: lea (s=int64#3 # asm 2: lea (s=%rdx lea (%r10,%rdi),%rdx # qhasm: (int64) s >>= 42 # asm 1: sar $42,v=int64#9 # asm 2: lea (v=%r11 lea (%rax,%rdi),%r11 # qhasm: (int64) v >>= 42 # asm 1: sar $42,t1=int64#1 # asm 2: movq t1=%rdi movq 624(%rsp),%rdi # qhasm: t1 *= v # asm 1: imul stimesolds=int64#6 # asm 2: movq stimesolds=%r9 movq 592(%rsp),%r9 # qhasm: v *= stimesolds # asm 1: imul _2p20=int64#10 # asm 2: movq _2p20=%r12 movq 776(%rsp),%r12 # qhasm: r = grs + _2p20 # asm 1: lea (r=int64#11 # asm 2: lea (r=%r13 lea (%r10,%r12),%r13 # qhasm: r <<= 22 # asm 1: shl $22,>= 43 # asm 1: sar $43,u=int64#7 # asm 2: lea (u=%rax lea (%rax,%r12),%rax # qhasm: u <<= 22 # asm 1: shl $22,>= 43 # asm 1: sar $43,t0=int64#8 # asm 2: movq t0=%r10 movq 576(%rsp),%r10 # qhasm: t0 *= u # asm 1: imul rtimesoldv=int64#10 # asm 2: movq rtimesoldv=%r12 movq 608(%rsp),%r12 # qhasm: u *= rtimesoldv # asm 1: imul u=int64#8 # asm 2: lea (u=%r10 lea (%r10,%rdi),%r10 # qhasm: r += s # asm 1: add s=int64#10 # asm 2: lea (s=%r12 lea (%r12,%r9),%r12 # qhasm: f = stack_fxgx[0] # asm 1: movq f=int64#1 # asm 2: movq f=%rdi movq 640(%rsp),%rdi # qhasm: g = stack_fxgx[2] # asm 1: movq g=int64#6 # asm 2: movq g=%r9 movq 656(%rsp),%r9 # qhasm: f0 = stack_fygy[0] # asm 1: movq f0=int64#12 # asm 2: movq f0=%r14 movq 672(%rsp),%r14 # qhasm: g0 = stack_fygy[2] # asm 1: movq g0=int64#13 # asm 2: movq g0=%r15 movq 688(%rsp),%r15 # qhasm: =? i -= 1 # asm 1: dec t0=int64#1 # asm 2: lea (t0=%rdi lea (%rdi,%r9),%rdi # qhasm: (int64) t0 >>= 60 # asm 1: sar $60,rax=int64#7 # asm 2: movq rax=%rax movq 296(%rsp),%rax # qhasm: (int128) rdx rax = rax * u # asm 1: imul a4=int64#1 # asm 2: mov a4=%rdi mov %rdx,%rdi # qhasm: a3 = rax # asm 1: mov a3=int64#2 # asm 2: mov a3=%rsi mov %rax,%rsi # qhasm: rax = stack_FVGS8[3] # asm 1: movq rax=int64#7 # asm 2: movq rax=%rax movq 312(%rsp),%rax # qhasm: (int128) rdx rax = rax * v # asm 1: imul rax=int64#7 # asm 2: movq rax=%rax movq 232(%rsp),%rax # qhasm: t0 = stack_FVGS7[1] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 264(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,t2=int64#4 # asm 2: mov t2=%rcx mov %rdx,%rcx # qhasm: t1 = rax # asm 1: mov t1=int64#5 # asm 2: mov t1=%r8 mov %rax,%r8 # qhasm: rax = stack_FVGS6[3] # asm 1: movq rax=int64#7 # asm 2: movq rax=%rax movq 248(%rsp),%rax # qhasm: t0 = stack_FVGS7[3] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 280(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,a2=int64#6 # asm 2: mov a2=%r9 mov %r8,%r9 # qhasm: t1 = (t2 t1) >> 12 # asm 1: shrd $12,>= 12 # asm 1: sar $12,rax=int64#7 # asm 2: movq rax=%rax movq 168(%rsp),%rax # qhasm: t0 = stack_FVGS5[1] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 200(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,t2=int64#4 # asm 2: mov t2=%rcx mov %rdx,%rcx # qhasm: t1 = rax # asm 1: mov t1=int64#5 # asm 2: mov t1=%r8 mov %rax,%r8 # qhasm: rax = stack_FVGS4[3] # asm 1: movq rax=int64#7 # asm 2: movq rax=%rax movq 184(%rsp),%rax # qhasm: t0 = stack_FVGS5[3] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 216(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,a1=int64#10 # asm 2: mov a1=%r12 mov %r8,%r12 # qhasm: t1 = (t2 t1) >> 8 # asm 1: shrd $8,h=int64#3 # asm 2: mov h=%rdx mov %rcx,%rdx # qhasm: (int64) t2 >>= 8 # asm 1: sar $8,>= 63 # asm 1: sar $63,rax=int64#7 # asm 2: movq rax=%rax movq 104(%rsp),%rax # qhasm: t0 = stack_FVGS3[1] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 136(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,t2=int64#4 # asm 2: mov t2=%rcx mov %rdx,%rcx # qhasm: t1 = rax # asm 1: mov t1=int64#5 # asm 2: mov t1=%r8 mov %rax,%r8 # qhasm: rax = stack_FVGS2[3] # asm 1: movq rax=int64#7 # asm 2: movq rax=%rax movq 120(%rsp),%rax # qhasm: t0 = stack_FVGS3[3] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 152(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,a0=int64#11 # asm 2: mov a0=%r13 mov %r8,%r13 # qhasm: t1 = (t2 t1) >> 4 # asm 1: shrd $4,h=int64#3 # asm 2: mov h=%rdx mov %rcx,%rdx # qhasm: (int64) t2 >>= 4 # asm 1: sar $4,>= 63 # asm 1: sar $63,rax=int64#7 # asm 2: movq rax=%rax movq 40(%rsp),%rax # qhasm: t0 = stack_FVGS1[1] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 72(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,t2=int64#4 # asm 2: mov t2=%rcx mov %rdx,%rcx # qhasm: t1 = rax # asm 1: mov t1=int64#5 # asm 2: mov t1=%r8 mov %rax,%r8 # qhasm: rax = stack_FVGS0[3] # asm 1: movq rax=int64#7 # asm 2: movq rax=%rax movq 56(%rsp),%rax # qhasm: t0 = stack_FVGS1[3] # asm 1: movq t0=int64#3 # asm 2: movq t0=%rdx movq 88(%rsp),%rdx # qhasm: t0 <<= 30 # asm 1: shl $30,h=int64#3 # asm 2: mov h=%rdx mov %rcx,%rdx # qhasm: (int64) h >>= 63 # asm 1: sar $63,h=int64#4 # asm 2: mov h=%rcx mov %rdi,%rcx # qhasm: rax = 19 # asm 1: mov $19,>rax=int64#7 # asm 2: mov $19,>rax=%rax mov $19,%rax # qhasm: (int128) rdx rax = rax * a4 # asm 1: imul >= 63 # asm 1: sar $63,a4=int64#1,>a4=int64#1 # asm 2: xor >a4=%rdi,>a4=%rdi xor %rdi,%rdi # qhasm: carry? a0 += rax # asm 1: add h=int64#4 # asm 2: mov h=%rcx mov %rdi,%rcx # qhasm: rax = 19 # asm 1: mov $19,>rax=int64#7 # asm 2: mov $19,>rax=%rax mov $19,%rax # qhasm: (int128) rdx rax = rax * a4 # asm 1: imul >= 63 # asm 1: sar $63,z=int64#1,>z=int64#1 # asm 2: xor >z=%rdi,>z=%rdi xor %rdi,%rdi # qhasm: a4 = -19 # asm 1: mov $-19,>a4=int64#3 # asm 2: mov $-19,>a4=%rdx mov $-19,%rdx # qhasm: a5 = -1 # asm 1: mov $-1,>a5=int64#4 # asm 2: mov $-1,>a5=%rcx mov $-1,%rcx # qhasm: a6 = 9223372036854775807 # asm 1: mov $9223372036854775807,>a6=int64#5 # asm 2: mov $9223372036854775807,>a6=%r8 mov $9223372036854775807,%r8 # qhasm: signedt0=int64#1 # asm 2: mov t0=%rdi mov %rsi,%rdi # qhasm: (int64) t0 >>= 63 # asm 1: sar $63,t2=int64#1 # asm 2: movq t2=%rdi movq 704(%rsp),%rdi # qhasm: mem64[t2 + 0] = a0 # asm 1: movq caller_r11=int64#9 # asm 2: movq caller_r11=%r11 movq 712(%rsp),%r11 # qhasm: caller_r12 = stack_r12 # asm 1: movq caller_r12=int64#10 # asm 2: movq caller_r12=%r12 movq 720(%rsp),%r12 # qhasm: caller_r13 = stack_r13 # asm 1: movq caller_r13=int64#11 # asm 2: movq caller_r13=%r13 movq 728(%rsp),%r13 # qhasm: caller_r14 = stack_r14 # asm 1: movq caller_r14=int64#12 # asm 2: movq caller_r14=%r14 movq 736(%rsp),%r14 # qhasm: caller_r15 = stack_r15 # asm 1: movq caller_r15=int64#13 # asm 2: movq caller_r15=%r15 movq 744(%rsp),%r15 # qhasm: caller_rbx = stack_rbx # asm 1: movq caller_rbx=int64#14 # asm 2: movq caller_rbx=%rbx movq 752(%rsp),%rbx # qhasm: caller_rbp = stack_rbp # asm 1: movq caller_rbp=int64#15 # asm 2: movq caller_rbp=%rbp movq 760(%rsp),%rbp # qhasm: return add %r11,%rsp ret