-rw-r--r-- 138960 lib25519-20240928/crypto_pow/inv25519/amd64-safegcd/asm.S raw
#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 <input_1=int64#2,>stack_out=stack64#1
# asm 2: movq <input_1=%rsi,>stack_out=704(%rsp)
movq %rsi,704(%rsp)
# qhasm: stack64 stack_r11
# qhasm: stack_r11 = caller_r11
# asm 1: movq <caller_r11=int64#9,>stack_r11=stack64#2
# asm 2: movq <caller_r11=%r11,>stack_r11=712(%rsp)
movq %r11,712(%rsp)
# qhasm: stack64 stack_r12
# qhasm: stack_r12 = caller_r12
# asm 1: movq <caller_r12=int64#10,>stack_r12=stack64#3
# asm 2: movq <caller_r12=%r12,>stack_r12=720(%rsp)
movq %r12,720(%rsp)
# qhasm: stack64 stack_r13
# qhasm: stack_r13 = caller_r13
# asm 1: movq <caller_r13=int64#11,>stack_r13=stack64#4
# asm 2: movq <caller_r13=%r13,>stack_r13=728(%rsp)
movq %r13,728(%rsp)
# qhasm: stack64 stack_r14
# qhasm: stack_r14 = caller_r14
# asm 1: movq <caller_r14=int64#12,>stack_r14=stack64#5
# asm 2: movq <caller_r14=%r14,>stack_r14=736(%rsp)
movq %r14,736(%rsp)
# qhasm: stack64 stack_r15
# qhasm: stack_r15 = caller_r15
# asm 1: movq <caller_r15=int64#13,>stack_r15=stack64#6
# asm 2: movq <caller_r15=%r15,>stack_r15=744(%rsp)
movq %r15,744(%rsp)
# qhasm: stack64 stack_rbx
# qhasm: stack_rbx = caller_rbx
# asm 1: movq <caller_rbx=int64#14,>stack_rbx=stack64#7
# asm 2: movq <caller_rbx=%rbx,>stack_rbx=752(%rsp)
movq %rbx,752(%rsp)
# qhasm: stack64 stack_rbp
# qhasm: stack_rbp = caller_rbp
# asm 1: movq <caller_rbp=int64#15,>stack_rbp=stack64#8
# asm 2: movq <caller_rbp=%rbp,>stack_rbp=760(%rsp)
movq %rbp,760(%rsp)
# qhasm: int64 a0
# qhasm: a0 = mem64[input_0 + 0]
# asm 1: movq 0(<input_0=int64#1),>a0=int64#2
# asm 2: movq 0(<input_0=%rdi),>a0=%rsi
movq 0(%rdi),%rsi
# qhasm: int64 a1
# qhasm: a1 = mem64[input_0 + 8]
# asm 1: movq 8(<input_0=int64#1),>a1=int64#4
# asm 2: movq 8(<input_0=%rdi),>a1=%rcx
movq 8(%rdi),%rcx
# qhasm: int64 a2
# qhasm: a2 = mem64[input_0 + 16]
# asm 1: movq 16(<input_0=int64#1),>a2=int64#5
# asm 2: movq 16(<input_0=%rdi),>a2=%r8
movq 16(%rdi),%r8
# qhasm: int64 a3
# qhasm: a3 = mem64[input_0 + 24]
# asm 1: movq 24(<input_0=int64#1),>a3=int64#1
# asm 2: movq 24(<input_0=%rdi),>a3=%rdi
movq 24(%rdi),%rdi
# qhasm: t0 = a3
# asm 1: mov <a3=int64#1,>t0=int64#6
# asm 2: mov <a3=%rdi,>t0=%r9
mov %rdi,%r9
# qhasm: (int64) t0 >>= 63
# asm 1: sar $63,<t0=int64#6
# asm 2: sar $63,<t0=%r9
sar $63,%r9
# qhasm: a3 reset bit 63
# asm 1: btr $63,<a3=int64#1
# asm 2: btr $63,<a3=%rdi
btr $63,%rdi
# qhasm: t0 &= 19
# asm 1: and $19,<t0=int64#6
# asm 2: and $19,<t0=%r9
and $19,%r9
# qhasm: t0 += 19
# asm 1: add $19,<t0=int64#6
# asm 2: add $19,<t0=%r9
add $19,%r9
# qhasm: carry? a0 += t0
# asm 1: add <t0=int64#6,<a0=int64#2
# asm 2: add <t0=%r9,<a0=%rsi
add %r9,%rsi
# qhasm: carry? a1 += 0 + carry
# asm 1: adc $0,<a1=int64#4
# asm 2: adc $0,<a1=%rcx
adc $0,%rcx
# qhasm: carry? a2 += 0 + carry
# asm 1: adc $0,<a2=int64#5
# asm 2: adc $0,<a2=%r8
adc $0,%r8
# qhasm: a3 += 0 + carry
# asm 1: adc $0,<a3=int64#1
# asm 2: adc $0,<a3=%rdi
adc $0,%rdi
# qhasm: t0 = a3
# asm 1: mov <a3=int64#1,>t0=int64#6
# asm 2: mov <a3=%rdi,>t0=%r9
mov %rdi,%r9
# qhasm: (int64) t0 >>= 63
# asm 1: sar $63,<t0=int64#6
# asm 2: sar $63,<t0=%r9
sar $63,%r9
# qhasm: a3 reset bit 63
# asm 1: btr $63,<a3=int64#1
# asm 2: btr $63,<a3=%rdi
btr $63,%rdi
# qhasm: t0 &= 19
# asm 1: and $19,<t0=int64#6
# asm 2: and $19,<t0=%r9
and $19,%r9
# qhasm: carry? a0 += t0
# asm 1: add <t0=int64#6,<a0=int64#2
# asm 2: add <t0=%r9,<a0=%rsi
add %r9,%rsi
# qhasm: carry? a1 += 0 + carry
# asm 1: adc $0,<a1=int64#4
# asm 2: adc $0,<a1=%rcx
adc $0,%rcx
# qhasm: carry? a2 += 0 + carry
# asm 1: adc $0,<a2=int64#5
# asm 2: adc $0,<a2=%r8
adc $0,%r8
# qhasm: a3 += 0 + carry
# asm 1: adc $0,<a3=int64#1
# asm 2: adc $0,<a3=%rdi
adc $0,%rdi
# qhasm: carry? a0 -= 19
# asm 1: sub $19,<a0=int64#2
# asm 2: sub $19,<a0=%rsi
sub $19,%rsi
# qhasm: carry? a1 -= 0 - carry
# asm 1: sbb $0,<a1=int64#4
# asm 2: sbb $0,<a1=%rcx
sbb $0,%rcx
# qhasm: carry? a2 -= 0 - carry
# asm 1: sbb $0,<a2=int64#5
# asm 2: sbb $0,<a2=%r8
sbb $0,%r8
# qhasm: a3 -= 0 - carry
# asm 1: sbb $0,<a3=int64#1
# asm 2: sbb $0,<a3=%rdi
sbb $0,%rdi
# qhasm: t0 = -1152921504606846976
# asm 1: mov $-1152921504606846976,>t0=int64#6
# asm 2: mov $-1152921504606846976,>t0=%r9
mov $-1152921504606846976,%r9
# qhasm: g = a0 & ~ t0
# asm 1: andn <a0=int64#2,<t0=int64#6,>g=int64#6
# asm 2: andn <a0=%rsi,<t0=%r9,>g=%r9
andn %rsi,%r9,%r9
# qhasm: d1 = mem256[ input_2 + 288 ]
# asm 1: vmovupd 288(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 288(<input_2=%rdx),>d1=%ymm0
vmovupd 288(%rdx),%ymm0
# qhasm: stack_FVGS0 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS0=stack256#2
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS0=32(%rsp)
vmovapd %ymm0,32(%rsp)
# qhasm: t0 = a0
# asm 1: mov <a0=int64#2,>t0=int64#7
# asm 2: mov <a0=%rsi,>t0=%rax
mov %rsi,%rax
# qhasm: t0 &= 1073741823
# asm 1: and $1073741823,<t0=int64#7
# asm 2: and $1073741823,<t0=%rax
and $1073741823,%rax
# qhasm: inplace stack_FVGS0[2] = t0
# asm 1: movq <t0=int64#7,<stack_FVGS0=stack256#2
# asm 2: movq <t0=%rax,<stack_FVGS0=48(%rsp)
movq %rax,48(%rsp)
# qhasm: d1 = mem256[ input_2 + 320 ]
# asm 1: vmovupd 320(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 320(<input_2=%rdx),>d1=%ymm0
vmovupd 320(%rdx),%ymm0
# qhasm: stack_FVGS1 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS1=stack256#3
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS1=64(%rsp)
vmovapd %ymm0,64(%rsp)
# qhasm: t0 = a0
# asm 1: mov <a0=int64#2,>t0=int64#7
# asm 2: mov <a0=%rsi,>t0=%rax
mov %rsi,%rax
# qhasm: (uint64) t0 >>= 30
# asm 1: shr $30,<t0=int64#7
# asm 2: shr $30,<t0=%rax
shr $30,%rax
# qhasm: t0 &= 1073741823
# asm 1: and $1073741823,<t0=int64#7
# asm 2: and $1073741823,<t0=%rax
and $1073741823,%rax
# qhasm: inplace stack_FVGS1[2] = t0
# asm 1: movq <t0=int64#7,<stack_FVGS1=stack256#3
# asm 2: movq <t0=%rax,<stack_FVGS1=80(%rsp)
movq %rax,80(%rsp)
# qhasm: d1 = mem256[ input_2 + 352 ]
# asm 1: vmovupd 352(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 352(<input_2=%rdx),>d1=%ymm0
vmovupd 352(%rdx),%ymm0
# qhasm: stack_FVGS2 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS2=stack256#4
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS2=96(%rsp)
vmovapd %ymm0,96(%rsp)
# qhasm: a0 = (a1 a0) >> 60
# asm 1: shrd $60,<a1=int64#4,<a0=int64#2
# asm 2: shrd $60,<a1=%rcx,<a0=%rsi
shrd $60,%rcx,%rsi
# qhasm: a0 &= 1073741823
# asm 1: and $1073741823,<a0=int64#2
# asm 2: and $1073741823,<a0=%rsi
and $1073741823,%rsi
# qhasm: inplace stack_FVGS2[2] = a0
# asm 1: movq <a0=int64#2,<stack_FVGS2=stack256#4
# asm 2: movq <a0=%rsi,<stack_FVGS2=112(%rsp)
movq %rsi,112(%rsp)
# qhasm: d1 = mem256[ input_2 + 384 ]
# asm 1: vmovupd 384(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 384(<input_2=%rdx),>d1=%ymm0
vmovupd 384(%rdx),%ymm0
# qhasm: stack_FVGS3 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS3=stack256#5
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS3=128(%rsp)
vmovapd %ymm0,128(%rsp)
# qhasm: t0 = a1
# asm 1: mov <a1=int64#4,>t0=int64#2
# asm 2: mov <a1=%rcx,>t0=%rsi
mov %rcx,%rsi
# qhasm: (uint64) t0 >>= 26
# asm 1: shr $26,<t0=int64#2
# asm 2: shr $26,<t0=%rsi
shr $26,%rsi
# qhasm: t0 &= 1073741823
# asm 1: and $1073741823,<t0=int64#2
# asm 2: and $1073741823,<t0=%rsi
and $1073741823,%rsi
# qhasm: inplace stack_FVGS3[2] = t0
# asm 1: movq <t0=int64#2,<stack_FVGS3=stack256#5
# asm 2: movq <t0=%rsi,<stack_FVGS3=144(%rsp)
movq %rsi,144(%rsp)
# qhasm: d1 = mem256[ input_2 + 416 ]
# asm 1: vmovupd 416(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 416(<input_2=%rdx),>d1=%ymm0
vmovupd 416(%rdx),%ymm0
# qhasm: stack_FVGS4 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS4=stack256#6
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS4=160(%rsp)
vmovapd %ymm0,160(%rsp)
# qhasm: a1 = (a2 a1) >> 56
# asm 1: shrd $56,<a2=int64#5,<a1=int64#4
# asm 2: shrd $56,<a2=%r8,<a1=%rcx
shrd $56,%r8,%rcx
# qhasm: a1 &= 1073741823
# asm 1: and $1073741823,<a1=int64#4
# asm 2: and $1073741823,<a1=%rcx
and $1073741823,%rcx
# qhasm: inplace stack_FVGS4[2] = a1
# asm 1: movq <a1=int64#4,<stack_FVGS4=stack256#6
# asm 2: movq <a1=%rcx,<stack_FVGS4=176(%rsp)
movq %rcx,176(%rsp)
# qhasm: d1 = mem256[ input_2 + 448 ]
# asm 1: vmovupd 448(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 448(<input_2=%rdx),>d1=%ymm0
vmovupd 448(%rdx),%ymm0
# qhasm: stack_FVGS5 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS5=stack256#7
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS5=192(%rsp)
vmovapd %ymm0,192(%rsp)
# qhasm: t0 = a2
# asm 1: mov <a2=int64#5,>t0=int64#2
# asm 2: mov <a2=%r8,>t0=%rsi
mov %r8,%rsi
# qhasm: (uint64) t0 >>= 22
# asm 1: shr $22,<t0=int64#2
# asm 2: shr $22,<t0=%rsi
shr $22,%rsi
# qhasm: t0 &= 1073741823
# asm 1: and $1073741823,<t0=int64#2
# asm 2: and $1073741823,<t0=%rsi
and $1073741823,%rsi
# qhasm: inplace stack_FVGS5[2] = t0
# asm 1: movq <t0=int64#2,<stack_FVGS5=stack256#7
# asm 2: movq <t0=%rsi,<stack_FVGS5=208(%rsp)
movq %rsi,208(%rsp)
# qhasm: d1 = mem256[ input_2 + 480 ]
# asm 1: vmovupd 480(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 480(<input_2=%rdx),>d1=%ymm0
vmovupd 480(%rdx),%ymm0
# qhasm: stack_FVGS6 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS6=stack256#8
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS6=224(%rsp)
vmovapd %ymm0,224(%rsp)
# qhasm: a2 = (a3 a2) >> 52
# asm 1: shrd $52,<a3=int64#1,<a2=int64#5
# asm 2: shrd $52,<a3=%rdi,<a2=%r8
shrd $52,%rdi,%r8
# qhasm: a2 &= 1073741823
# asm 1: and $1073741823,<a2=int64#5
# asm 2: and $1073741823,<a2=%r8
and $1073741823,%r8
# qhasm: inplace stack_FVGS6[2] = a2
# asm 1: movq <a2=int64#5,<stack_FVGS6=stack256#8
# asm 2: movq <a2=%r8,<stack_FVGS6=240(%rsp)
movq %r8,240(%rsp)
# qhasm: d1 = mem256[ input_2 + 512 ]
# asm 1: vmovupd 512(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 512(<input_2=%rdx),>d1=%ymm0
vmovupd 512(%rdx),%ymm0
# qhasm: stack_FVGS7 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS7=stack256#9
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS7=256(%rsp)
vmovapd %ymm0,256(%rsp)
# qhasm: t0 = a3
# asm 1: mov <a3=int64#1,>t0=int64#2
# asm 2: mov <a3=%rdi,>t0=%rsi
mov %rdi,%rsi
# qhasm: (uint64) t0 >>= 18
# asm 1: shr $18,<t0=int64#2
# asm 2: shr $18,<t0=%rsi
shr $18,%rsi
# qhasm: t0 &= 1073741823
# asm 1: and $1073741823,<t0=int64#2
# asm 2: and $1073741823,<t0=%rsi
and $1073741823,%rsi
# qhasm: inplace stack_FVGS7[2] = t0
# asm 1: movq <t0=int64#2,<stack_FVGS7=stack256#9
# asm 2: movq <t0=%rsi,<stack_FVGS7=272(%rsp)
movq %rsi,272(%rsp)
# qhasm: d1 = mem256[ input_2 + 544]
# asm 1: vmovupd 544(<input_2=int64#3),>d1=reg256#1
# asm 2: vmovupd 544(<input_2=%rdx),>d1=%ymm0
vmovupd 544(%rdx),%ymm0
# qhasm: stack_FVGS8 = d1
# asm 1: vmovapd <d1=reg256#1,>stack_FVGS8=stack256#10
# asm 2: vmovapd <d1=%ymm0,>stack_FVGS8=288(%rsp)
vmovapd %ymm0,288(%rsp)
# qhasm: (uint64) a3 >>= 48
# asm 1: shr $48,<a3=int64#1
# asm 2: shr $48,<a3=%rdi
shr $48,%rdi
# qhasm: inplace stack_FVGS8[2] = a3
# asm 1: movq <a3=int64#1,<stack_FVGS8=stack256#10
# asm 2: movq <a3=%rdi,<stack_FVGS8=304(%rsp)
movq %rdi,304(%rsp)
# qhasm: f = -19
# asm 1: mov $-19,>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 <m=int64#2,<stack_m1=stack256#1
# asm 2: movq <m=%rsi,<stack_m1=0(%rsp)
movq %rsi,0(%rsp)
# qhasm: inplace stack_m1[1] = z
# asm 1: movq <z=int64#4,<stack_m1=stack256#1
# asm 2: movq <z=%rcx,<stack_m1=8(%rsp)
movq %rcx,8(%rsp)
# qhasm: _m2p62 = -4611686018427387904
# asm 1: mov $-4611686018427387904,>_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(<input_2=int64#3),>_19x4=reg256#1
# asm 2: vmovupd 0(<input_2=%rdx),>_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(<input_2=int64#3),>_0_19x4=reg256#1
# asm 2: vmovupd 32(<input_2=%rdx),>_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(<input_2=int64#3),>_32767x4=reg256#1
# asm 2: vmovupd 64(<input_2=%rdx),>_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(<input_2=int64#3),>_inv19_2p30x4=reg256#1
# asm 2: vmovupd 96(<input_2=%rdx),>_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(<input_2=int64#3),>_2p30m1x4=reg256#1
# asm 2: vmovupd 128(<input_2=%rdx),>_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(<input_2=int64#3),>_2p33x4=reg256#1
# asm 2: vmovupd 160(<input_2=%rdx),>_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(<input_2=int64#3),>_2p48x4=reg256#1
# asm 2: vmovupd 192(<input_2=%rdx),>_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(<input_2=int64#3),>_2p63x4=reg256#1
# asm 2: vmovupd 224(<input_2=%rdx),>_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(<input_2=int64#3),>_2p63m2p33x4=reg256#1
# asm 2: vmovupd 256(<input_2=%rdx),>_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 <u=int64#8,>s=int64#10
# asm 2: mov <u=%r10,>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 <g=int64#6,>rax=int64#7
# asm 2: mov <g=%r9,>rax=%rax
mov %r9,%rax
# qhasm: (int128) rdx rax = rax * s
# asm 1: imul <s=int64#10
# asm 2: imul <s=%r12
imul %r12
# qhasm: t2 = rax
# asm 1: mov <rax=int64#7,>t2=int64#14
# asm 2: mov <rax=%rax,>t2=%rbx
mov %rax,%rbx
# qhasm: t1 = rdx
# asm 1: mov <rdx=int64#3,>t1=int64#15
# asm 2: mov <rdx=%rdx,>t1=%rbp
mov %rdx,%rbp
# qhasm: rax = f
# asm 1: mov <f=int64#1,>rax=int64#7
# asm 2: mov <f=%rdi,>rax=%rax
mov %rdi,%rax
# qhasm: (int128) rdx rax = rax * r
# asm 1: imul <r=int64#11
# asm 2: imul <r=%r13
imul %r13
# qhasm: carry? t2 += rax
# asm 1: add <rax=int64#7,<t2=int64#14
# asm 2: add <rax=%rax,<t2=%rbx
add %rax,%rbx
# qhasm: t1 += rdx + carry
# asm 1: adc <rdx=int64#3,<t1=int64#15
# asm 2: adc <rdx=%rdx,<t1=%rbp
adc %rdx,%rbp
# qhasm: t2 = (t1 t2) >> 60
# asm 1: shrd $60,<t1=int64#15,<t2=int64#14
# asm 2: shrd $60,<t1=%rbp,<t2=%rbx
shrd $60,%rbp,%rbx
# qhasm: rax = f
# asm 1: mov <f=int64#1,>rax=int64#7
# asm 2: mov <f=%rdi,>rax=%rax
mov %rdi,%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: f = rax
# asm 1: mov <rax=int64#7,>f=int64#1
# asm 2: mov <rax=%rax,>f=%rdi
mov %rax,%rdi
# qhasm: t0 = rdx
# asm 1: mov <rdx=int64#3,>t0=int64#15
# asm 2: mov <rdx=%rdx,>t0=%rbp
mov %rdx,%rbp
# qhasm: rax = g
# asm 1: mov <g=int64#6,>rax=int64#7
# asm 2: mov <g=%r9,>rax=%rax
mov %r9,%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? f += rax
# asm 1: add <rax=int64#7,<f=int64#1
# asm 2: add <rax=%rax,<f=%rdi
add %rax,%rdi
# qhasm: t0 += rdx + carry
# asm 1: adc <rdx=int64#3,<t0=int64#15
# asm 2: adc <rdx=%rdx,<t0=%rbp
adc %rdx,%rbp
# qhasm: f = (t0 f) >> 60
# asm 1: shrd $60,<t0=int64#15,<f=int64#1
# asm 2: shrd $60,<t0=%rbp,<f=%rdi
shrd $60,%rbp,%rdi
# qhasm: new vvrr
# qhasm: vvrr = v,vvrr[1],0,0
# asm 1: vpinsrq $0x0,<v=int64#9,<vvrr=reg256#2%128,<vvrr=reg256#2%128
# asm 2: vpinsrq $0x0,<v=%r11,<vvrr=%xmm1,<vvrr=%xmm1
vpinsrq $0x0,%r11,%xmm1,%xmm1
# qhasm: vvrr = vvrr[0],r,0,0
# asm 1: vpinsrq $0x1,<r=int64#11,<vvrr=reg256#2%128,<vvrr=reg256#2%128
# asm 2: vpinsrq $0x1,<r=%r13,<vvrr=%xmm1,<vvrr=%xmm1
vpinsrq $0x1,%r13,%xmm1,%xmm1
# qhasm: v *= g0
# asm 1: imul <g0=int64#13,<v=int64#9
# asm 2: imul <g0=%r15,<v=%r11
imul %r15,%r11
# qhasm: g0 *= s
# asm 1: imul <s=int64#10,<g0=int64#13
# asm 2: imul <s=%r12,<g0=%r15
imul %r12,%r15
# qhasm: r *= f0
# asm 1: imul <f0=int64#12,<r=int64#11
# asm 2: imul <f0=%r14,<r=%r13
imul %r14,%r13
# qhasm: f0 *= u
# asm 1: imul <u=int64#8,<f0=int64#12
# asm 2: imul <u=%r10,<f0=%r14
imul %r10,%r14
# qhasm: f0 += v
# asm 1: add <v=int64#9,<f0=int64#12
# asm 2: add <v=%r11,<f0=%r14
add %r11,%r14
# qhasm: g0 += r
# asm 1: add <r=int64#11,<g0=int64#13
# asm 2: add <r=%r13,<g0=%r15
add %r13,%r15
# qhasm: f += f0
# asm 1: add <f0=int64#12,<f=int64#1
# asm 2: add <f0=%r14,<f=%rdi
add %r14,%rdi
# qhasm: g = t2+g0
# asm 1: lea (<t2=int64#14,<g0=int64#13),>g=int64#3
# asm 2: lea (<t2=%rbx,<g0=%r15),>g=%rdx
lea (%rbx,%r15),%rdx
# qhasm: FVGS0 = stack_FVGS0
# asm 1: vmovapd <stack_FVGS0=stack256#2,>FVGS0=reg256#3
# asm 2: vmovapd <stack_FVGS0=32(%rsp),>FVGS0=%ymm2
vmovapd 32(%rsp),%ymm2
# qhasm: fuv = f & ~ _m2p20
# asm 1: andn <f=int64#1,<_m2p20=int64#4,>fuv=int64#6
# asm 2: andn <f=%rdi,<_m2p20=%rcx,>fuv=%r9
andn %rdi,%rcx,%r9
# qhasm: loop20_init:
._loop20_init:
# qhasm: new uuss
# qhasm: grs = g & ~ _m2p20
# asm 1: andn <g=int64#3,<_m2p20=int64#4,>grs=int64#7
# asm 2: andn <g=%rdx,<_m2p20=%rcx,>grs=%rax
andn %rdx,%rcx,%rax
# qhasm: uuss = u,uuss[1],0,0
# asm 1: vpinsrq $0x0,<u=int64#8,<uuss=reg256#4%128,<uuss=reg256#4%128
# asm 2: vpinsrq $0x0,<u=%r10,<uuss=%xmm3,<uuss=%xmm3
vpinsrq $0x0,%r10,%xmm3,%xmm3
# qhasm: fuv += stack_m2p41
# asm 1: addq <stack_m2p41=stack64#11,<fuv=int64#6
# asm 2: addq <stack_m2p41=784(%rsp),<fuv=%r9
addq 784(%rsp),%r9
# qhasm: grs += stack_m2p62
# asm 1: addq <stack_m2p62=stack64#9,<grs=int64#7
# asm 2: addq <stack_m2p62=768(%rsp),<grs=%rax
addq 768(%rsp),%rax
# qhasm: uuss = uuss[0],s,0,0
# asm 1: vpinsrq $0x1,<s=int64#10,<uuss=reg256#4%128,<uuss=reg256#4%128
# asm 2: vpinsrq $0x1,<s=%r12,<uuss=%xmm3,<uuss=%xmm3
vpinsrq $0x1,%r12,%xmm3,%xmm3
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: GSFV0 = FVGS0[1,0]
# asm 1: vpermq $0x4e,<FVGS0=reg256#3,>GSFV0=reg256#5
# asm 2: vpermq $0x4e,<FVGS0=%ymm2,>GSFV0=%ymm4
vpermq $0x4e,%ymm2,%ymm4
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: uuss = uuss[0,0,1,1]
# asm 1: vpermq $0x50,<uuss=reg256#4,>uuss=reg256#4
# asm 2: vpermq $0x50,<uuss=%ymm3,>uuss=%ymm3
vpermq $0x50,%ymm3,%ymm3
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: vvrr = vvrr[0,0,1,1]
# asm 1: vpermq $0x50,<vvrr=reg256#2,>vvrr=reg256#2
# asm 2: vpermq $0x50,<vvrr=%ymm1,>vvrr=%ymm1
vpermq $0x50,%ymm1,%ymm1
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: _2p30m1x4 = stack_2p30m1x4
# asm 1: vmovapd <stack_2p30m1x4=stack256#15,>_2p30m1x4=reg256#6
# asm 2: vmovapd <stack_2p30m1x4=448(%rsp),>_2p30m1x4=%ymm5
vmovapd 448(%rsp),%ymm5
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: uuss0 = uuss & _2p30m1x4
# asm 1: vpand <uuss=reg256#4,<_2p30m1x4=reg256#6,>uuss0=reg256#7
# asm 2: vpand <uuss=%ymm3,<_2p30m1x4=%ymm5,>uuss0=%ymm6
vpand %ymm3,%ymm5,%ymm6
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: vvrr0 = vvrr & _2p30m1x4
# asm 1: vpand <vvrr=reg256#2,<_2p30m1x4=reg256#6,>vvrr0=reg256#8
# asm 2: vpand <vvrr=%ymm1,<_2p30m1x4=%ymm5,>vvrr0=%ymm7
vpand %ymm1,%ymm5,%ymm7
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x ta = int32 uuss0 * int32 FVGS0
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS0=reg256#3,>ta=reg256#9
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS0=%ymm2,>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 <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV0
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV0=reg256#5,>tb=reg256#10
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV0=%ymm4,>tb=%ymm9
vpmuldq %ymm7,%ymm4,%ymm9
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x out0 = ta + tb
# asm 1: vpaddq <ta=reg256#9,<tb=reg256#10,>out0=reg256#9
# asm 2: vpaddq <ta=%ymm8,<tb=%ymm9,>out0=%ymm8
vpaddq %ymm8,%ymm9,%ymm8
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: _inv19_2p30x4 = stack_inv19_2p30x4
# asm 1: vmovapd <stack_inv19_2p30x4=stack256#14,>_inv19_2p30x4=reg256#10
# asm 2: vmovapd <stack_inv19_2p30x4=416(%rsp),>_inv19_2p30x4=%ymm9
vmovapd 416(%rsp),%ymm9
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: _19x4 = stack_19x4
# asm 1: vmovapd <stack_19x4=stack256#11,>_19x4=reg256#11
# asm 2: vmovapd <stack_19x4=320(%rsp),>_19x4=%ymm10
vmovapd 320(%rsp),%ymm10
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x d0 = int32 out0 * int32 _inv19_2p30x4
# asm 1: vpmuldq <out0=reg256#9,<_inv19_2p30x4=reg256#10,>d0=reg256#12
# asm 2: vpmuldq <out0=%ymm8,<_inv19_2p30x4=%ymm9,>d0=%ymm11
vpmuldq %ymm8,%ymm9,%ymm11
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: d0 &= _2p30m1x4
# asm 1: vpand <d0=reg256#12,<_2p30m1x4=reg256#6,<d0=reg256#12
# asm 2: vpand <d0=%ymm11,<_2p30m1x4=%ymm5,<d0=%ymm11
vpand %ymm11,%ymm5,%ymm11
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x d0x19 = int32 d0 * int32 _19x4
# asm 1: vpmuldq <d0=reg256#12,<_19x4=reg256#11,>d0x19=reg256#13
# asm 2: vpmuldq <d0=%ymm11,<_19x4=%ymm10,>d0x19=%ymm12
vpmuldq %ymm11,%ymm10,%ymm12
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out0 -= d0x19
# asm 1: vpsubq <d0x19=reg256#13,<out0=reg256#9,<out0=reg256#9
# asm 2: vpsubq <d0x19=%ymm12,<out0=%ymm8,<out0=%ymm8
vpsubq %ymm12,%ymm8,%ymm8
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x carryy = out0 + stack_2p63x4
# asm 1: vpaddq <stack_2p63x4=stack256#18,<out0=reg256#9,>carryy=reg256#9
# asm 2: vpaddq <stack_2p63x4=544(%rsp),<out0=%ymm8,>carryy=%ymm8
vpaddq 544(%rsp),%ymm8,%ymm8
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#9,<carryy=reg256#9
# asm 2: vpsrlq $30,<carryy=%ymm8,<carryy=%ymm8
vpsrlq $30,%ymm8,%ymm8
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x out8plus2 = d0 << 15
# asm 1: vpsllq $15,<d0=reg256#12,>out8plus2=reg256#12
# asm 2: vpsllq $15,<d0=%ymm11,>out8plus2=%ymm11
vpsllq $15,%ymm11,%ymm11
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: FVGS1 = stack_FVGS1
# asm 1: vmovapd <stack_FVGS1=stack256#3,>FVGS1=reg256#13
# asm 2: vmovapd <stack_FVGS1=64(%rsp),>FVGS1=%ymm12
vmovapd 64(%rsp),%ymm12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: GSFV1 = FVGS1[1,0]
# asm 1: vpermq $0x4e,<FVGS1=reg256#13,>GSFV1=reg256#14
# asm 2: vpermq $0x4e,<FVGS1=%ymm12,>GSFV1=%ymm13
vpermq $0x4e,%ymm12,%ymm13
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x ta = int32 uuss0 * int32 FVGS1
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS1=reg256#13,>ta=reg256#15
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS1=%ymm12,>ta=%ymm14
vpmuldq %ymm6,%ymm12,%ymm14
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV1
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV1=reg256#14,>tb=reg256#16
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV1=%ymm13,>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 <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x out1plus = ta + tb
# asm 1: vpaddq <ta=reg256#15,<tb=reg256#16,>out1plus=reg256#15
# asm 2: vpaddq <ta=%ymm14,<tb=%ymm15,>out1plus=%ymm14
vpaddq %ymm14,%ymm15,%ymm14
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x uuss1 = uuss unsigned>> 30
# asm 1: vpsrlq $30,<uuss=reg256#4,>uuss1=reg256#4
# asm 2: vpsrlq $30,<uuss=%ymm3,>uuss1=%ymm3
vpsrlq $30,%ymm3,%ymm3
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: 4x vvrr1 = vvrr unsigned>> 30
# asm 1: vpsrlq $30,<vvrr=reg256#2,>vvrr1=reg256#2
# asm 2: vpsrlq $30,<vvrr=%ymm1,>vvrr1=%ymm1
vpsrlq $30,%ymm1,%ymm1
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x ta = int32 uuss1 * int32 FVGS0
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS0=reg256#3,>ta=reg256#3
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS0=%ymm2,>ta=%ymm2
vpmuldq %ymm3,%ymm2,%ymm2
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV0
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV0=reg256#5,>tb=reg256#5
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV0=%ymm4,>tb=%ymm4
vpmuldq %ymm1,%ymm4,%ymm4
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x out1 = ta + tb
# asm 1: vpaddq <ta=reg256#3,<tb=reg256#5,>out1=reg256#3
# asm 2: vpaddq <ta=%ymm2,<tb=%ymm4,>out1=%ymm2
vpaddq %ymm2,%ymm4,%ymm2
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x out1 += out1plus
# asm 1: vpaddq <out1=reg256#3,<out1plus=reg256#15,<out1=reg256#3
# asm 2: vpaddq <out1=%ymm2,<out1plus=%ymm14,<out1=%ymm2
vpaddq %ymm2,%ymm14,%ymm2
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = -1
# asm 1: mov $-1,>z=int64#8
# asm 2: mov $-1,>z=%r10
mov $-1,%r10
# qhasm: 4x out1 += carryy
# asm 1: vpaddq <out1=reg256#3,<carryy=reg256#9,<out1=reg256#3
# asm 2: vpaddq <out1=%ymm2,<carryy=%ymm8,<out1=%ymm2
vpaddq %ymm2,%ymm8,%ymm2
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x d1 = int32 out1 * int32 _inv19_2p30x4
# asm 1: vpmuldq <out1=reg256#3,<_inv19_2p30x4=reg256#10,>d1=reg256#5
# asm 2: vpmuldq <out1=%ymm2,<_inv19_2p30x4=%ymm9,>d1=%ymm4
vpmuldq %ymm2,%ymm9,%ymm4
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: d1 &= _2p30m1x4
# asm 1: vpand <d1=reg256#5,<_2p30m1x4=reg256#6,<d1=reg256#5
# asm 2: vpand <d1=%ymm4,<_2p30m1x4=%ymm5,<d1=%ymm4
vpand %ymm4,%ymm5,%ymm4
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x d1x19 = int32 d1 * int32 _19x4
# asm 1: vpmuldq <d1=reg256#5,<_19x4=reg256#11,>d1x19=reg256#9
# asm 2: vpmuldq <d1=%ymm4,<_19x4=%ymm10,>d1x19=%ymm8
vpmuldq %ymm4,%ymm10,%ymm8
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x out1 -= d1x19
# asm 1: vpsubq <d1x19=reg256#9,<out1=reg256#3,<out1=reg256#3
# asm 2: vpsubq <d1x19=%ymm8,<out1=%ymm2,<out1=%ymm2
vpsubq %ymm8,%ymm2,%ymm2
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: 4x carryy = out1 + _2p63m2p33x4
# asm 1: vpaddq <out1=reg256#3,<_2p63m2p33x4=reg256#1,>carryy=reg256#3
# asm 2: vpaddq <out1=%ymm2,<_2p63m2p33x4=%ymm0,>carryy=%ymm2
vpaddq %ymm2,%ymm0,%ymm2
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#3,<carryy=reg256#3
# asm 2: vpsrlq $30,<carryy=%ymm2,<carryy=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out9 = d1 << 15
# asm 1: vpsllq $15,<d1=reg256#5,>out9=reg256#5
# asm 2: vpsllq $15,<d1=%ymm4,>out9=%ymm4
vpsllq $15,%ymm4,%ymm4
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: FVGS2 = stack_FVGS2
# asm 1: vmovapd <stack_FVGS2=stack256#4,>FVGS2=reg256#9
# asm 2: vmovapd <stack_FVGS2=96(%rsp),>FVGS2=%ymm8
vmovapd 96(%rsp),%ymm8
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: GSFV2 = FVGS2[1,0]
# asm 1: vpermq $0x4e,<FVGS2=reg256#9,>GSFV2=reg256#10
# asm 2: vpermq $0x4e,<FVGS2=%ymm8,>GSFV2=%ymm9
vpermq $0x4e,%ymm8,%ymm9
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x ta = int32 uuss1 * int32 FVGS1
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS1=reg256#13,>ta=reg256#11
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS1=%ymm12,>ta=%ymm10
vpmuldq %ymm3,%ymm12,%ymm10
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV1
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV1=reg256#14,>tb=reg256#13
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV1=%ymm13,>tb=%ymm12
vpmuldq %ymm1,%ymm13,%ymm12
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x out2plus = ta + tb
# asm 1: vpaddq <ta=reg256#11,<tb=reg256#13,>out2plus=reg256#11
# asm 2: vpaddq <ta=%ymm10,<tb=%ymm12,>out2plus=%ymm10
vpaddq %ymm10,%ymm12,%ymm10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x ta = int32 uuss0 * int32 FVGS2
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS2=reg256#9,>ta=reg256#13
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS2=%ymm8,>ta=%ymm12
vpmuldq %ymm6,%ymm8,%ymm12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV2
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV2=reg256#10,>tb=reg256#14
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV2=%ymm9,>tb=%ymm13
vpmuldq %ymm7,%ymm9,%ymm13
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out2 = ta + tb
# asm 1: vpaddq <ta=reg256#13,<tb=reg256#14,>out2=reg256#13
# asm 2: vpaddq <ta=%ymm12,<tb=%ymm13,>out2=%ymm12
vpaddq %ymm12,%ymm13,%ymm12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x out2 += out2plus
# asm 1: vpaddq <out2=reg256#13,<out2plus=reg256#11,<out2=reg256#13
# asm 2: vpaddq <out2=%ymm12,<out2plus=%ymm10,<out2=%ymm12
vpaddq %ymm12,%ymm10,%ymm12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: 4x out2 += carryy
# asm 1: vpaddq <out2=reg256#13,<carryy=reg256#3,<out2=reg256#13
# asm 2: vpaddq <out2=%ymm12,<carryy=%ymm2,<out2=%ymm12
vpaddq %ymm12,%ymm2,%ymm12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x carryy = out2 + _2p63m2p33x4
# asm 1: vpaddq <out2=reg256#13,<_2p63m2p33x4=reg256#1,>carryy=reg256#3
# asm 2: vpaddq <out2=%ymm12,<_2p63m2p33x4=%ymm0,>carryy=%ymm2
vpaddq %ymm12,%ymm0,%ymm2
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#3,<carryy=reg256#3
# asm 2: vpsrlq $30,<carryy=%ymm2,<carryy=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: FVGS3 = stack_FVGS3
# asm 1: vmovapd <stack_FVGS3=stack256#5,>FVGS3=reg256#11
# asm 2: vmovapd <stack_FVGS3=128(%rsp),>FVGS3=%ymm10
vmovapd 128(%rsp),%ymm10
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: GSFV3 = FVGS3[1,0]
# asm 1: vpermq $0x4e,<FVGS3=reg256#11,>GSFV3=reg256#14
# asm 2: vpermq $0x4e,<FVGS3=%ymm10,>GSFV3=%ymm13
vpermq $0x4e,%ymm10,%ymm13
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x ta = int32 uuss1 * int32 FVGS2
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS2=reg256#9,>ta=reg256#9
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS2=%ymm8,>ta=%ymm8
vpmuldq %ymm3,%ymm8,%ymm8
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV2
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV2=reg256#10,>tb=reg256#10
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV2=%ymm9,>tb=%ymm9
vpmuldq %ymm1,%ymm9,%ymm9
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x out3plus = ta + tb
# asm 1: vpaddq <ta=reg256#9,<tb=reg256#10,>out3plus=reg256#9
# asm 2: vpaddq <ta=%ymm8,<tb=%ymm9,>out3plus=%ymm8
vpaddq %ymm8,%ymm9,%ymm8
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x ta = int32 uuss0 * int32 FVGS3
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS3=reg256#11,>ta=reg256#10
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS3=%ymm10,>ta=%ymm9
vpmuldq %ymm6,%ymm10,%ymm9
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV3
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV3=reg256#14,>tb=reg256#15
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV3=%ymm13,>tb=%ymm14
vpmuldq %ymm7,%ymm13,%ymm14
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x out3 = ta + tb
# asm 1: vpaddq <ta=reg256#10,<tb=reg256#15,>out3=reg256#10
# asm 2: vpaddq <ta=%ymm9,<tb=%ymm14,>out3=%ymm9
vpaddq %ymm9,%ymm14,%ymm9
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x out3 += out3plus
# asm 1: vpaddq <out3=reg256#10,<out3plus=reg256#9,<out3=reg256#10
# asm 2: vpaddq <out3=%ymm9,<out3plus=%ymm8,<out3=%ymm9
vpaddq %ymm9,%ymm8,%ymm9
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x out3 += carryy
# asm 1: vpaddq <out3=reg256#10,<carryy=reg256#3,<out3=reg256#10
# asm 2: vpaddq <out3=%ymm9,<carryy=%ymm2,<out3=%ymm9
vpaddq %ymm9,%ymm2,%ymm9
# qhasm: z = -1
# asm 1: mov $-1,>z=int64#8
# asm 2: mov $-1,>z=%r10
mov $-1,%r10
# qhasm: out2 &= _2p30m1x4
# asm 1: vpand <out2=reg256#13,<_2p30m1x4=reg256#6,<out2=reg256#13
# asm 2: vpand <out2=%ymm12,<_2p30m1x4=%ymm5,<out2=%ymm12
vpand %ymm12,%ymm5,%ymm12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x carryy = out3 + _2p63m2p33x4
# asm 1: vpaddq <out3=reg256#10,<_2p63m2p33x4=reg256#1,>carryy=reg256#3
# asm 2: vpaddq <out3=%ymm9,<_2p63m2p33x4=%ymm0,>carryy=%ymm2
vpaddq %ymm9,%ymm0,%ymm2
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#3,<carryy=reg256#3
# asm 2: vpsrlq $30,<carryy=%ymm2,<carryy=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: out3 &= _2p30m1x4
# asm 1: vpand <out3=reg256#10,<_2p30m1x4=reg256#6,<out3=reg256#10
# asm 2: vpand <out3=%ymm9,<_2p30m1x4=%ymm5,<out3=%ymm9
vpand %ymm9,%ymm5,%ymm9
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: stack_FVGS1 = out3
# asm 1: vmovapd <out3=reg256#10,>stack_FVGS1=stack256#3
# asm 2: vmovapd <out3=%ymm9,>stack_FVGS1=64(%rsp)
vmovapd %ymm9,64(%rsp)
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x ta = out3 << 30
# asm 1: vpsllq $30,<out3=reg256#10,>ta=reg256#9
# asm 2: vpsllq $30,<out3=%ymm9,>ta=%ymm8
vpsllq $30,%ymm9,%ymm8
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: 4x ta += out2
# asm 1: vpaddq <ta=reg256#9,<out2=reg256#13,<ta=reg256#9
# asm 2: vpaddq <ta=%ymm8,<out2=%ymm12,<ta=%ymm8
vpaddq %ymm8,%ymm12,%ymm8
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: stack_fxgx = ta
# asm 1: vmovapd <ta=reg256#9,>stack_fxgx=stack256#21
# asm 2: vmovapd <ta=%ymm8,>stack_fxgx=640(%rsp)
vmovapd %ymm8,640(%rsp)
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: FVGS4 = stack_FVGS4
# asm 1: vmovapd <stack_FVGS4=stack256#6,>FVGS4=reg256#9
# asm 2: vmovapd <stack_FVGS4=160(%rsp),>FVGS4=%ymm8
vmovapd 160(%rsp),%ymm8
# qhasm: GSFV4 = FVGS4[1,0]
# asm 1: vpermq $0x4e,<FVGS4=reg256#9,>GSFV4=reg256#10
# asm 2: vpermq $0x4e,<FVGS4=%ymm8,>GSFV4=%ymm9
vpermq $0x4e,%ymm8,%ymm9
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x ta = int32 uuss1 * int32 FVGS3
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS3=reg256#11,>ta=reg256#11
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS3=%ymm10,>ta=%ymm10
vpmuldq %ymm3,%ymm10,%ymm10
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV3
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV3=reg256#14,>tb=reg256#14
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV3=%ymm13,>tb=%ymm13
vpmuldq %ymm1,%ymm13,%ymm13
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x out4plus = ta + tb
# asm 1: vpaddq <ta=reg256#11,<tb=reg256#14,>out4plus=reg256#11
# asm 2: vpaddq <ta=%ymm10,<tb=%ymm13,>out4plus=%ymm10
vpaddq %ymm10,%ymm13,%ymm10
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: 4x ta = int32 uuss0 * int32 FVGS4
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS4=reg256#9,>ta=reg256#14
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS4=%ymm8,>ta=%ymm13
vpmuldq %ymm6,%ymm8,%ymm13
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV4
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV4=reg256#10,>tb=reg256#15
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV4=%ymm9,>tb=%ymm14
vpmuldq %ymm7,%ymm9,%ymm14
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = -1
# asm 1: mov $-1,>z=int64#8
# asm 2: mov $-1,>z=%r10
mov $-1,%r10
# qhasm: 4x out4 = ta + tb
# asm 1: vpaddq <ta=reg256#14,<tb=reg256#15,>out4=reg256#14
# asm 2: vpaddq <ta=%ymm13,<tb=%ymm14,>out4=%ymm13
vpaddq %ymm13,%ymm14,%ymm13
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x out4 += out4plus
# asm 1: vpaddq <out4=reg256#14,<out4plus=reg256#11,<out4=reg256#14
# asm 2: vpaddq <out4=%ymm13,<out4plus=%ymm10,<out4=%ymm13
vpaddq %ymm13,%ymm10,%ymm13
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x out4 += carryy
# asm 1: vpaddq <out4=reg256#14,<carryy=reg256#3,<out4=reg256#14
# asm 2: vpaddq <out4=%ymm13,<carryy=%ymm2,<out4=%ymm13
vpaddq %ymm13,%ymm2,%ymm13
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x carryy = out4 + _2p63m2p33x4
# asm 1: vpaddq <out4=reg256#14,<_2p63m2p33x4=reg256#1,>carryy=reg256#3
# asm 2: vpaddq <out4=%ymm13,<_2p63m2p33x4=%ymm0,>carryy=%ymm2
vpaddq %ymm13,%ymm0,%ymm2
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#3,<carryy=reg256#3
# asm 2: vpsrlq $30,<carryy=%ymm2,<carryy=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: FVGS5 = stack_FVGS5
# asm 1: vmovapd <stack_FVGS5=stack256#7,>FVGS5=reg256#11
# asm 2: vmovapd <stack_FVGS5=192(%rsp),>FVGS5=%ymm10
vmovapd 192(%rsp),%ymm10
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: GSFV5 = FVGS5[1,0]
# asm 1: vpermq $0x4e,<FVGS5=reg256#11,>GSFV5=reg256#15
# asm 2: vpermq $0x4e,<FVGS5=%ymm10,>GSFV5=%ymm14
vpermq $0x4e,%ymm10,%ymm14
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = -1
# asm 1: mov $-1,>z=int64#8
# asm 2: mov $-1,>z=%r10
mov $-1,%r10
# qhasm: 4x ta = int32 uuss1 * int32 FVGS4
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS4=reg256#9,>ta=reg256#9
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS4=%ymm8,>ta=%ymm8
vpmuldq %ymm3,%ymm8,%ymm8
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV4
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV4=reg256#10,>tb=reg256#10
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV4=%ymm9,>tb=%ymm9
vpmuldq %ymm1,%ymm9,%ymm9
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x out5plus = ta + tb
# asm 1: vpaddq <ta=reg256#9,<tb=reg256#10,>out5plus=reg256#9
# asm 2: vpaddq <ta=%ymm8,<tb=%ymm9,>out5plus=%ymm8
vpaddq %ymm8,%ymm9,%ymm8
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x ta = int32 uuss0 * int32 FVGS5
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS5=reg256#11,>ta=reg256#10
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS5=%ymm10,>ta=%ymm9
vpmuldq %ymm6,%ymm10,%ymm9
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV5
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV5=reg256#15,>tb=reg256#16
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV5=%ymm14,>tb=%ymm15
vpmuldq %ymm7,%ymm14,%ymm15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x out5 = ta + tb
# asm 1: vpaddq <ta=reg256#10,<tb=reg256#16,>out5=reg256#10
# asm 2: vpaddq <ta=%ymm9,<tb=%ymm15,>out5=%ymm9
vpaddq %ymm9,%ymm15,%ymm9
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x out5 += out5plus
# asm 1: vpaddq <out5=reg256#10,<out5plus=reg256#9,<out5=reg256#10
# asm 2: vpaddq <out5=%ymm9,<out5plus=%ymm8,<out5=%ymm9
vpaddq %ymm9,%ymm8,%ymm9
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x out5 += carryy
# asm 1: vpaddq <out5=reg256#10,<carryy=reg256#3,<out5=reg256#10
# asm 2: vpaddq <out5=%ymm9,<carryy=%ymm2,<out5=%ymm9
vpaddq %ymm9,%ymm2,%ymm9
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x carryy = out5 + _2p63m2p33x4
# asm 1: vpaddq <out5=reg256#10,<_2p63m2p33x4=reg256#1,>carryy=reg256#3
# asm 2: vpaddq <out5=%ymm9,<_2p63m2p33x4=%ymm0,>carryy=%ymm2
vpaddq %ymm9,%ymm0,%ymm2
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x carryy unsigned>>= 30
# asm 1: vpsrlq $30,<carryy=reg256#3,<carryy=reg256#3
# asm 2: vpsrlq $30,<carryy=%ymm2,<carryy=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: out5 &= _2p30m1x4
# asm 1: vpand <out5=reg256#10,<_2p30m1x4=reg256#6,<out5=reg256#10
# asm 2: vpand <out5=%ymm9,<_2p30m1x4=%ymm5,<out5=%ymm9
vpand %ymm9,%ymm5,%ymm9
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: out4 &= _2p30m1x4
# asm 1: vpand <out4=reg256#14,<_2p30m1x4=reg256#6,<out4=reg256#14
# asm 2: vpand <out4=%ymm13,<_2p30m1x4=%ymm5,<out4=%ymm13
vpand %ymm13,%ymm5,%ymm13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: stack_FVGS2 = out4
# asm 1: vmovapd <out4=reg256#14,>stack_FVGS2=stack256#4
# asm 2: vmovapd <out4=%ymm13,>stack_FVGS2=96(%rsp)
vmovapd %ymm13,96(%rsp)
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x ta = out5 << 30
# asm 1: vpsllq $30,<out5=reg256#10,>ta=reg256#9
# asm 2: vpsllq $30,<out5=%ymm9,>ta=%ymm8
vpsllq $30,%ymm9,%ymm8
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: 4x ta += out4
# asm 1: vpaddq <ta=reg256#9,<out4=reg256#14,<ta=reg256#9
# asm 2: vpaddq <ta=%ymm8,<out4=%ymm13,<ta=%ymm8
vpaddq %ymm8,%ymm13,%ymm8
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: stack_fygy = ta
# asm 1: vmovapd <ta=reg256#9,>stack_fygy=stack256#22
# asm 2: vmovapd <ta=%ymm8,>stack_fygy=672(%rsp)
vmovapd %ymm8,672(%rsp)
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: FVGS6 = stack_FVGS6
# asm 1: vmovapd <stack_FVGS6=stack256#8,>FVGS6=reg256#9
# asm 2: vmovapd <stack_FVGS6=224(%rsp),>FVGS6=%ymm8
vmovapd 224(%rsp),%ymm8
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: GSFV6 = FVGS6[1,0]
# asm 1: vpermq $0x4e,<FVGS6=reg256#9,>GSFV6=reg256#14
# asm 2: vpermq $0x4e,<FVGS6=%ymm8,>GSFV6=%ymm13
vpermq $0x4e,%ymm8,%ymm13
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x ta = int32 uuss1 * int32 FVGS5
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS5=reg256#11,>ta=reg256#11
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS5=%ymm10,>ta=%ymm10
vpmuldq %ymm3,%ymm10,%ymm10
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV5
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV5=reg256#15,>tb=reg256#15
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV5=%ymm14,>tb=%ymm14
vpmuldq %ymm1,%ymm14,%ymm14
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x out6plus = ta + tb
# asm 1: vpaddq <ta=reg256#11,<tb=reg256#15,>out6plus=reg256#11
# asm 2: vpaddq <ta=%ymm10,<tb=%ymm14,>out6plus=%ymm10
vpaddq %ymm10,%ymm14,%ymm10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x ta = int32 uuss0 * int32 FVGS6
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS6=reg256#9,>ta=reg256#15
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS6=%ymm8,>ta=%ymm14
vpmuldq %ymm6,%ymm8,%ymm14
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV6
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV6=reg256#14,>tb=reg256#16
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV6=%ymm13,>tb=%ymm15
vpmuldq %ymm7,%ymm13,%ymm15
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out6 = ta + tb
# asm 1: vpaddq <ta=reg256#15,<tb=reg256#16,>out6=reg256#15
# asm 2: vpaddq <ta=%ymm14,<tb=%ymm15,>out6=%ymm14
vpaddq %ymm14,%ymm15,%ymm14
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x out6 += out6plus
# asm 1: vpaddq <out6=reg256#15,<out6plus=reg256#11,<out6=reg256#15
# asm 2: vpaddq <out6=%ymm14,<out6plus=%ymm10,<out6=%ymm14
vpaddq %ymm14,%ymm10,%ymm14
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: 4x out6 += carryy
# asm 1: vpaddq <out6=reg256#15,<carryy=reg256#3,<out6=reg256#15
# asm 2: vpaddq <out6=%ymm14,<carryy=%ymm2,<out6=%ymm14
vpaddq %ymm14,%ymm2,%ymm14
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x carryz = out6 + _2p63m2p33x4
# asm 1: vpaddq <out6=reg256#15,<_2p63m2p33x4=reg256#1,>carryz=reg256#3
# asm 2: vpaddq <out6=%ymm14,<_2p63m2p33x4=%ymm0,>carryz=%ymm2
vpaddq %ymm14,%ymm0,%ymm2
# qhasm: 4x carryz unsigned>>= 30
# asm 1: vpsrlq $30,<carryz=reg256#3,<carryz=reg256#3
# asm 2: vpsrlq $30,<carryz=%ymm2,<carryz=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: stack_FVGS3 = out5
# asm 1: vmovapd <out5=reg256#10,>stack_FVGS3=stack256#5
# asm 2: vmovapd <out5=%ymm9,>stack_FVGS3=128(%rsp)
vmovapd %ymm9,128(%rsp)
# qhasm: FVGS7 = stack_FVGS7
# asm 1: vmovapd <stack_FVGS7=stack256#9,>FVGS7=reg256#10
# asm 2: vmovapd <stack_FVGS7=256(%rsp),>FVGS7=%ymm9
vmovapd 256(%rsp),%ymm9
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: GSFV7 = FVGS7[1,0]
# asm 1: vpermq $0x4e,<FVGS7=reg256#10,>GSFV7=reg256#11
# asm 2: vpermq $0x4e,<FVGS7=%ymm9,>GSFV7=%ymm10
vpermq $0x4e,%ymm9,%ymm10
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x ta = int32 uuss1 * int32 FVGS6
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS6=reg256#9,>ta=reg256#9
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS6=%ymm8,>ta=%ymm8
vpmuldq %ymm3,%ymm8,%ymm8
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV6
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV6=reg256#14,>tb=reg256#14
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV6=%ymm13,>tb=%ymm13
vpmuldq %ymm1,%ymm13,%ymm13
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x out7plus = ta + tb
# asm 1: vpaddq <ta=reg256#9,<tb=reg256#14,>out7plus=reg256#9
# asm 2: vpaddq <ta=%ymm8,<tb=%ymm13,>out7plus=%ymm8
vpaddq %ymm8,%ymm13,%ymm8
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x ta = int32 uuss0 * int32 FVGS7
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS7=reg256#10,>ta=reg256#14
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS7=%ymm9,>ta=%ymm13
vpmuldq %ymm6,%ymm9,%ymm13
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV7
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV7=reg256#11,>tb=reg256#16
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV7=%ymm10,>tb=%ymm15
vpmuldq %ymm7,%ymm10,%ymm15
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: 4x out7 = ta + tb
# asm 1: vpaddq <ta=reg256#14,<tb=reg256#16,>out7=reg256#14
# asm 2: vpaddq <ta=%ymm13,<tb=%ymm15,>out7=%ymm13
vpaddq %ymm13,%ymm15,%ymm13
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: 4x out7 += out7plus
# asm 1: vpaddq <out7=reg256#14,<out7plus=reg256#9,<out7=reg256#14
# asm 2: vpaddq <out7=%ymm13,<out7plus=%ymm8,<out7=%ymm13
vpaddq %ymm13,%ymm8,%ymm13
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out7 += carryz
# asm 1: vpaddq <out7=reg256#14,<carryz=reg256#3,<out7=reg256#14
# asm 2: vpaddq <out7=%ymm13,<carryz=%ymm2,<out7=%ymm13
vpaddq %ymm13,%ymm2,%ymm13
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x carryz = out7 + _2p63m2p33x4
# asm 1: vpaddq <out7=reg256#14,<_2p63m2p33x4=reg256#1,>carryz=reg256#3
# asm 2: vpaddq <out7=%ymm13,<_2p63m2p33x4=%ymm0,>carryz=%ymm2
vpaddq %ymm13,%ymm0,%ymm2
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: 4x carryz unsigned>>= 30
# asm 1: vpsrlq $30,<carryz=reg256#3,<carryz=reg256#3
# asm 2: vpsrlq $30,<carryz=%ymm2,<carryz=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: out6 &= _2p30m1x4
# asm 1: vpand <out6=reg256#15,<_2p30m1x4=reg256#6,<out6=reg256#15
# asm 2: vpand <out6=%ymm14,<_2p30m1x4=%ymm5,<out6=%ymm14
vpand %ymm14,%ymm5,%ymm14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: stack_FVGS4 = out6
# asm 1: vmovapd <out6=reg256#15,>stack_FVGS4=stack256#6
# asm 2: vmovapd <out6=%ymm14,>stack_FVGS4=160(%rsp)
vmovapd %ymm14,160(%rsp)
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: FVGS8 = stack_FVGS8
# asm 1: vmovapd <stack_FVGS8=stack256#10,>FVGS8=reg256#9
# asm 2: vmovapd <stack_FVGS8=288(%rsp),>FVGS8=%ymm8
vmovapd 288(%rsp),%ymm8
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: GSFV8 = FVGS8[1,0]
# asm 1: vpermq $0x4e,<FVGS8=reg256#9,>GSFV8=reg256#15
# asm 2: vpermq $0x4e,<FVGS8=%ymm8,>GSFV8=%ymm14
vpermq $0x4e,%ymm8,%ymm14
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x ta = int32 uuss1 * int32 FVGS7
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS7=reg256#10,>ta=reg256#10
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS7=%ymm9,>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 <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV7
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV7=reg256#11,>tb=reg256#11
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV7=%ymm10,>tb=%ymm10
vpmuldq %ymm1,%ymm10,%ymm10
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: 4x out8plus = ta + tb
# asm 1: vpaddq <ta=reg256#10,<tb=reg256#11,>out8plus=reg256#10
# asm 2: vpaddq <ta=%ymm9,<tb=%ymm10,>out8plus=%ymm9
vpaddq %ymm9,%ymm10,%ymm9
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x ta = int32 uuss0 * int32 FVGS8
# asm 1: vpmuldq <uuss0=reg256#7,<FVGS8=reg256#9,>ta=reg256#7
# asm 2: vpmuldq <uuss0=%ymm6,<FVGS8=%ymm8,>ta=%ymm6
vpmuldq %ymm6,%ymm8,%ymm6
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x tb = int32 vvrr0 * int32 GSFV8
# asm 1: vpmuldq <vvrr0=reg256#8,<GSFV8=reg256#15,>tb=reg256#8
# asm 2: vpmuldq <vvrr0=%ymm7,<GSFV8=%ymm14,>tb=%ymm7
vpmuldq %ymm7,%ymm14,%ymm7
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: 4x out8 = ta + tb
# asm 1: vpaddq <ta=reg256#7,<tb=reg256#8,>out8=reg256#7
# asm 2: vpaddq <ta=%ymm6,<tb=%ymm7,>out8=%ymm6
vpaddq %ymm6,%ymm7,%ymm6
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: 4x out8 += out8plus
# asm 1: vpaddq <out8=reg256#7,<out8plus=reg256#10,<out8=reg256#7
# asm 2: vpaddq <out8=%ymm6,<out8plus=%ymm9,<out8=%ymm6
vpaddq %ymm6,%ymm9,%ymm6
# qhasm: 4x out8 += carryz
# asm 1: vpaddq <out8=reg256#7,<carryz=reg256#3,<out8=reg256#7
# asm 2: vpaddq <out8=%ymm6,<carryz=%ymm2,<out8=%ymm6
vpaddq %ymm6,%ymm2,%ymm6
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: 4x out8 += out8plus2
# asm 1: vpaddq <out8=reg256#7,<out8plus2=reg256#12,<out8=reg256#7
# asm 2: vpaddq <out8=%ymm6,<out8plus2=%ymm11,<out8=%ymm6
vpaddq %ymm6,%ymm11,%ymm6
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: 4x carryz = out8 + _2p63m2p33x4
# asm 1: vpaddq <out8=reg256#7,<_2p63m2p33x4=reg256#1,>carryz=reg256#3
# asm 2: vpaddq <out8=%ymm6,<_2p63m2p33x4=%ymm0,>carryz=%ymm2
vpaddq %ymm6,%ymm0,%ymm2
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x carryz unsigned>>= 30
# asm 1: vpsrlq $30,<carryz=reg256#3,<carryz=reg256#3
# asm 2: vpsrlq $30,<carryz=%ymm2,<carryz=%ymm2
vpsrlq $30,%ymm2,%ymm2
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: out7 &= _2p30m1x4
# asm 1: vpand <out7=reg256#14,<_2p30m1x4=reg256#6,<out7=reg256#14
# asm 2: vpand <out7=%ymm13,<_2p30m1x4=%ymm5,<out7=%ymm13
vpand %ymm13,%ymm5,%ymm13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: stack_FVGS5 = out7
# asm 1: vmovapd <out7=reg256#14,>stack_FVGS5=stack256#7
# asm 2: vmovapd <out7=%ymm13,>stack_FVGS5=192(%rsp)
vmovapd %ymm13,192(%rsp)
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: 4x ta = int32 uuss1 * int32 FVGS8
# asm 1: vpmuldq <uuss1=reg256#4,<FVGS8=reg256#9,>ta=reg256#4
# asm 2: vpmuldq <uuss1=%ymm3,<FVGS8=%ymm8,>ta=%ymm3
vpmuldq %ymm3,%ymm8,%ymm3
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: 4x tb = int32 vvrr1 * int32 GSFV8
# asm 1: vpmuldq <vvrr1=reg256#2,<GSFV8=reg256#15,>tb=reg256#2
# asm 2: vpmuldq <vvrr1=%ymm1,<GSFV8=%ymm14,>tb=%ymm1
vpmuldq %ymm1,%ymm14,%ymm1
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: 4x out9plus = ta + tb
# asm 1: vpaddq <ta=reg256#4,<tb=reg256#2,>out9plus=reg256#2
# asm 2: vpaddq <ta=%ymm3,<tb=%ymm1,>out9plus=%ymm1
vpaddq %ymm3,%ymm1,%ymm1
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#8
# asm 2: movq <stack_m1=8(%rsp),>z=%r10
movq 8(%rsp),%r10
# qhasm: oldg = grs
# asm 1: mov <grs=int64#7,>oldg=int64#9
# asm 2: mov <grs=%rax,>oldg=%r11
mov %rax,%r11
# qhasm: 4x out9 += out9plus
# asm 1: vpaddq <out9=reg256#5,<out9plus=reg256#2,<out9=reg256#5
# asm 2: vpaddq <out9=%ymm4,<out9plus=%ymm1,<out9=%ymm4
vpaddq %ymm4,%ymm1,%ymm4
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#7,<fuv=int64#6),>h=int64#10
# asm 2: lea (<grs=%rax,<fuv=%r9),>h=%r12
lea (%rax,%r9),%r12
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#7
# asm 2: test $1,<grs=%rax
test $1,%rax
# qhasm: 4x out9 += carryz
# asm 1: vpaddq <out9=reg256#5,<carryz=reg256#3,<out9=reg256#5
# asm 2: vpaddq <out9=%ymm4,<carryz=%ymm2,<out9=%ymm4
vpaddq %ymm4,%ymm2,%ymm4
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#8
# asm 2: cmovne <m=%rsi,<z=%r10
cmovne %rsi,%r10
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#7,<h=int64#10
# asm 2: cmove <grs=%rax,<h=%r12
cmove %rax,%r12
# qhasm: 4x out10 = out9 + _2p63m2p33x4
# asm 1: vpaddq <out9=reg256#5,<_2p63m2p33x4=reg256#1,>out10=reg256#2
# asm 2: vpaddq <out9=%ymm4,<_2p63m2p33x4=%ymm0,>out10=%ymm1
vpaddq %ymm4,%ymm0,%ymm1
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#11
# asm 2: lea 1(<m=%rsi),>mnew=%r13
lea 1(%rsi),%r13
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#6,<grs=int64#7
# asm 2: sub <fuv=%r9,<grs=%rax
sub %r9,%rax
# qhasm: 4x out10 unsigned>>= 30
# asm 1: vpsrlq $30,<out10=reg256#2,<out10=reg256#2
# asm 2: vpsrlq $30,<out10=%ymm1,<out10=%ymm1
vpsrlq $30,%ymm1,%ymm1
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#7
# asm 2: sar $1,<grs=%rax
sar $1,%rax
# qhasm: out8 &= _2p30m1x4
# asm 1: vpand <out8=reg256#7,<_2p30m1x4=reg256#6,<out8=reg256#7
# asm 2: vpand <out8=%ymm6,<_2p30m1x4=%ymm5,<out8=%ymm6
vpand %ymm6,%ymm5,%ymm6
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#10
# asm 2: sar $1,<h=%r12
sar $1,%r12
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#8
# asm 2: cmp $0,<z=%r10
cmp $0,%r10
# qhasm: stack_FVGS6 = out8
# asm 1: vmovapd <out8=reg256#7,>stack_FVGS6=stack256#8
# asm 2: vmovapd <out8=%ymm6,>stack_FVGS6=224(%rsp)
vmovapd %ymm6,224(%rsp)
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#9,<fuv=int64#6
# asm 2: cmovge <oldg=%r11,<fuv=%r9
cmovge %r11,%r9
# qhasm: _32767x4 = stack_32767x4
# asm 1: vmovapd <stack_32767x4=stack256#13,>_32767x4=reg256#3
# asm 2: vmovapd <stack_32767x4=384(%rsp),>_32767x4=%ymm2
vmovapd 384(%rsp),%ymm2
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#10,<grs=int64#7
# asm 2: cmovl <h=%r12,<grs=%rax
cmovl %r12,%rax
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#11,<m=int64#2
# asm 2: cmovl <mnew=%r13,<m=%rsi
cmovl %r13,%rsi
# qhasm: extract_init:
._extract_init:
# qhasm: _2p20a2p41 = stack_2p20a2p41
# asm 1: movq <stack_2p20a2p41=stack64#13,>_2p20a2p41=int64#8
# asm 2: movq <stack_2p20a2p41=800(%rsp),>_2p20a2p41=%r10
movq 800(%rsp),%r10
# qhasm: s = grs + _2p20a2p41
# asm 1: lea (<grs=int64#7,<_2p20a2p41=int64#8),>s=int64#9
# asm 2: lea (<grs=%rax,<_2p20a2p41=%r10),>s=%r11
lea (%rax,%r10),%r11
# qhasm: _2p48x4 = stack_2p48x4
# asm 1: vmovapd <stack_2p48x4=stack256#17,>_2p48x4=reg256#4
# asm 2: vmovapd <stack_2p48x4=512(%rsp),>_2p48x4=%ymm3
vmovapd 512(%rsp),%ymm3
# qhasm: 4x carryy = out10 + _2p63m2p33x4
# asm 1: vpaddq <out10=reg256#2,<_2p63m2p33x4=reg256#1,>carryy=reg256#7
# asm 2: vpaddq <out10=%ymm1,<_2p63m2p33x4=%ymm0,>carryy=%ymm6
vpaddq %ymm1,%ymm0,%ymm6
# qhasm: (int64) s >>= 42
# asm 1: sar $42,<s=int64#9
# asm 2: sar $42,<s=%r11
sar $42,%r11
# qhasm: t2 = g
# asm 1: mov <g=int64#3,>t2=int64#10
# asm 2: mov <g=%rdx,>t2=%r12
mov %rdx,%r12
# qhasm: 4x carryy unsigned>>= 15
# asm 1: vpsrlq $15,<carryy=reg256#7,<carryy=reg256#7
# asm 2: vpsrlq $15,<carryy=%ymm6,<carryy=%ymm6
vpsrlq $15,%ymm6,%ymm6
# qhasm: g *= s
# asm 1: imul <s=int64#9,<g=int64#3
# asm 2: imul <s=%r11,<g=%rdx
imul %r11,%rdx
# qhasm: v = fuv + _2p20a2p41
# asm 1: lea (<fuv=int64#6,<_2p20a2p41=int64#8),>v=int64#8
# asm 2: lea (<fuv=%r9,<_2p20a2p41=%r10),>v=%r10
lea (%r9,%r10),%r10
# qhasm: 4x carryy -= _2p48x4
# asm 1: vpsubq <_2p48x4=reg256#4,<carryy=reg256#7,<carryy=reg256#7
# asm 2: vpsubq <_2p48x4=%ymm3,<carryy=%ymm6,<carryy=%ymm6
vpsubq %ymm3,%ymm6,%ymm6
# qhasm: (int64) v >>= 42
# asm 1: sar $42,<v=int64#8
# asm 2: sar $42,<v=%r10
sar $42,%r10
# qhasm: t2 *= v
# asm 1: imul <v=int64#8,<t2=int64#10
# asm 2: imul <v=%r10,<t2=%r12
imul %r10,%r12
# qhasm: 4x out10 -= stack_2p33x4
# asm 1: vpsubq <stack_2p33x4=stack256#16,<out10=reg256#2,<out10=reg256#2
# asm 2: vpsubq <stack_2p33x4=480(%rsp),<out10=%ymm1,<out10=%ymm1
vpsubq 480(%rsp),%ymm1,%ymm1
# qhasm: _2p20 = stack_2p20
# asm 1: movq <stack_2p20=stack64#10,>_2p20=int64#11
# asm 2: movq <stack_2p20=776(%rsp),>_2p20=%r13
movq 776(%rsp),%r13
# qhasm: r = grs + _2p20
# asm 1: lea (<grs=int64#7,<_2p20=int64#11),>r=int64#7
# asm 2: lea (<grs=%rax,<_2p20=%r13),>r=%rax
lea (%rax,%r13),%rax
# qhasm: out9 &= _2p30m1x4
# asm 1: vpand <out9=reg256#5,<_2p30m1x4=reg256#6,<out9=reg256#5
# asm 2: vpand <out9=%ymm4,<_2p30m1x4=%ymm5,<out9=%ymm4
vpand %ymm4,%ymm5,%ymm4
# qhasm: r <<= 22
# asm 1: shl $22,<r=int64#7
# asm 2: shl $22,<r=%rax
shl $22,%rax
# qhasm: (int64) r >>= 43
# asm 1: sar $43,<r=int64#7
# asm 2: sar $43,<r=%rax
sar $43,%rax
# qhasm: out10 &= _32767x4
# asm 1: vpand <out10=reg256#2,<_32767x4=reg256#3,<out10=reg256#2
# asm 2: vpand <out10=%ymm1,<_32767x4=%ymm2,<out10=%ymm1
vpand %ymm1,%ymm2,%ymm1
# qhasm: rax = f
# asm 1: mov <f=int64#1,>rax=int64#12
# asm 2: mov <f=%rdi,>rax=%r14
mov %rdi,%r14
# qhasm: rax *= r
# asm 1: imul <r=int64#7,<rax=int64#12
# asm 2: imul <r=%rax,<rax=%r14
imul %rax,%r14
# qhasm: 4x carryy = int32 carryy * int32 stack_0_19x4
# asm 1: vpmuldq <stack_0_19x4=stack256#12,<carryy=reg256#7,>carryy=reg256#3
# asm 2: vpmuldq <stack_0_19x4=352(%rsp),<carryy=%ymm6,>carryy=%ymm2
vpmuldq 352(%rsp),%ymm6,%ymm2
# qhasm: u = fuv + _2p20
# asm 1: lea (<fuv=int64#6,<_2p20=int64#11),>u=int64#6
# asm 2: lea (<fuv=%r9,<_2p20=%r13),>u=%r9
lea (%r9,%r13),%r9
# qhasm: 4x out2 += carryy
# asm 1: vpaddq <out2=reg256#13,<carryy=reg256#3,<out2=reg256#13
# asm 2: vpaddq <out2=%ymm12,<carryy=%ymm2,<out2=%ymm12
vpaddq %ymm12,%ymm2,%ymm12
# qhasm: u <<= 22
# asm 1: shl $22,<u=int64#6
# asm 2: shl $22,<u=%r9
shl $22,%r9
# qhasm: (int64) u >>= 43
# asm 1: sar $43,<u=int64#6
# asm 2: sar $43,<u=%r9
sar $43,%r9
# qhasm: f *= u
# asm 1: imul <u=int64#6,<f=int64#1
# asm 2: imul <u=%r9,<f=%rdi
imul %r9,%rdi
# qhasm: stack_FVGS7 = out9
# asm 1: vmovapd <out9=reg256#5,>stack_FVGS7=stack256#9
# asm 2: vmovapd <out9=%ymm4,>stack_FVGS7=256(%rsp)
vmovapd %ymm4,256(%rsp)
# qhasm: f += t2
# asm 1: add <t2=int64#10,<f=int64#1
# asm 2: add <t2=%r12,<f=%rdi
add %r12,%rdi
# qhasm: g += rax
# asm 1: add <rax=int64#12,<g=int64#3
# asm 2: add <rax=%r14,<g=%rdx
add %r14,%rdx
# qhasm: stack_FVGS8 = out10
# asm 1: vmovapd <out10=reg256#2,>stack_FVGS8=stack256#10
# asm 2: vmovapd <out10=%ymm1,>stack_FVGS8=288(%rsp)
vmovapd %ymm1,288(%rsp)
# qhasm: (int64) f >>= 20
# asm 1: sar $20,<f=int64#1
# asm 2: sar $20,<f=%rdi
sar $20,%rdi
# qhasm: stack_FVGS0 = out2
# asm 1: vmovapd <out2=reg256#13,>stack_FVGS0=stack256#2
# asm 2: vmovapd <out2=%ymm12,>stack_FVGS0=32(%rsp)
vmovapd %ymm12,32(%rsp)
# qhasm: (int64) g >>= 20
# asm 1: sar $20,<g=int64#3
# asm 2: sar $20,<g=%rdx
sar $20,%rdx
# qhasm: inplace stack_vvrr[0] = v
# asm 1: movq <v=int64#8,<stack_vvrr=stack256#20
# asm 2: movq <v=%r10,<stack_vvrr=608(%rsp)
movq %r10,608(%rsp)
# qhasm: inplace stack_uuss[0] = u
# asm 1: movq <u=int64#6,<stack_uuss=stack256#19
# asm 2: movq <u=%r9,<stack_uuss=576(%rsp)
movq %r9,576(%rsp)
# qhasm: inplace stack_uuss[2] = s
# asm 1: movq <s=int64#9,<stack_uuss=stack256#19
# asm 2: movq <s=%r11,<stack_uuss=592(%rsp)
movq %r11,592(%rsp)
# qhasm: inplace stack_vvrr[2] = r
# asm 1: movq <r=int64#7,<stack_vvrr=stack256#20
# asm 2: movq <r=%rax,<stack_vvrr=624(%rsp)
movq %rax,624(%rsp)
# qhasm: loop = 2
# asm 1: mov $2,>loop=int64#6
# asm 2: mov $2,>loop=%r9
mov $2,%r9
# qhasm: loop20:
._loop20:
# qhasm: fuv = f & ~ _m2p20
# asm 1: andn <f=int64#1,<_m2p20=int64#4,>fuv=int64#7
# asm 2: andn <f=%rdi,<_m2p20=%rcx,>fuv=%rax
andn %rdi,%rcx,%rax
# qhasm: grs = g & ~ _m2p20
# asm 1: andn <g=int64#3,<_m2p20=int64#4,>grs=int64#8
# asm 2: andn <g=%rdx,<_m2p20=%rcx,>grs=%r10
andn %rdx,%rcx,%r10
# qhasm: fuv += stack_m2p41
# asm 1: addq <stack_m2p41=stack64#11,<fuv=int64#7
# asm 2: addq <stack_m2p41=784(%rsp),<fuv=%rax
addq 784(%rsp),%rax
# qhasm: grs += stack_m2p62
# asm 1: addq <stack_m2p62=stack64#9,<grs=int64#8
# asm 2: addq <stack_m2p62=768(%rsp),<grs=%r10
addq 768(%rsp),%r10
# qhasm: j = 2
# asm 1: mov $2,>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 <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# 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 <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: z = stack_m1[1]
# asm 1: movq <stack_m1=stack256#1,>z=int64#10
# asm 2: movq <stack_m1=8(%rsp),>z=%r12
movq 8(%rsp),%r12
# qhasm: oldg = grs
# asm 1: mov <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# 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 <grs=int64#8,>oldg=int64#11
# asm 2: mov <grs=%r10,>oldg=%r13
mov %r10,%r13
# qhasm: h = grs + fuv
# asm 1: lea (<grs=int64#8,<fuv=int64#7),>h=int64#12
# asm 2: lea (<grs=%r10,<fuv=%rax),>h=%r14
lea (%r10,%rax),%r14
# qhasm: =? grs & 1
# asm 1: test $1,<grs=int64#8
# asm 2: test $1,<grs=%r10
test $1,%r10
# qhasm: z = m if !=
# asm 1: cmovne <m=int64#2,<z=int64#10
# asm 2: cmovne <m=%rsi,<z=%r12
cmovne %rsi,%r12
# qhasm: h = grs if =
# asm 1: cmove <grs=int64#8,<h=int64#12
# asm 2: cmove <grs=%r10,<h=%r14
cmove %r10,%r14
# qhasm: mnew = m + 1
# asm 1: lea 1(<m=int64#2),>mnew=int64#13
# asm 2: lea 1(<m=%rsi),>mnew=%r15
lea 1(%rsi),%r15
# qhasm: grs -= fuv
# asm 1: sub <fuv=int64#7,<grs=int64#8
# asm 2: sub <fuv=%rax,<grs=%r10
sub %rax,%r10
# qhasm: (int64) grs >>= 1
# asm 1: sar $1,<grs=int64#8
# asm 2: sar $1,<grs=%r10
sar $1,%r10
# qhasm: (int64) h >>= 1
# asm 1: sar $1,<h=int64#12
# asm 2: sar $1,<h=%r14
sar $1,%r14
# qhasm: m = -m
# asm 1: neg <m=int64#2
# asm 2: neg <m=%rsi
neg %rsi
# qhasm: signed<? z - 0
# asm 1: cmp $0,<z=int64#10
# asm 2: cmp $0,<z=%r12
cmp $0,%r12
# qhasm: fuv = oldg if !signed<
# asm 1: cmovge <oldg=int64#11,<fuv=int64#7
# asm 2: cmovge <oldg=%r13,<fuv=%rax
cmovge %r13,%rax
# qhasm: grs = h if signed<
# asm 1: cmovl <h=int64#12,<grs=int64#8
# asm 2: cmovl <h=%r14,<grs=%r10
cmovl %r14,%r10
# qhasm: m = mnew if signed<
# asm 1: cmovl <mnew=int64#13,<m=int64#2
# asm 2: cmovl <mnew=%r15,<m=%rsi
cmovl %r15,%rsi
# qhasm: =? j -= 1
# asm 1: dec <j=int64#9
# asm 2: dec <j=%r11
dec %r11
# comment:fp stack unchanged by jump
# qhasm: goto loop2 if !=
jne ._loop2
# qhasm: =? loop -= 1
# asm 1: dec <loop=int64#6
# asm 2: dec <loop=%r9
dec %r9
# comment:fp stack unchanged by jump
# qhasm: goto lastloop if =
je ._lastloop
# qhasm: extract:
._extract:
# qhasm: _2p20a2p41 = stack_2p20a2p41
# asm 1: movq <stack_2p20a2p41=stack64#13,>_2p20a2p41=int64#9
# asm 2: movq <stack_2p20a2p41=800(%rsp),>_2p20a2p41=%r11
movq 800(%rsp),%r11
# qhasm: s = grs + _2p20a2p41
# asm 1: lea (<grs=int64#8,<_2p20a2p41=int64#9),>s=int64#10
# asm 2: lea (<grs=%r10,<_2p20a2p41=%r11),>s=%r12
lea (%r10,%r11),%r12
# qhasm: (int64) s >>= 42
# asm 1: sar $42,<s=int64#10
# asm 2: sar $42,<s=%r12
sar $42,%r12
# qhasm: t2 = g
# asm 1: mov <g=int64#3,>t2=int64#11
# asm 2: mov <g=%rdx,>t2=%r13
mov %rdx,%r13
# qhasm: g *= s
# asm 1: imul <s=int64#10,<g=int64#3
# asm 2: imul <s=%r12,<g=%rdx
imul %r12,%rdx
# qhasm: v = fuv + _2p20a2p41
# asm 1: lea (<fuv=int64#7,<_2p20a2p41=int64#9),>v=int64#9
# asm 2: lea (<fuv=%rax,<_2p20a2p41=%r11),>v=%r11
lea (%rax,%r11),%r11
# qhasm: (int64) v >>= 42
# asm 1: sar $42,<v=int64#9
# asm 2: sar $42,<v=%r11
sar $42,%r11
# qhasm: t2 *= v
# asm 1: imul <v=int64#9,<t2=int64#11
# asm 2: imul <v=%r11,<t2=%r13
imul %r11,%r13
# qhasm: _2p20 = stack_2p20
# asm 1: movq <stack_2p20=stack64#10,>_2p20=int64#12
# asm 2: movq <stack_2p20=776(%rsp),>_2p20=%r14
movq 776(%rsp),%r14
# qhasm: r = grs + _2p20
# asm 1: lea (<grs=int64#8,<_2p20=int64#12),>r=int64#8
# asm 2: lea (<grs=%r10,<_2p20=%r14),>r=%r10
lea (%r10,%r14),%r10
# qhasm: r <<= 22
# asm 1: shl $22,<r=int64#8
# asm 2: shl $22,<r=%r10
shl $22,%r10
# qhasm: (int64) r >>= 43
# asm 1: sar $43,<r=int64#8
# asm 2: sar $43,<r=%r10
sar $43,%r10
# qhasm: rax = f
# asm 1: mov <f=int64#1,>rax=int64#13
# asm 2: mov <f=%rdi,>rax=%r15
mov %rdi,%r15
# qhasm: rax *= r
# asm 1: imul <r=int64#8,<rax=int64#13
# asm 2: imul <r=%r10,<rax=%r15
imul %r10,%r15
# qhasm: u = fuv + _2p20
# asm 1: lea (<fuv=int64#7,<_2p20=int64#12),>u=int64#7
# asm 2: lea (<fuv=%rax,<_2p20=%r14),>u=%rax
lea (%rax,%r14),%rax
# qhasm: u <<= 22
# asm 1: shl $22,<u=int64#7
# asm 2: shl $22,<u=%rax
shl $22,%rax
# qhasm: (int64) u >>= 43
# asm 1: sar $43,<u=int64#7
# asm 2: sar $43,<u=%rax
sar $43,%rax
# qhasm: f *= u
# asm 1: imul <u=int64#7,<f=int64#1
# asm 2: imul <u=%rax,<f=%rdi
imul %rax,%rdi
# qhasm: f += t2
# asm 1: add <t2=int64#11,<f=int64#1
# asm 2: add <t2=%r13,<f=%rdi
add %r13,%rdi
# qhasm: g += rax
# asm 1: add <rax=int64#13,<g=int64#3
# asm 2: add <rax=%r15,<g=%rdx
add %r15,%rdx
# qhasm: (int64) f >>= 20
# asm 1: sar $20,<f=int64#1
# asm 2: sar $20,<f=%rdi
sar $20,%rdi
# qhasm: (int64) g >>= 20
# asm 1: sar $20,<g=int64#3
# asm 2: sar $20,<g=%rdx
sar $20,%rdx
# qhasm: t0 = stack_uuss[0]
# asm 1: movq <stack_uuss=stack256#19,>t0=int64#11
# asm 2: movq <stack_uuss=576(%rsp),>t0=%r13
movq 576(%rsp),%r13
# qhasm: t0 *= u
# asm 1: imul <u=int64#7,<t0=int64#11
# asm 2: imul <u=%rax,<t0=%r13
imul %rax,%r13
# qhasm: t1 = stack_vvrr[2]
# asm 1: movq <stack_vvrr=stack256#20,>t1=int64#12
# asm 2: movq <stack_vvrr=624(%rsp),>t1=%r14
movq 624(%rsp),%r14
# qhasm: t1 *= v
# asm 1: imul <v=int64#9,<t1=int64#12
# asm 2: imul <v=%r11,<t1=%r14
imul %r11,%r14
# qhasm: rtimesoldv = stack_vvrr[0]
# asm 1: movq <stack_vvrr=stack256#20,>rtimesoldv=int64#13
# asm 2: movq <stack_vvrr=608(%rsp),>rtimesoldv=%r15
movq 608(%rsp),%r15
# qhasm: u *= rtimesoldv
# asm 1: imul <rtimesoldv=int64#13,<u=int64#7
# asm 2: imul <rtimesoldv=%r15,<u=%rax
imul %r15,%rax
# qhasm: stimesolds = stack_uuss[2]
# asm 1: movq <stack_uuss=stack256#19,>stimesolds=int64#14
# asm 2: movq <stack_uuss=592(%rsp),>stimesolds=%rbx
movq 592(%rsp),%rbx
# qhasm: v *= stimesolds
# asm 1: imul <stimesolds=int64#14,<v=int64#9
# asm 2: imul <stimesolds=%rbx,<v=%r11
imul %rbx,%r11
# qhasm: rtimesoldv *= r
# asm 1: imul <r=int64#8,<rtimesoldv=int64#13
# asm 2: imul <r=%r10,<rtimesoldv=%r15
imul %r10,%r15
# qhasm: stimesolds *= s
# asm 1: imul <s=int64#10,<stimesolds=int64#14
# asm 2: imul <s=%r12,<stimesolds=%rbx
imul %r12,%rbx
# qhasm: r *= stack_uuss[0]
# asm 1: imulq <stack_uuss=stack256#19,<r=int64#8
# asm 2: imulq <stack_uuss=576(%rsp),<r=%r10
imulq 576(%rsp),%r10
# qhasm: s *= stack_vvrr[2]
# asm 1: imulq <stack_vvrr=stack256#20,<s=int64#10
# asm 2: imulq <stack_vvrr=624(%rsp),<s=%r12
imulq 624(%rsp),%r12
# qhasm: v += u
# asm 1: add <u=int64#7,<v=int64#9
# asm 2: add <u=%rax,<v=%r11
add %rax,%r11
# qhasm: u = t0 + t1
# asm 1: lea (<t0=int64#11,<t1=int64#12),>u=int64#7
# asm 2: lea (<t0=%r13,<t1=%r14),>u=%rax
lea (%r13,%r14),%rax
# qhasm: r += s
# asm 1: add <s=int64#10,<r=int64#8
# asm 2: add <s=%r12,<r=%r10
add %r12,%r10
# qhasm: s = rtimesoldv + stimesolds
# asm 1: lea (<rtimesoldv=int64#13,<stimesolds=int64#14),>s=int64#10
# asm 2: lea (<rtimesoldv=%r15,<stimesolds=%rbx),>s=%r12
lea (%r15,%rbx),%r12
# qhasm: first_loop:
._first_loop:
# qhasm: inplace stack_vvrr[0] = v
# asm 1: movq <v=int64#9,<stack_vvrr=stack256#20
# asm 2: movq <v=%r11,<stack_vvrr=608(%rsp)
movq %r11,608(%rsp)
# qhasm: inplace stack_uuss[0] = u
# asm 1: movq <u=int64#7,<stack_uuss=stack256#19
# asm 2: movq <u=%rax,<stack_uuss=576(%rsp)
movq %rax,576(%rsp)
# qhasm: inplace stack_uuss[2] = s
# asm 1: movq <s=int64#10,<stack_uuss=stack256#19
# asm 2: movq <s=%r12,<stack_uuss=592(%rsp)
movq %r12,592(%rsp)
# qhasm: inplace stack_vvrr[2] = r
# asm 1: movq <r=int64#8,<stack_vvrr=stack256#20
# asm 2: movq <r=%r10,<stack_vvrr=624(%rsp)
movq %r10,624(%rsp)
# comment:fp stack unchanged by jump
# qhasm: goto loop20
jmp ._loop20
# qhasm: lastloop:
._lastloop:
# qhasm: _2p20a2p41 = stack_2p20a2p41
# asm 1: movq <stack_2p20a2p41=stack64#13,>_2p20a2p41=int64#1
# asm 2: movq <stack_2p20a2p41=800(%rsp),>_2p20a2p41=%rdi
movq 800(%rsp),%rdi
# qhasm: s = grs + _2p20a2p41
# asm 1: lea (<grs=int64#8,<_2p20a2p41=int64#1),>s=int64#3
# asm 2: lea (<grs=%r10,<_2p20a2p41=%rdi),>s=%rdx
lea (%r10,%rdi),%rdx
# qhasm: (int64) s >>= 42
# asm 1: sar $42,<s=int64#3
# asm 2: sar $42,<s=%rdx
sar $42,%rdx
# qhasm: v = fuv + _2p20a2p41
# asm 1: lea (<fuv=int64#7,<_2p20a2p41=int64#1),>v=int64#9
# asm 2: lea (<fuv=%rax,<_2p20a2p41=%rdi),>v=%r11
lea (%rax,%rdi),%r11
# qhasm: (int64) v >>= 42
# asm 1: sar $42,<v=int64#9
# asm 2: sar $42,<v=%r11
sar $42,%r11
# qhasm: t1 = stack_vvrr[2]
# asm 1: movq <stack_vvrr=stack256#20,>t1=int64#1
# asm 2: movq <stack_vvrr=624(%rsp),>t1=%rdi
movq 624(%rsp),%rdi
# qhasm: t1 *= v
# asm 1: imul <v=int64#9,<t1=int64#1
# asm 2: imul <v=%r11,<t1=%rdi
imul %r11,%rdi
# qhasm: stimesolds = stack_uuss[2]
# asm 1: movq <stack_uuss=stack256#19,>stimesolds=int64#6
# asm 2: movq <stack_uuss=592(%rsp),>stimesolds=%r9
movq 592(%rsp),%r9
# qhasm: v *= stimesolds
# asm 1: imul <stimesolds=int64#6,<v=int64#9
# asm 2: imul <stimesolds=%r9,<v=%r11
imul %r9,%r11
# qhasm: stimesolds *= s
# asm 1: imul <s=int64#3,<stimesolds=int64#6
# asm 2: imul <s=%rdx,<stimesolds=%r9
imul %rdx,%r9
# qhasm: _2p20 = stack_2p20
# asm 1: movq <stack_2p20=stack64#10,>_2p20=int64#10
# asm 2: movq <stack_2p20=776(%rsp),>_2p20=%r12
movq 776(%rsp),%r12
# qhasm: r = grs + _2p20
# asm 1: lea (<grs=int64#8,<_2p20=int64#10),>r=int64#11
# asm 2: lea (<grs=%r10,<_2p20=%r12),>r=%r13
lea (%r10,%r12),%r13
# qhasm: r <<= 22
# asm 1: shl $22,<r=int64#11
# asm 2: shl $22,<r=%r13
shl $22,%r13
# qhasm: (int64) r >>= 43
# asm 1: sar $43,<r=int64#11
# asm 2: sar $43,<r=%r13
sar $43,%r13
# qhasm: u = fuv + _2p20
# asm 1: lea (<fuv=int64#7,<_2p20=int64#10),>u=int64#7
# asm 2: lea (<fuv=%rax,<_2p20=%r12),>u=%rax
lea (%rax,%r12),%rax
# qhasm: u <<= 22
# asm 1: shl $22,<u=int64#7
# asm 2: shl $22,<u=%rax
shl $22,%rax
# qhasm: (int64) u >>= 43
# asm 1: sar $43,<u=int64#7
# asm 2: sar $43,<u=%rax
sar $43,%rax
# qhasm: t0 = stack_uuss[0]
# asm 1: movq <stack_uuss=stack256#19,>t0=int64#8
# asm 2: movq <stack_uuss=576(%rsp),>t0=%r10
movq 576(%rsp),%r10
# qhasm: t0 *= u
# asm 1: imul <u=int64#7,<t0=int64#8
# asm 2: imul <u=%rax,<t0=%r10
imul %rax,%r10
# qhasm: rtimesoldv = stack_vvrr[0]
# asm 1: movq <stack_vvrr=stack256#20,>rtimesoldv=int64#10
# asm 2: movq <stack_vvrr=608(%rsp),>rtimesoldv=%r12
movq 608(%rsp),%r12
# qhasm: u *= rtimesoldv
# asm 1: imul <rtimesoldv=int64#10,<u=int64#7
# asm 2: imul <rtimesoldv=%r12,<u=%rax
imul %r12,%rax
# qhasm: rtimesoldv *= r
# asm 1: imul <r=int64#11,<rtimesoldv=int64#10
# asm 2: imul <r=%r13,<rtimesoldv=%r12
imul %r13,%r12
# qhasm: s *= stack_vvrr[2]
# asm 1: imulq <stack_vvrr=stack256#20,<s=int64#3
# asm 2: imulq <stack_vvrr=624(%rsp),<s=%rdx
imulq 624(%rsp),%rdx
# qhasm: r *= stack_uuss[0]
# asm 1: imulq <stack_uuss=stack256#19,<r=int64#11
# asm 2: imulq <stack_uuss=576(%rsp),<r=%r13
imulq 576(%rsp),%r13
# qhasm: v += u
# asm 1: add <u=int64#7,<v=int64#9
# asm 2: add <u=%rax,<v=%r11
add %rax,%r11
# qhasm: u = t0 + t1
# asm 1: lea (<t0=int64#8,<t1=int64#1),>u=int64#8
# asm 2: lea (<t0=%r10,<t1=%rdi),>u=%r10
lea (%r10,%rdi),%r10
# qhasm: r += s
# asm 1: add <s=int64#3,<r=int64#11
# asm 2: add <s=%rdx,<r=%r13
add %rdx,%r13
# qhasm: s = rtimesoldv + stimesolds
# asm 1: lea (<rtimesoldv=int64#10,<stimesolds=int64#6),>s=int64#10
# asm 2: lea (<rtimesoldv=%r12,<stimesolds=%r9),>s=%r12
lea (%r12,%r9),%r12
# qhasm: f = stack_fxgx[0]
# asm 1: movq <stack_fxgx=stack256#21,>f=int64#1
# asm 2: movq <stack_fxgx=640(%rsp),>f=%rdi
movq 640(%rsp),%rdi
# qhasm: g = stack_fxgx[2]
# asm 1: movq <stack_fxgx=stack256#21,>g=int64#6
# asm 2: movq <stack_fxgx=656(%rsp),>g=%r9
movq 656(%rsp),%r9
# qhasm: f0 = stack_fygy[0]
# asm 1: movq <stack_fygy=stack256#22,>f0=int64#12
# asm 2: movq <stack_fygy=672(%rsp),>f0=%r14
movq 672(%rsp),%r14
# qhasm: g0 = stack_fygy[2]
# asm 1: movq <stack_fygy=stack256#22,>g0=int64#13
# asm 2: movq <stack_fygy=688(%rsp),>g0=%r15
movq 688(%rsp),%r15
# qhasm: =? i -= 1
# asm 1: dec <i=int64#5
# asm 2: dec <i=%r8
dec %r8
# comment:fp stack unchanged by jump
# qhasm: goto bigloop if !=
jne ._bigloop
# qhasm: int64 a4
# qhasm: int64 a5
# qhasm: int64 a6
# qhasm: f0 <<= 60
# asm 1: shl $60,<f0=int64#12
# asm 2: shl $60,<f0=%r14
shl $60,%r14
# qhasm: g0 <<= 60
# asm 1: shl $60,<g0=int64#13
# asm 2: shl $60,<g0=%r15
shl $60,%r15
# qhasm: f += f0
# asm 1: add <f0=int64#12,<f=int64#1
# asm 2: add <f0=%r14,<f=%rdi
add %r14,%rdi
# qhasm: g += g0
# asm 1: add <g0=int64#13,<g=int64#6
# asm 2: add <g0=%r15,<g=%r9
add %r15,%r9
# qhasm: f *= u
# asm 1: imul <u=int64#8,<f=int64#1
# asm 2: imul <u=%r10,<f=%rdi
imul %r10,%rdi
# qhasm: g *= v
# asm 1: imul <v=int64#9,<g=int64#6
# asm 2: imul <v=%r11,<g=%r9
imul %r11,%r9
# qhasm: t0 = f + g
# asm 1: lea (<f=int64#1,<g=int64#6),>t0=int64#1
# asm 2: lea (<f=%rdi,<g=%r9),>t0=%rdi
lea (%rdi,%r9),%rdi
# qhasm: (int64) t0 >>= 60
# asm 1: sar $60,<t0=int64#1
# asm 2: sar $60,<t0=%rdi
sar $60,%rdi
# qhasm: u *= t0
# asm 1: imul <t0=int64#1,<u=int64#8
# asm 2: imul <t0=%rdi,<u=%r10
imul %rdi,%r10
# qhasm: v *= t0
# asm 1: imul <t0=int64#1,<v=int64#9
# asm 2: imul <t0=%rdi,<v=%r11
imul %rdi,%r11
# qhasm: cneg:
._cneg:
# qhasm: rax = stack_FVGS8[1]
# asm 1: movq <stack_FVGS8=stack256#10,>rax=int64#7
# asm 2: movq <stack_FVGS8=296(%rsp),>rax=%rax
movq 296(%rsp),%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: a4 = rdx
# asm 1: mov <rdx=int64#3,>a4=int64#1
# asm 2: mov <rdx=%rdx,>a4=%rdi
mov %rdx,%rdi
# qhasm: a3 = rax
# asm 1: mov <rax=int64#7,>a3=int64#2
# asm 2: mov <rax=%rax,>a3=%rsi
mov %rax,%rsi
# qhasm: rax = stack_FVGS8[3]
# asm 1: movq <stack_FVGS8=stack256#10,>rax=int64#7
# asm 2: movq <stack_FVGS8=312(%rsp),>rax=%rax
movq 312(%rsp),%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? a3 += rax
# asm 1: add <rax=int64#7,<a3=int64#2
# asm 2: add <rax=%rax,<a3=%rsi
add %rax,%rsi
# qhasm: a4 += rdx + carry
# asm 1: adc <rdx=int64#3,<a4=int64#1
# asm 2: adc <rdx=%rdx,<a4=%rdi
adc %rdx,%rdi
# qhasm: a4 = (a4.a3) << 48
# asm 1: shld $48,<a3=int64#2,<a4=int64#1
# asm 2: shld $48,<a3=%rsi,<a4=%rdi
shld $48,%rsi,%rdi
# qhasm: a3 <<= 48
# asm 1: shl $48,<a3=int64#2
# asm 2: shl $48,<a3=%rsi
shl $48,%rsi
# qhasm: rax = stack_FVGS6[1]
# asm 1: movq <stack_FVGS6=stack256#8,>rax=int64#7
# asm 2: movq <stack_FVGS6=232(%rsp),>rax=%rax
movq 232(%rsp),%rax
# qhasm: t0 = stack_FVGS7[1]
# asm 1: movq <stack_FVGS7=stack256#9,>t0=int64#3
# asm 2: movq <stack_FVGS7=264(%rsp),>t0=%rdx
movq 264(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: t2 = rdx
# asm 1: mov <rdx=int64#3,>t2=int64#4
# asm 2: mov <rdx=%rdx,>t2=%rcx
mov %rdx,%rcx
# qhasm: t1 = rax
# asm 1: mov <rax=int64#7,>t1=int64#5
# asm 2: mov <rax=%rax,>t1=%r8
mov %rax,%r8
# qhasm: rax = stack_FVGS6[3]
# asm 1: movq <stack_FVGS6=stack256#8,>rax=int64#7
# asm 2: movq <stack_FVGS6=248(%rsp),>rax=%rax
movq 248(%rsp),%rax
# qhasm: t0 = stack_FVGS7[3]
# asm 1: movq <stack_FVGS7=stack256#9,>t0=int64#3
# asm 2: movq <stack_FVGS7=280(%rsp),>t0=%rdx
movq 280(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? t1 += rax
# asm 1: add <rax=int64#7,<t1=int64#5
# asm 2: add <rax=%rax,<t1=%r8
add %rax,%r8
# qhasm: t2 += rdx + carry
# asm 1: adc <rdx=int64#3,<t2=int64#4
# asm 2: adc <rdx=%rdx,<t2=%rcx
adc %rdx,%rcx
# qhasm: a2 = t1
# asm 1: mov <t1=int64#5,>a2=int64#6
# asm 2: mov <t1=%r8,>a2=%r9
mov %r8,%r9
# qhasm: t1 = (t2 t1) >> 12
# asm 1: shrd $12,<t2=int64#4,<t1=int64#5
# asm 2: shrd $12,<t2=%rcx,<t1=%r8
shrd $12,%rcx,%r8
# qhasm: a2 <<= 52
# asm 1: shl $52,<a2=int64#6
# asm 2: shl $52,<a2=%r9
shl $52,%r9
# qhasm: (int64) t2 >>= 12
# asm 1: sar $12,<t2=int64#4
# asm 2: sar $12,<t2=%rcx
sar $12,%rcx
# qhasm: carry? a3 += t1
# asm 1: add <t1=int64#5,<a3=int64#2
# asm 2: add <t1=%r8,<a3=%rsi
add %r8,%rsi
# qhasm: a4 += t2 + carry
# asm 1: adc <t2=int64#4,<a4=int64#1
# asm 2: adc <t2=%rcx,<a4=%rdi
adc %rcx,%rdi
# qhasm: rax = stack_FVGS4[1]
# asm 1: movq <stack_FVGS4=stack256#6,>rax=int64#7
# asm 2: movq <stack_FVGS4=168(%rsp),>rax=%rax
movq 168(%rsp),%rax
# qhasm: t0 = stack_FVGS5[1]
# asm 1: movq <stack_FVGS5=stack256#7,>t0=int64#3
# asm 2: movq <stack_FVGS5=200(%rsp),>t0=%rdx
movq 200(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: t2 = rdx
# asm 1: mov <rdx=int64#3,>t2=int64#4
# asm 2: mov <rdx=%rdx,>t2=%rcx
mov %rdx,%rcx
# qhasm: t1 = rax
# asm 1: mov <rax=int64#7,>t1=int64#5
# asm 2: mov <rax=%rax,>t1=%r8
mov %rax,%r8
# qhasm: rax = stack_FVGS4[3]
# asm 1: movq <stack_FVGS4=stack256#6,>rax=int64#7
# asm 2: movq <stack_FVGS4=184(%rsp),>rax=%rax
movq 184(%rsp),%rax
# qhasm: t0 = stack_FVGS5[3]
# asm 1: movq <stack_FVGS5=stack256#7,>t0=int64#3
# asm 2: movq <stack_FVGS5=216(%rsp),>t0=%rdx
movq 216(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? t1 += rax
# asm 1: add <rax=int64#7,<t1=int64#5
# asm 2: add <rax=%rax,<t1=%r8
add %rax,%r8
# qhasm: t2 += rdx + carry
# asm 1: adc <rdx=int64#3,<t2=int64#4
# asm 2: adc <rdx=%rdx,<t2=%rcx
adc %rdx,%rcx
# qhasm: a1 = t1
# asm 1: mov <t1=int64#5,>a1=int64#10
# asm 2: mov <t1=%r8,>a1=%r12
mov %r8,%r12
# qhasm: t1 = (t2 t1) >> 8
# asm 1: shrd $8,<t2=int64#4,<t1=int64#5
# asm 2: shrd $8,<t2=%rcx,<t1=%r8
shrd $8,%rcx,%r8
# qhasm: a1 <<= 56
# asm 1: shl $56,<a1=int64#10
# asm 2: shl $56,<a1=%r12
shl $56,%r12
# qhasm: h = t2
# asm 1: mov <t2=int64#4,>h=int64#3
# asm 2: mov <t2=%rcx,>h=%rdx
mov %rcx,%rdx
# qhasm: (int64) t2 >>= 8
# asm 1: sar $8,<t2=int64#4
# asm 2: sar $8,<t2=%rcx
sar $8,%rcx
# qhasm: (int64) h >>= 63
# asm 1: sar $63,<h=int64#3
# asm 2: sar $63,<h=%rdx
sar $63,%rdx
# qhasm: carry? a2 += t1
# asm 1: add <t1=int64#5,<a2=int64#6
# asm 2: add <t1=%r8,<a2=%r9
add %r8,%r9
# qhasm: carry? a3 += t2 + carry
# asm 1: adc <t2=int64#4,<a3=int64#2
# asm 2: adc <t2=%rcx,<a3=%rsi
adc %rcx,%rsi
# qhasm: a4 += h + carry
# asm 1: adc <h=int64#3,<a4=int64#1
# asm 2: adc <h=%rdx,<a4=%rdi
adc %rdx,%rdi
# qhasm: rax = stack_FVGS2[1]
# asm 1: movq <stack_FVGS2=stack256#4,>rax=int64#7
# asm 2: movq <stack_FVGS2=104(%rsp),>rax=%rax
movq 104(%rsp),%rax
# qhasm: t0 = stack_FVGS3[1]
# asm 1: movq <stack_FVGS3=stack256#5,>t0=int64#3
# asm 2: movq <stack_FVGS3=136(%rsp),>t0=%rdx
movq 136(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: t2 = rdx
# asm 1: mov <rdx=int64#3,>t2=int64#4
# asm 2: mov <rdx=%rdx,>t2=%rcx
mov %rdx,%rcx
# qhasm: t1 = rax
# asm 1: mov <rax=int64#7,>t1=int64#5
# asm 2: mov <rax=%rax,>t1=%r8
mov %rax,%r8
# qhasm: rax = stack_FVGS2[3]
# asm 1: movq <stack_FVGS2=stack256#4,>rax=int64#7
# asm 2: movq <stack_FVGS2=120(%rsp),>rax=%rax
movq 120(%rsp),%rax
# qhasm: t0 = stack_FVGS3[3]
# asm 1: movq <stack_FVGS3=stack256#5,>t0=int64#3
# asm 2: movq <stack_FVGS3=152(%rsp),>t0=%rdx
movq 152(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? t1 += rax
# asm 1: add <rax=int64#7,<t1=int64#5
# asm 2: add <rax=%rax,<t1=%r8
add %rax,%r8
# qhasm: t2 += rdx + carry
# asm 1: adc <rdx=int64#3,<t2=int64#4
# asm 2: adc <rdx=%rdx,<t2=%rcx
adc %rdx,%rcx
# qhasm: a0 = t1
# asm 1: mov <t1=int64#5,>a0=int64#11
# asm 2: mov <t1=%r8,>a0=%r13
mov %r8,%r13
# qhasm: t1 = (t2 t1) >> 4
# asm 1: shrd $4,<t2=int64#4,<t1=int64#5
# asm 2: shrd $4,<t2=%rcx,<t1=%r8
shrd $4,%rcx,%r8
# qhasm: a0 <<= 60
# asm 1: shl $60,<a0=int64#11
# asm 2: shl $60,<a0=%r13
shl $60,%r13
# qhasm: h = t2
# asm 1: mov <t2=int64#4,>h=int64#3
# asm 2: mov <t2=%rcx,>h=%rdx
mov %rcx,%rdx
# qhasm: (int64) t2 >>= 4
# asm 1: sar $4,<t2=int64#4
# asm 2: sar $4,<t2=%rcx
sar $4,%rcx
# qhasm: (int64) h >>= 63
# asm 1: sar $63,<h=int64#3
# asm 2: sar $63,<h=%rdx
sar $63,%rdx
# qhasm: carry? a1 += t1
# asm 1: add <t1=int64#5,<a1=int64#10
# asm 2: add <t1=%r8,<a1=%r12
add %r8,%r12
# qhasm: carry? a2 += t2 + carry
# asm 1: adc <t2=int64#4,<a2=int64#6
# asm 2: adc <t2=%rcx,<a2=%r9
adc %rcx,%r9
# qhasm: carry? a3 += h + carry
# asm 1: adc <h=int64#3,<a3=int64#2
# asm 2: adc <h=%rdx,<a3=%rsi
adc %rdx,%rsi
# qhasm: a4 += h + carry
# asm 1: adc <h=int64#3,<a4=int64#1
# asm 2: adc <h=%rdx,<a4=%rdi
adc %rdx,%rdi
# qhasm: rax = stack_FVGS0[1]
# asm 1: movq <stack_FVGS0=stack256#2,>rax=int64#7
# asm 2: movq <stack_FVGS0=40(%rsp),>rax=%rax
movq 40(%rsp),%rax
# qhasm: t0 = stack_FVGS1[1]
# asm 1: movq <stack_FVGS1=stack256#3,>t0=int64#3
# asm 2: movq <stack_FVGS1=72(%rsp),>t0=%rdx
movq 72(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * u
# asm 1: imul <u=int64#8
# asm 2: imul <u=%r10
imul %r10
# qhasm: t2 = rdx
# asm 1: mov <rdx=int64#3,>t2=int64#4
# asm 2: mov <rdx=%rdx,>t2=%rcx
mov %rdx,%rcx
# qhasm: t1 = rax
# asm 1: mov <rax=int64#7,>t1=int64#5
# asm 2: mov <rax=%rax,>t1=%r8
mov %rax,%r8
# qhasm: rax = stack_FVGS0[3]
# asm 1: movq <stack_FVGS0=stack256#2,>rax=int64#7
# asm 2: movq <stack_FVGS0=56(%rsp),>rax=%rax
movq 56(%rsp),%rax
# qhasm: t0 = stack_FVGS1[3]
# asm 1: movq <stack_FVGS1=stack256#3,>t0=int64#3
# asm 2: movq <stack_FVGS1=88(%rsp),>t0=%rdx
movq 88(%rsp),%rdx
# qhasm: t0 <<= 30
# asm 1: shl $30,<t0=int64#3
# asm 2: shl $30,<t0=%rdx
shl $30,%rdx
# qhasm: rax += t0
# asm 1: add <t0=int64#3,<rax=int64#7
# asm 2: add <t0=%rdx,<rax=%rax
add %rdx,%rax
# qhasm: (int128) rdx rax = rax * v
# asm 1: imul <v=int64#9
# asm 2: imul <v=%r11
imul %r11
# qhasm: carry? t1 += rax
# asm 1: add <rax=int64#7,<t1=int64#5
# asm 2: add <rax=%rax,<t1=%r8
add %rax,%r8
# qhasm: t2 += rdx + carry
# asm 1: adc <rdx=int64#3,<t2=int64#4
# asm 2: adc <rdx=%rdx,<t2=%rcx
adc %rdx,%rcx
# qhasm: h = t2
# asm 1: mov <t2=int64#4,>h=int64#3
# asm 2: mov <t2=%rcx,>h=%rdx
mov %rcx,%rdx
# qhasm: (int64) h >>= 63
# asm 1: sar $63,<h=int64#3
# asm 2: sar $63,<h=%rdx
sar $63,%rdx
# qhasm: carry? a0 += t1
# asm 1: add <t1=int64#5,<a0=int64#11
# asm 2: add <t1=%r8,<a0=%r13
add %r8,%r13
# qhasm: carry? a1 += t2 + carry
# asm 1: adc <t2=int64#4,<a1=int64#10
# asm 2: adc <t2=%rcx,<a1=%r12
adc %rcx,%r12
# qhasm: carry? a2 += h + carry
# asm 1: adc <h=int64#3,<a2=int64#6
# asm 2: adc <h=%rdx,<a2=%r9
adc %rdx,%r9
# qhasm: carry? a3 += h + carry
# asm 1: adc <h=int64#3,<a3=int64#2
# asm 2: adc <h=%rdx,<a3=%rsi
adc %rdx,%rsi
# qhasm: a4 += h + carry
# asm 1: adc <h=int64#3,<a4=int64#1
# asm 2: adc <h=%rdx,<a4=%rdi
adc %rdx,%rdi
# qhasm: carry? a3 reset bit 63
# asm 1: btr $63,<a3=int64#2
# asm 2: btr $63,<a3=%rsi
btr $63,%rsi
# qhasm: a4 += a4 + carry
# asm 1: adc <a4=int64#1,<a4=int64#1
# asm 2: adc <a4=%rdi,<a4=%rdi
adc %rdi,%rdi
# qhasm: h = a4
# asm 1: mov <a4=int64#1,>h=int64#4
# asm 2: mov <a4=%rdi,>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 <a4=int64#1
# asm 2: imul <a4=%rdi
imul %rdi
# qhasm: (int64) h >>= 63
# asm 1: sar $63,<h=int64#4
# asm 2: sar $63,<h=%rcx
sar $63,%rcx
# qhasm: a4 = 0
# asm 1: xor >a4=int64#1,>a4=int64#1
# asm 2: xor >a4=%rdi,>a4=%rdi
xor %rdi,%rdi
# qhasm: carry? a0 += rax
# asm 1: add <rax=int64#7,<a0=int64#11
# asm 2: add <rax=%rax,<a0=%r13
add %rax,%r13
# qhasm: carry? a1 += rdx + carry
# asm 1: adc <rdx=int64#3,<a1=int64#10
# asm 2: adc <rdx=%rdx,<a1=%r12
adc %rdx,%r12
# qhasm: carry? a2 += h + carry
# asm 1: adc <h=int64#4,<a2=int64#6
# asm 2: adc <h=%rcx,<a2=%r9
adc %rcx,%r9
# qhasm: carry? a3 += h + carry
# asm 1: adc <h=int64#4,<a3=int64#2
# asm 2: adc <h=%rcx,<a3=%rsi
adc %rcx,%rsi
# qhasm: a4 += h + carry
# asm 1: adc <h=int64#4,<a4=int64#1
# asm 2: adc <h=%rcx,<a4=%rdi
adc %rcx,%rdi
# qhasm: carry? a3 reset bit 63
# asm 1: btr $63,<a3=int64#2
# asm 2: btr $63,<a3=%rsi
btr $63,%rsi
# qhasm: a4 += a4 + carry
# asm 1: adc <a4=int64#1,<a4=int64#1
# asm 2: adc <a4=%rdi,<a4=%rdi
adc %rdi,%rdi
# qhasm: h = a4
# asm 1: mov <a4=int64#1,>h=int64#4
# asm 2: mov <a4=%rdi,>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 <a4=int64#1
# asm 2: imul <a4=%rdi
imul %rdi
# qhasm: (int64) h >>= 63
# asm 1: sar $63,<h=int64#4
# asm 2: sar $63,<h=%rcx
sar $63,%rcx
# qhasm: carry? a0 += rax
# asm 1: add <rax=int64#7,<a0=int64#11
# asm 2: add <rax=%rax,<a0=%r13
add %rax,%r13
# qhasm: carry? a1 += rdx + carry
# asm 1: adc <rdx=int64#3,<a1=int64#10
# asm 2: adc <rdx=%rdx,<a1=%r12
adc %rdx,%r12
# qhasm: carry? a2 += h + carry
# asm 1: adc <h=int64#4,<a2=int64#6
# asm 2: adc <h=%rcx,<a2=%r9
adc %rcx,%r9
# qhasm: carry? a3 += h + carry
# asm 1: adc <h=int64#4,<a3=int64#2
# asm 2: adc <h=%rcx,<a3=%rsi
adc %rcx,%rsi
# qhasm: a4 += h + carry
# asm 1: adc <h=int64#4,<a4=int64#1
# asm 2: adc <h=%rcx,<a4=%rdi
adc %rcx,%rdi
# qhasm: z = 0
# asm 1: xor >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: signed<? a3 - 0
# asm 1: cmp $0,<a3=int64#2
# asm 2: cmp $0,<a3=%rsi
cmp $0,%rsi
# qhasm: a4 = z if !signed<
# asm 1: cmovge <z=int64#1,<a4=int64#3
# asm 2: cmovge <z=%rdi,<a4=%rdx
cmovge %rdi,%rdx
# qhasm: a5 = z if !signed<
# asm 1: cmovge <z=int64#1,<a5=int64#4
# asm 2: cmovge <z=%rdi,<a5=%rcx
cmovge %rdi,%rcx
# qhasm: a6 = z if !signed<
# asm 1: cmovge <z=int64#1,<a6=int64#5
# asm 2: cmovge <z=%rdi,<a6=%r8
cmovge %rdi,%r8
# qhasm: carry? a0 += a4
# asm 1: add <a4=int64#3,<a0=int64#11
# asm 2: add <a4=%rdx,<a0=%r13
add %rdx,%r13
# qhasm: carry? a1 += a5 + carry
# asm 1: adc <a5=int64#4,<a1=int64#10
# asm 2: adc <a5=%rcx,<a1=%r12
adc %rcx,%r12
# qhasm: carry? a2 += a5 + carry
# asm 1: adc <a5=int64#4,<a2=int64#6
# asm 2: adc <a5=%rcx,<a2=%r9
adc %rcx,%r9
# qhasm: a3 += a6 + carry
# asm 1: adc <a6=int64#5,<a3=int64#2
# asm 2: adc <a6=%r8,<a3=%rsi
adc %r8,%rsi
# qhasm: carry? a0 += 19
# asm 1: add $19,<a0=int64#11
# asm 2: add $19,<a0=%r13
add $19,%r13
# qhasm: carry? a1 += 0 + carry
# asm 1: adc $0,<a1=int64#10
# asm 2: adc $0,<a1=%r12
adc $0,%r12
# qhasm: carry? a2 += 0 + carry
# asm 1: adc $0,<a2=int64#6
# asm 2: adc $0,<a2=%r9
adc $0,%r9
# qhasm: a3 += 0 + carry
# asm 1: adc $0,<a3=int64#2
# asm 2: adc $0,<a3=%rsi
adc $0,%rsi
# qhasm: t0 = a3
# asm 1: mov <a3=int64#2,>t0=int64#1
# asm 2: mov <a3=%rsi,>t0=%rdi
mov %rsi,%rdi
# qhasm: (int64) t0 >>= 63
# asm 1: sar $63,<t0=int64#1
# asm 2: sar $63,<t0=%rdi
sar $63,%rdi
# qhasm: a3 reset bit 63
# asm 1: btr $63,<a3=int64#2
# asm 2: btr $63,<a3=%rsi
btr $63,%rsi
# qhasm: t0 &= 19
# asm 1: and $19,<t0=int64#1
# asm 2: and $19,<t0=%rdi
and $19,%rdi
# qhasm: carry? a0 += t0
# asm 1: add <t0=int64#1,<a0=int64#11
# asm 2: add <t0=%rdi,<a0=%r13
add %rdi,%r13
# qhasm: carry? a1 += 0 + carry
# asm 1: adc $0,<a1=int64#10
# asm 2: adc $0,<a1=%r12
adc $0,%r12
# qhasm: carry? a2 += 0 + carry
# asm 1: adc $0,<a2=int64#6
# asm 2: adc $0,<a2=%r9
adc $0,%r9
# qhasm: a3 += 0 + carry
# asm 1: adc $0,<a3=int64#2
# asm 2: adc $0,<a3=%rsi
adc $0,%rsi
# qhasm: carry? a0 -= 19
# asm 1: sub $19,<a0=int64#11
# asm 2: sub $19,<a0=%r13
sub $19,%r13
# qhasm: carry? a1 -= 0 - carry
# asm 1: sbb $0,<a1=int64#10
# asm 2: sbb $0,<a1=%r12
sbb $0,%r12
# qhasm: carry? a2 -= 0 - carry
# asm 1: sbb $0,<a2=int64#6
# asm 2: sbb $0,<a2=%r9
sbb $0,%r9
# qhasm: a3 -= 0 - carry
# asm 1: sbb $0,<a3=int64#2
# asm 2: sbb $0,<a3=%rsi
sbb $0,%rsi
# qhasm: t2 = stack_out
# asm 1: movq <stack_out=stack64#1,>t2=int64#1
# asm 2: movq <stack_out=704(%rsp),>t2=%rdi
movq 704(%rsp),%rdi
# qhasm: mem64[t2 + 0] = a0
# asm 1: movq <a0=int64#11,0(<t2=int64#1)
# asm 2: movq <a0=%r13,0(<t2=%rdi)
movq %r13,0(%rdi)
# qhasm: mem64[t2 + 8] = a1
# asm 1: movq <a1=int64#10,8(<t2=int64#1)
# asm 2: movq <a1=%r12,8(<t2=%rdi)
movq %r12,8(%rdi)
# qhasm: mem64[t2 + 16] = a2
# asm 1: movq <a2=int64#6,16(<t2=int64#1)
# asm 2: movq <a2=%r9,16(<t2=%rdi)
movq %r9,16(%rdi)
# qhasm: mem64[t2 + 24] = a3
# asm 1: movq <a3=int64#2,24(<t2=int64#1)
# asm 2: movq <a3=%rsi,24(<t2=%rdi)
movq %rsi,24(%rdi)
# qhasm: caller_r11 = stack_r11
# asm 1: movq <stack_r11=stack64#2,>caller_r11=int64#9
# asm 2: movq <stack_r11=712(%rsp),>caller_r11=%r11
movq 712(%rsp),%r11
# qhasm: caller_r12 = stack_r12
# asm 1: movq <stack_r12=stack64#3,>caller_r12=int64#10
# asm 2: movq <stack_r12=720(%rsp),>caller_r12=%r12
movq 720(%rsp),%r12
# qhasm: caller_r13 = stack_r13
# asm 1: movq <stack_r13=stack64#4,>caller_r13=int64#11
# asm 2: movq <stack_r13=728(%rsp),>caller_r13=%r13
movq 728(%rsp),%r13
# qhasm: caller_r14 = stack_r14
# asm 1: movq <stack_r14=stack64#5,>caller_r14=int64#12
# asm 2: movq <stack_r14=736(%rsp),>caller_r14=%r14
movq 736(%rsp),%r14
# qhasm: caller_r15 = stack_r15
# asm 1: movq <stack_r15=stack64#6,>caller_r15=int64#13
# asm 2: movq <stack_r15=744(%rsp),>caller_r15=%r15
movq 744(%rsp),%r15
# qhasm: caller_rbx = stack_rbx
# asm 1: movq <stack_rbx=stack64#7,>caller_rbx=int64#14
# asm 2: movq <stack_rbx=752(%rsp),>caller_rbx=%rbx
movq 752(%rsp),%rbx
# qhasm: caller_rbp = stack_rbp
# asm 1: movq <stack_rbp=stack64#8,>caller_rbp=int64#15
# asm 2: movq <stack_rbp=760(%rsp),>caller_rbp=%rbp
movq 760(%rsp),%rbp
# qhasm: return
add %r11,%rsp
ret
.section .note.GNU-stack,"",@progbits