use core::arch::asm;
use core::mem::MaybeUninit;
#[inline]
pub unsafe fn fmul_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 48]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 56]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 64]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 72]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 80]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 88]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 136], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 136]",
"mov qword ptr [{s} + 96], {w6}",
"mov qword ptr [{s} + 104], {w7}",
"mov qword ptr [{s} + 112], {w0}",
"mov qword ptr [{s} + 120], {w1}",
"mov qword ptr [{s} + 128], {w2}",
"mov qword ptr [{s} + 136], {w3}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const FMUL_OUT: usize = 2;
#[inline]
pub unsafe fn fsqr_adx(buf: &mut [MaybeUninit<u64>; 18]) {
unsafe {
asm!(
".p2align 6",
"mov rdx, qword ptr [{s}]",
"mulx {w2}, {w1}, qword ptr [{s} + 8]",
"mulx {w3}, rax, qword ptr [{s} + 16]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 24]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 32]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 40]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 8]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 16]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 24]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 40]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 32]",
"mulx {k}, rax, qword ptr [{s} + 40]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 128], {k}",
"mov qword ptr [{s} + 136], rax",
"mov rdx, qword ptr [{s}]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 8]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 16]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 24]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 32]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 40]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 128], rax",
"adc qword ptr [{s} + 136], rdx",
"mov qword ptr [{s} + 96], {w6}",
"mov qword ptr [{s} + 104], {w7}",
"mov qword ptr [{s} + 112], {c}",
"mov qword ptr [{s} + 120], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 96]",
"adc {w1}, qword ptr [{s} + 104]",
"adc {w2}, qword ptr [{s} + 112]",
"adc {w3}, qword ptr [{s} + 120]",
"adc {w4}, qword ptr [{s} + 128]",
"adc {w5}, qword ptr [{s} + 136]",
"adc {w7}, 0",
"mov qword ptr [{s} + 88], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 88]",
"mov qword ptr [{s} + 48], {k}",
"mov qword ptr [{s} + 56], {w1}",
"mov qword ptr [{s} + 64], {w2}",
"mov qword ptr [{s} + 72], {w3}",
"mov qword ptr [{s} + 80], {w4}",
"mov qword ptr [{s} + 88], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const FSQR_OUT: usize = 1;
#[cfg(test)]
#[inline(never)]
pub unsafe fn fadd_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"add {w0}, qword ptr [{s} + 48]",
"adc {w1}, qword ptr [{s} + 56]",
"adc {w2}, qword ptr [{s} + 64]",
"adc {w3}, qword ptr [{s} + 72]",
"adc {w4}, qword ptr [{s} + 80]",
"adc {w5}, qword ptr [{s} + 88]",
"adc {w6}, 0",
"mov qword ptr [{s} + 136], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 136]",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[cfg(test)]
#[allow(dead_code)]
pub const FADD_OUT: usize = 2;
#[cfg(test)]
#[inline(never)]
pub unsafe fn fsub_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"sub {w0}, qword ptr [{s} + 48]",
"sbb {w1}, qword ptr [{s} + 56]",
"sbb {w2}, qword ptr [{s} + 64]",
"sbb {w3}, qword ptr [{s} + 72]",
"sbb {w4}, qword ptr [{s} + 80]",
"sbb {w5}, qword ptr [{s} + 88]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
c = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[cfg(test)]
#[allow(dead_code)]
pub const FSUB_OUT: usize = 2;
#[cfg(test)]
#[inline(never)]
pub unsafe fn fcms_3_8_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 48]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 56]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 64]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 72]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 80]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 88]",
"mov {w6}, {w5}",
"shr {w6}, 61",
"shld {w5}, {w4}, 3",
"shld {w4}, {w3}, 3",
"shld {w3}, {w2}, 3",
"shld {w2}, {w1}, 3",
"shld {w1}, {w0}, 3",
"shl {w0}, 3",
"mov edx, 3",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[cfg(test)]
#[allow(dead_code)]
pub const FCMS_3_8_OUT: usize = 2;
#[cfg(test)]
#[inline(never)]
pub unsafe fn fcms_4_1_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 48]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 56]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 64]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 72]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 80]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 88]",
"xor {w6:e}, {w6:e}",
"mov edx, 4",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[cfg(test)]
#[allow(dead_code)]
pub const FCMS_4_1_OUT: usize = 2;
#[cfg(test)]
#[inline(never)]
pub unsafe fn fcms_12_9_adx(buf: &mut [MaybeUninit<u64>; 24]) {
unsafe {
asm!(
".p2align 6",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 48]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 56]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 64]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 72]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 80]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 88]",
"mov edx, 9",
"mulx {w7}, {w0}, {w0}",
"mulx {c}, {w1}, {w1}",
"add {w1}, {w7}",
"mulx {w7}, {w2}, {w2}",
"adc {w2}, {c}",
"mulx {c}, {w3}, {w3}",
"adc {w3}, {w7}",
"mulx {w7}, {w4}, {w4}",
"adc {w4}, {c}",
"mulx {w6}, {w5}, {w5}",
"adc {w5}, {w7}",
"adc {w6}, 0",
"mov edx, 12",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[cfg(test)]
#[allow(dead_code)]
pub const FCMS_12_9_OUT: usize = 2;
#[inline(never)]
pub unsafe fn double_adx(buf: &mut [MaybeUninit<u64>; 96]) {
unsafe {
asm!(
".p2align 6",
"mov rdx, qword ptr [{s} + 96]",
"mulx {w2}, {w1}, qword ptr [{s} + 104]",
"mulx {w3}, rax, qword ptr [{s} + 112]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 120]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 128]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 136]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 112]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 112]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 120]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 128]",
"mulx {k}, rax, qword ptr [{s} + 136]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 752], {k}",
"mov qword ptr [{s} + 760], rax",
"mov rdx, qword ptr [{s} + 96]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 104]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 112]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 120]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 128]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 136]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 752], rax",
"adc qword ptr [{s} + 760], rdx",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {c}",
"mov qword ptr [{s} + 744], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 720]",
"adc {w1}, qword ptr [{s} + 728]",
"adc {w2}, qword ptr [{s} + 736]",
"adc {w3}, qword ptr [{s} + 744]",
"adc {w4}, qword ptr [{s} + 752]",
"adc {w5}, qword ptr [{s} + 760]",
"adc {w7}, 0",
"mov qword ptr [{s} + 328], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 328]",
"mov qword ptr [{s} + 288], {k}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
"mov rdx, qword ptr [{s} + 48]",
"mulx {w2}, {w1}, qword ptr [{s} + 56]",
"mulx {w3}, rax, qword ptr [{s} + 64]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 72]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 80]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 88]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 56]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 64]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 72]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 64]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 72]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 72]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 80]",
"mulx {k}, rax, qword ptr [{s} + 88]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 752], {k}",
"mov qword ptr [{s} + 760], rax",
"mov rdx, qword ptr [{s} + 48]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 56]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 64]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 72]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 80]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 88]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 752], rax",
"adc qword ptr [{s} + 760], rdx",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {c}",
"mov qword ptr [{s} + 744], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 720]",
"adc {w1}, qword ptr [{s} + 728]",
"adc {w2}, qword ptr [{s} + 736]",
"adc {w3}, qword ptr [{s} + 744]",
"adc {w4}, qword ptr [{s} + 752]",
"adc {w5}, qword ptr [{s} + 760]",
"adc {w7}, 0",
"mov qword ptr [{s} + 376], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {k}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"sub {w0}, qword ptr [{s} + 288]",
"sbb {w1}, qword ptr [{s} + 296]",
"sbb {w2}, qword ptr [{s} + 304]",
"sbb {w3}, qword ptr [{s} + 312]",
"sbb {w4}, qword ptr [{s} + 320]",
"sbb {w5}, qword ptr [{s} + 328]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 432], {w0}",
"mov qword ptr [{s} + 440], {w1}",
"mov qword ptr [{s} + 448], {w2}",
"mov qword ptr [{s} + 456], {w3}",
"mov qword ptr [{s} + 464], {w4}",
"mov qword ptr [{s} + 472], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"add {w0}, qword ptr [{s} + 288]",
"adc {w1}, qword ptr [{s} + 296]",
"adc {w2}, qword ptr [{s} + 304]",
"adc {w3}, qword ptr [{s} + 312]",
"adc {w4}, qword ptr [{s} + 320]",
"adc {w5}, qword ptr [{s} + 328]",
"adc {w6}, 0",
"mov qword ptr [{s} + 520], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {w0}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 480]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 488]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 496]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 504]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 512]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 520]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 472], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 472]",
"mov qword ptr [{s} + 432], {w6}",
"mov qword ptr [{s} + 440], {w7}",
"mov qword ptr [{s} + 448], {w0}",
"mov qword ptr [{s} + 456], {w1}",
"mov qword ptr [{s} + 464], {w2}",
"mov qword ptr [{s} + 472], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 336]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 344]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 352]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 360]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 368]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 376]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 424], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 424]",
"mov qword ptr [{s} + 384], {w6}",
"mov qword ptr [{s} + 392], {w7}",
"mov qword ptr [{s} + 400], {w0}",
"mov qword ptr [{s} + 408], {w1}",
"mov qword ptr [{s} + 416], {w2}",
"mov qword ptr [{s} + 424], {w3}",
"mov rdx, qword ptr [{s} + 432]",
"mulx {w2}, {w1}, qword ptr [{s} + 440]",
"mulx {w3}, rax, qword ptr [{s} + 448]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 456]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 464]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 472]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 440]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 448]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 456]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 464]",
"mulx {k}, rax, qword ptr [{s} + 472]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 752], {k}",
"mov qword ptr [{s} + 760], rax",
"mov rdx, qword ptr [{s} + 432]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 440]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 448]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 456]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 464]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 472]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 752], rax",
"adc qword ptr [{s} + 760], rdx",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {c}",
"mov qword ptr [{s} + 744], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 720]",
"adc {w1}, qword ptr [{s} + 728]",
"adc {w2}, qword ptr [{s} + 736]",
"adc {w3}, qword ptr [{s} + 744]",
"adc {w4}, qword ptr [{s} + 752]",
"adc {w5}, qword ptr [{s} + 760]",
"adc {w7}, 0",
"mov qword ptr [{s} + 568], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 568]",
"mov qword ptr [{s} + 528], {k}",
"mov qword ptr [{s} + 536], {w1}",
"mov qword ptr [{s} + 544], {w2}",
"mov qword ptr [{s} + 552], {w3}",
"mov qword ptr [{s} + 560], {w4}",
"mov qword ptr [{s} + 568], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 48]",
"mov {w1}, qword ptr [{s} + 56]",
"mov {w2}, qword ptr [{s} + 64]",
"mov {w3}, qword ptr [{s} + 72]",
"mov {w4}, qword ptr [{s} + 80]",
"mov {w5}, qword ptr [{s} + 88]",
"add {w0}, qword ptr [{s} + 96]",
"adc {w1}, qword ptr [{s} + 104]",
"adc {w2}, qword ptr [{s} + 112]",
"adc {w3}, qword ptr [{s} + 120]",
"adc {w4}, qword ptr [{s} + 128]",
"adc {w5}, qword ptr [{s} + 136]",
"adc {w6}, 0",
"mov qword ptr [{s} + 664], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 664]",
"mov qword ptr [{s} + 624], {w0}",
"mov qword ptr [{s} + 632], {w1}",
"mov qword ptr [{s} + 640], {w2}",
"mov qword ptr [{s} + 648], {w3}",
"mov qword ptr [{s} + 656], {w4}",
"mov qword ptr [{s} + 664], {w5}",
"mov rdx, qword ptr [{s} + 624]",
"mulx {w2}, {w1}, qword ptr [{s} + 632]",
"mulx {w3}, rax, qword ptr [{s} + 640]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 648]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 656]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 664]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 632]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 640]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 648]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 656]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 664]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 640]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 648]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 656]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 664]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 648]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 656]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 664]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 656]",
"mulx {k}, rax, qword ptr [{s} + 664]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 752], {k}",
"mov qword ptr [{s} + 760], rax",
"mov rdx, qword ptr [{s} + 624]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 632]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 640]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 648]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 656]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 664]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 752], rax",
"adc qword ptr [{s} + 760], rdx",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {c}",
"mov qword ptr [{s} + 744], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 720]",
"adc {w1}, qword ptr [{s} + 728]",
"adc {w2}, qword ptr [{s} + 736]",
"adc {w3}, qword ptr [{s} + 744]",
"adc {w4}, qword ptr [{s} + 752]",
"adc {w5}, qword ptr [{s} + 760]",
"adc {w7}, 0",
"mov qword ptr [{s} + 664], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 664]",
"mov qword ptr [{s} + 624], {k}",
"mov qword ptr [{s} + 632], {w1}",
"mov qword ptr [{s} + 640], {w2}",
"mov qword ptr [{s} + 648], {w3}",
"mov qword ptr [{s} + 656], {w4}",
"mov qword ptr [{s} + 664], {w5}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 528]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 536]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 544]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 552]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 560]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 568]",
"mov edx, 9",
"mulx {w7}, {w0}, {w0}",
"mulx {c}, {w1}, {w1}",
"add {w1}, {w7}",
"mulx {w7}, {w2}, {w2}",
"adc {w2}, {c}",
"mulx {c}, {w3}, {w3}",
"adc {w3}, {w7}",
"mulx {w7}, {w4}, {w4}",
"adc {w4}, {c}",
"mulx {w6}, {w5}, {w5}",
"adc {w5}, {w7}",
"adc {w6}, 0",
"mov edx, 12",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 384]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 392]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 400]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 408]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 416]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 424]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 576], {w0}",
"mov qword ptr [{s} + 584], {w1}",
"mov qword ptr [{s} + 592], {w2}",
"mov qword ptr [{s} + 600], {w3}",
"mov qword ptr [{s} + 608], {w4}",
"mov qword ptr [{s} + 616], {w5}",
"mov rdx, qword ptr [{s} + 336]",
"mulx {w2}, {w1}, qword ptr [{s} + 344]",
"mulx {w3}, rax, qword ptr [{s} + 352]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 360]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 368]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 376]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 344]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 352]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 360]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 352]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 360]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 360]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 368]",
"mulx {k}, rax, qword ptr [{s} + 376]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 752], {k}",
"mov qword ptr [{s} + 760], rax",
"mov rdx, qword ptr [{s} + 336]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 344]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 352]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 360]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 368]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 376]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 752], rax",
"adc qword ptr [{s} + 760], rdx",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {c}",
"mov qword ptr [{s} + 744], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 720]",
"adc {w1}, qword ptr [{s} + 728]",
"adc {w2}, qword ptr [{s} + 736]",
"adc {w3}, qword ptr [{s} + 744]",
"adc {w4}, qword ptr [{s} + 752]",
"adc {w5}, qword ptr [{s} + 760]",
"adc {w7}, 0",
"mov qword ptr [{s} + 712], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 712]",
"mov qword ptr [{s} + 672], {k}",
"mov qword ptr [{s} + 680], {w1}",
"mov qword ptr [{s} + 688], {w2}",
"mov qword ptr [{s} + 696], {w3}",
"mov qword ptr [{s} + 704], {w4}",
"mov qword ptr [{s} + 712], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 432]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 440]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 448]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 456]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 464]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 472]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 576]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 584]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 592]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 600]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 608]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 616]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 520], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {w6}",
"mov qword ptr [{s} + 488], {w7}",
"mov qword ptr [{s} + 496], {w0}",
"mov qword ptr [{s} + 504], {w1}",
"mov qword ptr [{s} + 512], {w2}",
"mov qword ptr [{s} + 520], {w3}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 576]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 584]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 592]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 600]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 608]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 616]",
"xor {w6:e}, {w6:e}",
"mov edx, 4",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 384]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 392]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 400]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 408]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 416]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 424]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 144], {w0}",
"mov qword ptr [{s} + 152], {w1}",
"mov qword ptr [{s} + 160], {w2}",
"mov qword ptr [{s} + 168], {w3}",
"mov qword ptr [{s} + 176], {w4}",
"mov qword ptr [{s} + 184], {w5}",
"mov {w0}, qword ptr [{s} + 624]",
"mov {w1}, qword ptr [{s} + 632]",
"mov {w2}, qword ptr [{s} + 640]",
"mov {w3}, qword ptr [{s} + 648]",
"mov {w4}, qword ptr [{s} + 656]",
"mov {w5}, qword ptr [{s} + 664]",
"sub {w0}, qword ptr [{s} + 336]",
"sbb {w1}, qword ptr [{s} + 344]",
"sbb {w2}, qword ptr [{s} + 352]",
"sbb {w3}, qword ptr [{s} + 360]",
"sbb {w4}, qword ptr [{s} + 368]",
"sbb {w5}, qword ptr [{s} + 376]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 624], {w0}",
"mov qword ptr [{s} + 632], {w1}",
"mov qword ptr [{s} + 640], {w2}",
"mov qword ptr [{s} + 648], {w3}",
"mov qword ptr [{s} + 656], {w4}",
"mov qword ptr [{s} + 664], {w5}",
"mov {w0}, qword ptr [{s} + 624]",
"mov {w1}, qword ptr [{s} + 632]",
"mov {w2}, qword ptr [{s} + 640]",
"mov {w3}, qword ptr [{s} + 648]",
"mov {w4}, qword ptr [{s} + 656]",
"mov {w5}, qword ptr [{s} + 664]",
"sub {w0}, qword ptr [{s} + 288]",
"sbb {w1}, qword ptr [{s} + 296]",
"sbb {w2}, qword ptr [{s} + 304]",
"sbb {w3}, qword ptr [{s} + 312]",
"sbb {w4}, qword ptr [{s} + 320]",
"sbb {w5}, qword ptr [{s} + 328]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 240], {w0}",
"mov qword ptr [{s} + 248], {w1}",
"mov qword ptr [{s} + 256], {w2}",
"mov qword ptr [{s} + 264], {w3}",
"mov qword ptr [{s} + 272], {w4}",
"mov qword ptr [{s} + 280], {w5}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 672]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 680]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 688]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 696]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 704]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 712]",
"mov {w6}, {w5}",
"shr {w6}, 61",
"shld {w5}, {w4}, 3",
"shld {w4}, {w3}, 3",
"shld {w3}, {w2}, 3",
"shld {w2}, {w1}, 3",
"shld {w1}, {w0}, 3",
"shl {w0}, 3",
"mov edx, 3",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 480]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 488]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 496]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 504]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 512]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 520]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 192], {w0}",
"mov qword ptr [{s} + 200], {w1}",
"mov qword ptr [{s} + 208], {w2}",
"mov qword ptr [{s} + 216], {w3}",
"mov qword ptr [{s} + 224], {w4}",
"mov qword ptr [{s} + 232], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const DOUBLE_X3: usize = 3;
#[allow(dead_code)]
pub const DOUBLE_Y3: usize = 4;
#[allow(dead_code)]
pub const DOUBLE_Z3: usize = 5;
#[inline(never)]
pub unsafe fn double_in_place_adx(buf: &mut [MaybeUninit<u64>; 78]) {
unsafe {
asm!(
".p2align 6",
"mov rdx, qword ptr [{s} + 96]",
"mulx {w2}, {w1}, qword ptr [{s} + 104]",
"mulx {w3}, rax, qword ptr [{s} + 112]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 120]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 128]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 136]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 112]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 112]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 120]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 128]",
"mulx {k}, rax, qword ptr [{s} + 136]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 608], {k}",
"mov qword ptr [{s} + 616], rax",
"mov rdx, qword ptr [{s} + 96]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 104]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 112]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 120]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 128]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 136]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 608], rax",
"adc qword ptr [{s} + 616], rdx",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {c}",
"mov qword ptr [{s} + 600], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 576]",
"adc {w1}, qword ptr [{s} + 584]",
"adc {w2}, qword ptr [{s} + 592]",
"adc {w3}, qword ptr [{s} + 600]",
"adc {w4}, qword ptr [{s} + 608]",
"adc {w5}, qword ptr [{s} + 616]",
"adc {w7}, 0",
"mov qword ptr [{s} + 184], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 184]",
"mov qword ptr [{s} + 144], {k}",
"mov qword ptr [{s} + 152], {w1}",
"mov qword ptr [{s} + 160], {w2}",
"mov qword ptr [{s} + 168], {w3}",
"mov qword ptr [{s} + 176], {w4}",
"mov qword ptr [{s} + 184], {w5}",
"mov rdx, qword ptr [{s} + 48]",
"mulx {w2}, {w1}, qword ptr [{s} + 56]",
"mulx {w3}, rax, qword ptr [{s} + 64]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 72]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 80]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 88]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 56]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 64]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 72]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 64]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 72]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 72]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 80]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 88]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 80]",
"mulx {k}, rax, qword ptr [{s} + 88]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 608], {k}",
"mov qword ptr [{s} + 616], rax",
"mov rdx, qword ptr [{s} + 48]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 56]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 64]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 72]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 80]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 88]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 608], rax",
"adc qword ptr [{s} + 616], rdx",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {c}",
"mov qword ptr [{s} + 600], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 576]",
"adc {w1}, qword ptr [{s} + 584]",
"adc {w2}, qword ptr [{s} + 592]",
"adc {w3}, qword ptr [{s} + 600]",
"adc {w4}, qword ptr [{s} + 608]",
"adc {w5}, qword ptr [{s} + 616]",
"adc {w7}, 0",
"mov qword ptr [{s} + 232], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 232]",
"mov qword ptr [{s} + 192], {k}",
"mov qword ptr [{s} + 200], {w1}",
"mov qword ptr [{s} + 208], {w2}",
"mov qword ptr [{s} + 216], {w3}",
"mov qword ptr [{s} + 224], {w4}",
"mov qword ptr [{s} + 232], {w5}",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"sub {w0}, qword ptr [{s} + 144]",
"sbb {w1}, qword ptr [{s} + 152]",
"sbb {w2}, qword ptr [{s} + 160]",
"sbb {w3}, qword ptr [{s} + 168]",
"sbb {w4}, qword ptr [{s} + 176]",
"sbb {w5}, qword ptr [{s} + 184]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 288], {w0}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s}]",
"mov {w1}, qword ptr [{s} + 8]",
"mov {w2}, qword ptr [{s} + 16]",
"mov {w3}, qword ptr [{s} + 24]",
"mov {w4}, qword ptr [{s} + 32]",
"mov {w5}, qword ptr [{s} + 40]",
"add {w0}, qword ptr [{s} + 144]",
"adc {w1}, qword ptr [{s} + 152]",
"adc {w2}, qword ptr [{s} + 160]",
"adc {w3}, qword ptr [{s} + 168]",
"adc {w4}, qword ptr [{s} + 176]",
"adc {w5}, qword ptr [{s} + 184]",
"adc {w6}, 0",
"mov qword ptr [{s} + 376], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {w0}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 336]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 344]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 352]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 360]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 368]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 376]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 288]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 296]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 304]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 312]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 320]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 328]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 328], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 328]",
"mov qword ptr [{s} + 288], {w6}",
"mov qword ptr [{s} + 296], {w7}",
"mov qword ptr [{s} + 304], {w0}",
"mov qword ptr [{s} + 312], {w1}",
"mov qword ptr [{s} + 320], {w2}",
"mov qword ptr [{s} + 328], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 192]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 200]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 208]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 216]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 224]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 232]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 280], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 280]",
"mov qword ptr [{s} + 240], {w6}",
"mov qword ptr [{s} + 248], {w7}",
"mov qword ptr [{s} + 256], {w0}",
"mov qword ptr [{s} + 264], {w1}",
"mov qword ptr [{s} + 272], {w2}",
"mov qword ptr [{s} + 280], {w3}",
"mov rdx, qword ptr [{s} + 288]",
"mulx {w2}, {w1}, qword ptr [{s} + 296]",
"mulx {w3}, rax, qword ptr [{s} + 304]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 312]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 320]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 328]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 296]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 304]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 312]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 320]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 328]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 304]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 312]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 320]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 328]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 312]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 320]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 328]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 320]",
"mulx {k}, rax, qword ptr [{s} + 328]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 608], {k}",
"mov qword ptr [{s} + 616], rax",
"mov rdx, qword ptr [{s} + 288]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 296]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 304]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 312]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 320]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 328]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 608], rax",
"adc qword ptr [{s} + 616], rdx",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {c}",
"mov qword ptr [{s} + 600], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 576]",
"adc {w1}, qword ptr [{s} + 584]",
"adc {w2}, qword ptr [{s} + 592]",
"adc {w3}, qword ptr [{s} + 600]",
"adc {w4}, qword ptr [{s} + 608]",
"adc {w5}, qword ptr [{s} + 616]",
"adc {w7}, 0",
"mov qword ptr [{s} + 424], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 424]",
"mov qword ptr [{s} + 384], {k}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 48]",
"mov {w1}, qword ptr [{s} + 56]",
"mov {w2}, qword ptr [{s} + 64]",
"mov {w3}, qword ptr [{s} + 72]",
"mov {w4}, qword ptr [{s} + 80]",
"mov {w5}, qword ptr [{s} + 88]",
"add {w0}, qword ptr [{s} + 96]",
"adc {w1}, qword ptr [{s} + 104]",
"adc {w2}, qword ptr [{s} + 112]",
"adc {w3}, qword ptr [{s} + 120]",
"adc {w4}, qword ptr [{s} + 128]",
"adc {w5}, qword ptr [{s} + 136]",
"adc {w6}, 0",
"mov qword ptr [{s} + 520], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {w0}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"mov rdx, qword ptr [{s} + 480]",
"mulx {w2}, {w1}, qword ptr [{s} + 488]",
"mulx {w3}, rax, qword ptr [{s} + 496]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 504]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 512]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 520]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 488]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 496]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 504]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 496]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 504]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 504]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 512]",
"mulx {k}, rax, qword ptr [{s} + 520]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 608], {k}",
"mov qword ptr [{s} + 616], rax",
"mov rdx, qword ptr [{s} + 480]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 488]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 496]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 504]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 512]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 520]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 608], rax",
"adc qword ptr [{s} + 616], rdx",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {c}",
"mov qword ptr [{s} + 600], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 576]",
"adc {w1}, qword ptr [{s} + 584]",
"adc {w2}, qword ptr [{s} + 592]",
"adc {w3}, qword ptr [{s} + 600]",
"adc {w4}, qword ptr [{s} + 608]",
"adc {w5}, qword ptr [{s} + 616]",
"adc {w7}, 0",
"mov qword ptr [{s} + 520], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {k}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 384]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 392]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 400]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 408]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 416]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 424]",
"mov edx, 9",
"mulx {w7}, {w0}, {w0}",
"mulx {c}, {w1}, {w1}",
"add {w1}, {w7}",
"mulx {w7}, {w2}, {w2}",
"adc {w2}, {c}",
"mulx {c}, {w3}, {w3}",
"adc {w3}, {w7}",
"mulx {w7}, {w4}, {w4}",
"adc {w4}, {c}",
"mulx {w6}, {w5}, {w5}",
"adc {w5}, {w7}",
"adc {w6}, 0",
"mov edx, 12",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 240]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 248]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 256]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 264]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 272]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 280]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 432], {w0}",
"mov qword ptr [{s} + 440], {w1}",
"mov qword ptr [{s} + 448], {w2}",
"mov qword ptr [{s} + 456], {w3}",
"mov qword ptr [{s} + 464], {w4}",
"mov qword ptr [{s} + 472], {w5}",
"mov rdx, qword ptr [{s} + 192]",
"mulx {w2}, {w1}, qword ptr [{s} + 200]",
"mulx {w3}, rax, qword ptr [{s} + 208]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 216]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 224]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 232]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 200]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 208]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 216]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 224]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 232]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 208]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 216]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 224]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 232]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 216]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 224]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 232]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 224]",
"mulx {k}, rax, qword ptr [{s} + 232]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 608], {k}",
"mov qword ptr [{s} + 616], rax",
"mov rdx, qword ptr [{s} + 192]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 200]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 208]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 216]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 224]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 232]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 608], rax",
"adc qword ptr [{s} + 616], rdx",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {c}",
"mov qword ptr [{s} + 600], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 576]",
"adc {w1}, qword ptr [{s} + 584]",
"adc {w2}, qword ptr [{s} + 592]",
"adc {w3}, qword ptr [{s} + 600]",
"adc {w4}, qword ptr [{s} + 608]",
"adc {w5}, qword ptr [{s} + 616]",
"adc {w7}, 0",
"mov qword ptr [{s} + 568], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 568]",
"mov qword ptr [{s} + 528], {k}",
"mov qword ptr [{s} + 536], {w1}",
"mov qword ptr [{s} + 544], {w2}",
"mov qword ptr [{s} + 552], {w3}",
"mov qword ptr [{s} + 560], {w4}",
"mov qword ptr [{s} + 568], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 288]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 296]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 304]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 312]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 320]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 328]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 376], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {w6}",
"mov qword ptr [{s} + 344], {w7}",
"mov qword ptr [{s} + 352], {w0}",
"mov qword ptr [{s} + 360], {w1}",
"mov qword ptr [{s} + 368], {w2}",
"mov qword ptr [{s} + 376], {w3}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 432]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 440]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 448]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 456]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 464]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 472]",
"xor {w6:e}, {w6:e}",
"mov edx, 4",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 240]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 248]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 256]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 264]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 272]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 280]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s}], {w0}",
"mov qword ptr [{s} + 8], {w1}",
"mov qword ptr [{s} + 16], {w2}",
"mov qword ptr [{s} + 24], {w3}",
"mov qword ptr [{s} + 32], {w4}",
"mov qword ptr [{s} + 40], {w5}",
"mov {w0}, qword ptr [{s} + 480]",
"mov {w1}, qword ptr [{s} + 488]",
"mov {w2}, qword ptr [{s} + 496]",
"mov {w3}, qword ptr [{s} + 504]",
"mov {w4}, qword ptr [{s} + 512]",
"mov {w5}, qword ptr [{s} + 520]",
"sub {w0}, qword ptr [{s} + 192]",
"sbb {w1}, qword ptr [{s} + 200]",
"sbb {w2}, qword ptr [{s} + 208]",
"sbb {w3}, qword ptr [{s} + 216]",
"sbb {w4}, qword ptr [{s} + 224]",
"sbb {w5}, qword ptr [{s} + 232]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 480], {w0}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"mov {w0}, qword ptr [{s} + 480]",
"mov {w1}, qword ptr [{s} + 488]",
"mov {w2}, qword ptr [{s} + 496]",
"mov {w3}, qword ptr [{s} + 504]",
"mov {w4}, qword ptr [{s} + 512]",
"mov {w5}, qword ptr [{s} + 520]",
"sub {w0}, qword ptr [{s} + 144]",
"sbb {w1}, qword ptr [{s} + 152]",
"sbb {w2}, qword ptr [{s} + 160]",
"sbb {w3}, qword ptr [{s} + 168]",
"sbb {w4}, qword ptr [{s} + 176]",
"sbb {w5}, qword ptr [{s} + 184]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 96], {w0}",
"mov qword ptr [{s} + 104], {w1}",
"mov qword ptr [{s} + 112], {w2}",
"mov qword ptr [{s} + 120], {w3}",
"mov qword ptr [{s} + 128], {w4}",
"mov qword ptr [{s} + 136], {w5}",
"mov {w0:e}, 0xffffffff",
"sub {w0}, qword ptr [{s} + 528]",
"mov {w1}, 0xffffffff00000000",
"sbb {w1}, qword ptr [{s} + 536]",
"mov {w2}, -2",
"sbb {w2}, qword ptr [{s} + 544]",
"mov {w3}, -1",
"sbb {w3}, qword ptr [{s} + 552]",
"mov {w4}, -1",
"sbb {w4}, qword ptr [{s} + 560]",
"mov {w5}, -1",
"sbb {w5}, qword ptr [{s} + 568]",
"mov {w6}, {w5}",
"shr {w6}, 61",
"shld {w5}, {w4}, 3",
"shld {w4}, {w3}, 3",
"shld {w3}, {w2}, 3",
"shld {w2}, {w1}, 3",
"shld {w1}, {w0}, 3",
"shl {w0}, 3",
"mov edx, 3",
"xor {c:e}, {c:e}",
"mulx {w7}, rax, qword ptr [{s} + 336]",
"adcx {w0}, rax",
"adox {w1}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 344]",
"adcx {w1}, rax",
"adox {w2}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 352]",
"adcx {w2}, rax",
"adox {w3}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 360]",
"adcx {w3}, rax",
"adox {w4}, {w7}",
"mulx {w7}, rax, qword ptr [{s} + 368]",
"adcx {w4}, rax",
"adox {w5}, {w7}",
"mulx rdx, rax, qword ptr [{s} + 376]",
"adcx {w5}, rax",
"adox rdx, {w6}",
"adcx rdx, {c}",
"add rdx, 1",
"mov rax, 0xffffffff00000001",
"mulx {w7}, rax, rax",
"mov {c}, rdx",
"shl {c}, 32",
"sub {c}, rdx",
"add {c}, {w7}",
"add {w0}, rax",
"adc {w1}, {c}",
"adc {w2}, rdx",
"adc {w3}, 0",
"adc {w4}, 0",
"adc {w5}, 0",
"cmc",
"sbb rax, rax",
"mov rdx, 0xffffffff00000001",
"and rdx, rax",
"mov {c:e}, 0xffffffff",
"and {c}, rax",
"and eax, 1",
"sub {w0}, rdx",
"sbb {w1}, {c}",
"sbb {w2}, rax",
"sbb {w3}, 0",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov qword ptr [{s} + 48], {w0}",
"mov qword ptr [{s} + 56], {w1}",
"mov qword ptr [{s} + 64], {w2}",
"mov qword ptr [{s} + 72], {w3}",
"mov qword ptr [{s} + 80], {w4}",
"mov qword ptr [{s} + 88], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const DOUBLE_IN_PLACE_X: usize = 0;
#[allow(dead_code)]
pub const DOUBLE_IN_PLACE_Y: usize = 1;
#[allow(dead_code)]
pub const DOUBLE_IN_PLACE_Z: usize = 2;
#[inline(never)]
pub unsafe fn add_adx(buf: &mut [MaybeUninit<u64>; 150]) {
unsafe {
asm!(
".p2align 6",
"mov rdx, qword ptr [{s} + 96]",
"mulx {w2}, {w1}, qword ptr [{s} + 104]",
"mulx {w3}, rax, qword ptr [{s} + 112]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 120]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 128]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 136]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 112]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 112]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 120]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 128]",
"mulx {k}, rax, qword ptr [{s} + 136]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 1184], {k}",
"mov qword ptr [{s} + 1192], rax",
"mov rdx, qword ptr [{s} + 96]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 104]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 112]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 120]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 128]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 136]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 1184], rax",
"adc qword ptr [{s} + 1192], rdx",
"mov qword ptr [{s} + 1152], {w6}",
"mov qword ptr [{s} + 1160], {w7}",
"mov qword ptr [{s} + 1168], {c}",
"mov qword ptr [{s} + 1176], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 1152]",
"adc {w1}, qword ptr [{s} + 1160]",
"adc {w2}, qword ptr [{s} + 1168]",
"adc {w3}, qword ptr [{s} + 1176]",
"adc {w4}, qword ptr [{s} + 1184]",
"adc {w5}, qword ptr [{s} + 1192]",
"adc {w7}, 0",
"mov qword ptr [{s} + 568], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 568]",
"mov qword ptr [{s} + 528], {k}",
"mov qword ptr [{s} + 536], {w1}",
"mov qword ptr [{s} + 544], {w2}",
"mov qword ptr [{s} + 552], {w3}",
"mov qword ptr [{s} + 560], {w4}",
"mov qword ptr [{s} + 568], {w5}",
"mov rdx, qword ptr [{s} + 240]",
"mulx {w2}, {w1}, qword ptr [{s} + 248]",
"mulx {w3}, rax, qword ptr [{s} + 256]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 264]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 272]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 280]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 248]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 256]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 264]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 272]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 280]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 256]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 264]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 272]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 280]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 264]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 272]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 280]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 272]",
"mulx {k}, rax, qword ptr [{s} + 280]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 1184], {k}",
"mov qword ptr [{s} + 1192], rax",
"mov rdx, qword ptr [{s} + 240]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 248]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 256]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 264]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 272]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 280]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 1184], rax",
"adc qword ptr [{s} + 1192], rdx",
"mov qword ptr [{s} + 1152], {w6}",
"mov qword ptr [{s} + 1160], {w7}",
"mov qword ptr [{s} + 1168], {c}",
"mov qword ptr [{s} + 1176], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 1152]",
"adc {w1}, qword ptr [{s} + 1160]",
"adc {w2}, qword ptr [{s} + 1168]",
"adc {w3}, qword ptr [{s} + 1176]",
"adc {w4}, qword ptr [{s} + 1184]",
"adc {w5}, qword ptr [{s} + 1192]",
"adc {w7}, 0",
"mov qword ptr [{s} + 616], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 616]",
"mov qword ptr [{s} + 576], {k}",
"mov qword ptr [{s} + 584], {w1}",
"mov qword ptr [{s} + 592], {w2}",
"mov qword ptr [{s} + 600], {w3}",
"mov qword ptr [{s} + 608], {w4}",
"mov qword ptr [{s} + 616], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 240]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 248]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 256]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 264]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 272]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 280]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 1000], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 1000]",
"mov qword ptr [{s} + 960], {w6}",
"mov qword ptr [{s} + 968], {w7}",
"mov qword ptr [{s} + 976], {w0}",
"mov qword ptr [{s} + 984], {w1}",
"mov qword ptr [{s} + 992], {w2}",
"mov qword ptr [{s} + 1000], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 528]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 536]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 544]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 552]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 560]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 568]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 712], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 712]",
"mov qword ptr [{s} + 672], {w6}",
"mov qword ptr [{s} + 680], {w7}",
"mov qword ptr [{s} + 688], {w0}",
"mov qword ptr [{s} + 696], {w1}",
"mov qword ptr [{s} + 704], {w2}",
"mov qword ptr [{s} + 712], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 576]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 584]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 592]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 600]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 608]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 616]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 664], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 664]",
"mov qword ptr [{s} + 624], {w6}",
"mov qword ptr [{s} + 632], {w7}",
"mov qword ptr [{s} + 640], {w0}",
"mov qword ptr [{s} + 648], {w1}",
"mov qword ptr [{s} + 656], {w2}",
"mov qword ptr [{s} + 664], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 96]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 112]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 120]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 128]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 136]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 1048], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 1048]",
"mov qword ptr [{s} + 1008], {w6}",
"mov qword ptr [{s} + 1016], {w7}",
"mov qword ptr [{s} + 1024], {w0}",
"mov qword ptr [{s} + 1032], {w1}",
"mov qword ptr [{s} + 1040], {w2}",
"mov qword ptr [{s} + 1048], {w3}",
"mov {w0}, qword ptr [{s} + 672]",
"mov {w1}, qword ptr [{s} + 680]",
"mov {w2}, qword ptr [{s} + 688]",
"mov {w3}, qword ptr [{s} + 696]",
"mov {w4}, qword ptr [{s} + 704]",
"mov {w5}, qword ptr [{s} + 712]",
"sub {w0}, qword ptr [{s} + 624]",
"sbb {w1}, qword ptr [{s} + 632]",
"sbb {w2}, qword ptr [{s} + 640]",
"sbb {w3}, qword ptr [{s} + 648]",
"sbb {w4}, qword ptr [{s} + 656]",
"sbb {w5}, qword ptr [{s} + 664]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 432], {w0}",
"mov qword ptr [{s} + 440], {w1}",
"mov qword ptr [{s} + 448], {w2}",
"mov qword ptr [{s} + 456], {w3}",
"mov qword ptr [{s} + 464], {w4}",
"mov qword ptr [{s} + 472], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 432]",
"mov {w1}, qword ptr [{s} + 440]",
"mov {w2}, qword ptr [{s} + 448]",
"mov {w3}, qword ptr [{s} + 456]",
"mov {w4}, qword ptr [{s} + 464]",
"mov {w5}, qword ptr [{s} + 472]",
"add {w0}, qword ptr [{s} + 432]",
"adc {w1}, qword ptr [{s} + 440]",
"adc {w2}, qword ptr [{s} + 448]",
"adc {w3}, qword ptr [{s} + 456]",
"adc {w4}, qword ptr [{s} + 464]",
"adc {w5}, qword ptr [{s} + 472]",
"adc {w6}, 0",
"mov qword ptr [{s} + 856], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 856]",
"mov qword ptr [{s} + 816], {w0}",
"mov qword ptr [{s} + 824], {w1}",
"mov qword ptr [{s} + 832], {w2}",
"mov qword ptr [{s} + 840], {w3}",
"mov qword ptr [{s} + 848], {w4}",
"mov qword ptr [{s} + 856], {w5}",
"mov rdx, qword ptr [{s} + 816]",
"mulx {w2}, {w1}, qword ptr [{s} + 824]",
"mulx {w3}, rax, qword ptr [{s} + 832]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 840]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 848]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 856]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 824]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 832]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 840]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 848]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 856]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 832]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 840]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 848]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 856]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 840]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 848]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 856]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 848]",
"mulx {k}, rax, qword ptr [{s} + 856]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 1184], {k}",
"mov qword ptr [{s} + 1192], rax",
"mov rdx, qword ptr [{s} + 816]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 824]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 832]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 840]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 848]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 856]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 1184], rax",
"adc qword ptr [{s} + 1192], rdx",
"mov qword ptr [{s} + 1152], {w6}",
"mov qword ptr [{s} + 1160], {w7}",
"mov qword ptr [{s} + 1168], {c}",
"mov qword ptr [{s} + 1176], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 1152]",
"adc {w1}, qword ptr [{s} + 1160]",
"adc {w2}, qword ptr [{s} + 1168]",
"adc {w3}, qword ptr [{s} + 1176]",
"adc {w4}, qword ptr [{s} + 1184]",
"adc {w5}, qword ptr [{s} + 1192]",
"adc {w7}, 0",
"mov qword ptr [{s} + 856], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 856]",
"mov qword ptr [{s} + 816], {k}",
"mov qword ptr [{s} + 824], {w1}",
"mov qword ptr [{s} + 832], {w2}",
"mov qword ptr [{s} + 840], {w3}",
"mov qword ptr [{s} + 848], {w4}",
"mov qword ptr [{s} + 856], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 576]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 584]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 592]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 600]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 608]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 616]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 960]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 968]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 976]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 984]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 992]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1000]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 760], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 760]",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {w0}",
"mov qword ptr [{s} + 744], {w1}",
"mov qword ptr [{s} + 752], {w2}",
"mov qword ptr [{s} + 760], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 816]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 824]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 832]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 840]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 848]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 856]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 624]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 632]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 640]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 648]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 656]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 664]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 952], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 952]",
"mov qword ptr [{s} + 912], {w6}",
"mov qword ptr [{s} + 920], {w7}",
"mov qword ptr [{s} + 928], {w0}",
"mov qword ptr [{s} + 936], {w1}",
"mov qword ptr [{s} + 944], {w2}",
"mov qword ptr [{s} + 952], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 528]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 536]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 544]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 552]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 560]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 568]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 1008]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1016]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1024]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1032]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1040]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 1048]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 808], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 808]",
"mov qword ptr [{s} + 768], {w6}",
"mov qword ptr [{s} + 776], {w7}",
"mov qword ptr [{s} + 784], {w0}",
"mov qword ptr [{s} + 792], {w1}",
"mov qword ptr [{s} + 800], {w2}",
"mov qword ptr [{s} + 808], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 816]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 824]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 832]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 840]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 848]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 856]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 904], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 904]",
"mov qword ptr [{s} + 864], {w6}",
"mov qword ptr [{s} + 872], {w7}",
"mov qword ptr [{s} + 880], {w0}",
"mov qword ptr [{s} + 888], {w1}",
"mov qword ptr [{s} + 896], {w2}",
"mov qword ptr [{s} + 904], {w3}",
"mov {w0}, qword ptr [{s} + 768]",
"mov {w1}, qword ptr [{s} + 776]",
"mov {w2}, qword ptr [{s} + 784]",
"mov {w3}, qword ptr [{s} + 792]",
"mov {w4}, qword ptr [{s} + 800]",
"mov {w5}, qword ptr [{s} + 808]",
"sub {w0}, qword ptr [{s} + 720]",
"sbb {w1}, qword ptr [{s} + 728]",
"sbb {w2}, qword ptr [{s} + 736]",
"sbb {w3}, qword ptr [{s} + 744]",
"sbb {w4}, qword ptr [{s} + 752]",
"sbb {w5}, qword ptr [{s} + 760]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 480], {w0}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 480]",
"mov {w1}, qword ptr [{s} + 488]",
"mov {w2}, qword ptr [{s} + 496]",
"mov {w3}, qword ptr [{s} + 504]",
"mov {w4}, qword ptr [{s} + 512]",
"mov {w5}, qword ptr [{s} + 520]",
"add {w0}, qword ptr [{s} + 480]",
"adc {w1}, qword ptr [{s} + 488]",
"adc {w2}, qword ptr [{s} + 496]",
"adc {w3}, qword ptr [{s} + 504]",
"adc {w4}, qword ptr [{s} + 512]",
"adc {w5}, qword ptr [{s} + 520]",
"adc {w6}, 0",
"mov qword ptr [{s} + 520], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {w0}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"mov rdx, qword ptr [{s} + 480]",
"mulx {w2}, {w1}, qword ptr [{s} + 488]",
"mulx {w3}, rax, qword ptr [{s} + 496]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 504]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 512]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 520]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 488]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 496]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 504]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 496]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 504]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 504]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 512]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 520]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 512]",
"mulx {k}, rax, qword ptr [{s} + 520]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 1184], {k}",
"mov qword ptr [{s} + 1192], rax",
"mov rdx, qword ptr [{s} + 480]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 488]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 496]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 504]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 512]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 520]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 1184], rax",
"adc qword ptr [{s} + 1192], rdx",
"mov qword ptr [{s} + 1152], {w6}",
"mov qword ptr [{s} + 1160], {w7}",
"mov qword ptr [{s} + 1168], {c}",
"mov qword ptr [{s} + 1176], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 1152]",
"adc {w1}, qword ptr [{s} + 1160]",
"adc {w2}, qword ptr [{s} + 1168]",
"adc {w3}, qword ptr [{s} + 1176]",
"adc {w4}, qword ptr [{s} + 1184]",
"adc {w5}, qword ptr [{s} + 1192]",
"adc {w7}, 0",
"mov qword ptr [{s} + 328], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 328]",
"mov qword ptr [{s} + 288], {k}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 96]",
"mov {w1}, qword ptr [{s} + 104]",
"mov {w2}, qword ptr [{s} + 112]",
"mov {w3}, qword ptr [{s} + 120]",
"mov {w4}, qword ptr [{s} + 128]",
"mov {w5}, qword ptr [{s} + 136]",
"add {w0}, qword ptr [{s} + 240]",
"adc {w1}, qword ptr [{s} + 248]",
"adc {w2}, qword ptr [{s} + 256]",
"adc {w3}, qword ptr [{s} + 264]",
"adc {w4}, qword ptr [{s} + 272]",
"adc {w5}, qword ptr [{s} + 280]",
"adc {w6}, 0",
"mov qword ptr [{s} + 424], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 424]",
"mov qword ptr [{s} + 384], {w0}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"mov rdx, qword ptr [{s} + 384]",
"mulx {w2}, {w1}, qword ptr [{s} + 392]",
"mulx {w3}, rax, qword ptr [{s} + 400]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 408]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 416]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 424]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 392]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 400]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 408]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 400]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 408]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 408]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 416]",
"mulx {k}, rax, qword ptr [{s} + 424]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 1184], {k}",
"mov qword ptr [{s} + 1192], rax",
"mov rdx, qword ptr [{s} + 384]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 392]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 400]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 408]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 416]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 424]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 1184], rax",
"adc qword ptr [{s} + 1192], rdx",
"mov qword ptr [{s} + 1152], {w6}",
"mov qword ptr [{s} + 1160], {w7}",
"mov qword ptr [{s} + 1168], {c}",
"mov qword ptr [{s} + 1176], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 1152]",
"adc {w1}, qword ptr [{s} + 1160]",
"adc {w2}, qword ptr [{s} + 1168]",
"adc {w3}, qword ptr [{s} + 1176]",
"adc {w4}, qword ptr [{s} + 1184]",
"adc {w5}, qword ptr [{s} + 1192]",
"adc {w7}, 0",
"mov qword ptr [{s} + 424], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 424]",
"mov qword ptr [{s} + 384], {k}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 864]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 872]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 880]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 888]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 896]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 904]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 720]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 728]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 736]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 744]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 752]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 760]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 1096], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 1096]",
"mov qword ptr [{s} + 1056], {w6}",
"mov qword ptr [{s} + 1064], {w7}",
"mov qword ptr [{s} + 1072], {w0}",
"mov qword ptr [{s} + 1080], {w1}",
"mov qword ptr [{s} + 1088], {w2}",
"mov qword ptr [{s} + 1096], {w3}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 912]",
"mov {w1}, qword ptr [{s} + 920]",
"mov {w2}, qword ptr [{s} + 928]",
"mov {w3}, qword ptr [{s} + 936]",
"mov {w4}, qword ptr [{s} + 944]",
"mov {w5}, qword ptr [{s} + 952]",
"add {w0}, qword ptr [{s} + 912]",
"adc {w1}, qword ptr [{s} + 920]",
"adc {w2}, qword ptr [{s} + 928]",
"adc {w3}, qword ptr [{s} + 936]",
"adc {w4}, qword ptr [{s} + 944]",
"adc {w5}, qword ptr [{s} + 952]",
"adc {w6}, 0",
"mov qword ptr [{s} + 1000], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 1000]",
"mov qword ptr [{s} + 960], {w0}",
"mov qword ptr [{s} + 968], {w1}",
"mov qword ptr [{s} + 976], {w2}",
"mov qword ptr [{s} + 984], {w3}",
"mov qword ptr [{s} + 992], {w4}",
"mov qword ptr [{s} + 1000], {w5}",
"mov {w0}, qword ptr [{s} + 288]",
"mov {w1}, qword ptr [{s} + 296]",
"mov {w2}, qword ptr [{s} + 304]",
"mov {w3}, qword ptr [{s} + 312]",
"mov {w4}, qword ptr [{s} + 320]",
"mov {w5}, qword ptr [{s} + 328]",
"sub {w0}, qword ptr [{s} + 864]",
"sbb {w1}, qword ptr [{s} + 872]",
"sbb {w2}, qword ptr [{s} + 880]",
"sbb {w3}, qword ptr [{s} + 888]",
"sbb {w4}, qword ptr [{s} + 896]",
"sbb {w5}, qword ptr [{s} + 904]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 288], {w0}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
"mov {w0}, qword ptr [{s} + 288]",
"mov {w1}, qword ptr [{s} + 296]",
"mov {w2}, qword ptr [{s} + 304]",
"mov {w3}, qword ptr [{s} + 312]",
"mov {w4}, qword ptr [{s} + 320]",
"mov {w5}, qword ptr [{s} + 328]",
"sub {w0}, qword ptr [{s} + 960]",
"sbb {w1}, qword ptr [{s} + 968]",
"sbb {w2}, qword ptr [{s} + 976]",
"sbb {w3}, qword ptr [{s} + 984]",
"sbb {w4}, qword ptr [{s} + 992]",
"sbb {w5}, qword ptr [{s} + 1000]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 288], {w0}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
"mov {w0}, qword ptr [{s} + 912]",
"mov {w1}, qword ptr [{s} + 920]",
"mov {w2}, qword ptr [{s} + 928]",
"mov {w3}, qword ptr [{s} + 936]",
"mov {w4}, qword ptr [{s} + 944]",
"mov {w5}, qword ptr [{s} + 952]",
"sub {w0}, qword ptr [{s} + 288]",
"sbb {w1}, qword ptr [{s} + 296]",
"sbb {w2}, qword ptr [{s} + 304]",
"sbb {w3}, qword ptr [{s} + 312]",
"sbb {w4}, qword ptr [{s} + 320]",
"sbb {w5}, qword ptr [{s} + 328]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 1104], {w0}",
"mov qword ptr [{s} + 1112], {w1}",
"mov qword ptr [{s} + 1120], {w2}",
"mov qword ptr [{s} + 1128], {w3}",
"mov qword ptr [{s} + 1136], {w4}",
"mov qword ptr [{s} + 1144], {w5}",
"mov {w0}, qword ptr [{s} + 384]",
"mov {w1}, qword ptr [{s} + 392]",
"mov {w2}, qword ptr [{s} + 400]",
"mov {w3}, qword ptr [{s} + 408]",
"mov {w4}, qword ptr [{s} + 416]",
"mov {w5}, qword ptr [{s} + 424]",
"sub {w0}, qword ptr [{s} + 528]",
"sbb {w1}, qword ptr [{s} + 536]",
"sbb {w2}, qword ptr [{s} + 544]",
"sbb {w3}, qword ptr [{s} + 552]",
"sbb {w4}, qword ptr [{s} + 560]",
"sbb {w5}, qword ptr [{s} + 568]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 384], {w0}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 1104]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 1112]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 1120]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 1128]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 1136]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 1144]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 480]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 488]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 496]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 504]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 512]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 520]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 376], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {w6}",
"mov qword ptr [{s} + 344], {w7}",
"mov qword ptr [{s} + 352], {w0}",
"mov qword ptr [{s} + 360], {w1}",
"mov qword ptr [{s} + 368], {w2}",
"mov qword ptr [{s} + 376], {w3}",
"mov {w0}, qword ptr [{s} + 384]",
"mov {w1}, qword ptr [{s} + 392]",
"mov {w2}, qword ptr [{s} + 400]",
"mov {w3}, qword ptr [{s} + 408]",
"mov {w4}, qword ptr [{s} + 416]",
"mov {w5}, qword ptr [{s} + 424]",
"sub {w0}, qword ptr [{s} + 576]",
"sbb {w1}, qword ptr [{s} + 584]",
"sbb {w2}, qword ptr [{s} + 592]",
"sbb {w3}, qword ptr [{s} + 600]",
"sbb {w4}, qword ptr [{s} + 608]",
"sbb {w5}, qword ptr [{s} + 616]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 384], {w0}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 432]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 440]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 448]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 456]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 464]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 472]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 424], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 424]",
"mov qword ptr [{s} + 384], {w6}",
"mov qword ptr [{s} + 392], {w7}",
"mov qword ptr [{s} + 400], {w0}",
"mov qword ptr [{s} + 408], {w1}",
"mov qword ptr [{s} + 416], {w2}",
"mov qword ptr [{s} + 424], {w3}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 1056]",
"mov {w1}, qword ptr [{s} + 1064]",
"mov {w2}, qword ptr [{s} + 1072]",
"mov {w3}, qword ptr [{s} + 1080]",
"mov {w4}, qword ptr [{s} + 1088]",
"mov {w5}, qword ptr [{s} + 1096]",
"add {w0}, qword ptr [{s} + 1056]",
"adc {w1}, qword ptr [{s} + 1064]",
"adc {w2}, qword ptr [{s} + 1072]",
"adc {w3}, qword ptr [{s} + 1080]",
"adc {w4}, qword ptr [{s} + 1088]",
"adc {w5}, qword ptr [{s} + 1096]",
"adc {w6}, 0",
"mov qword ptr [{s} + 1096], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 1096]",
"mov qword ptr [{s} + 1056], {w0}",
"mov qword ptr [{s} + 1064], {w1}",
"mov qword ptr [{s} + 1072], {w2}",
"mov qword ptr [{s} + 1080], {w3}",
"mov qword ptr [{s} + 1088], {w4}",
"mov qword ptr [{s} + 1096], {w5}",
"mov {w0}, qword ptr [{s} + 336]",
"mov {w1}, qword ptr [{s} + 344]",
"mov {w2}, qword ptr [{s} + 352]",
"mov {w3}, qword ptr [{s} + 360]",
"mov {w4}, qword ptr [{s} + 368]",
"mov {w5}, qword ptr [{s} + 376]",
"sub {w0}, qword ptr [{s} + 1056]",
"sbb {w1}, qword ptr [{s} + 1064]",
"sbb {w2}, qword ptr [{s} + 1072]",
"sbb {w3}, qword ptr [{s} + 1080]",
"sbb {w4}, qword ptr [{s} + 1088]",
"sbb {w5}, qword ptr [{s} + 1096]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 336], {w0}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const ADD_X3: usize = 6;
#[allow(dead_code)]
pub const ADD_Y3: usize = 7;
#[allow(dead_code)]
pub const ADD_Z3: usize = 8;
#[allow(dead_code)]
pub const ADD_H: usize = 9;
#[allow(dead_code)]
pub const ADD_R: usize = 10;
#[inline(never)]
pub unsafe fn add_affine_adx(buf: &mut [MaybeUninit<u64>; 126]) {
unsafe {
asm!(
".p2align 6",
"mov rdx, qword ptr [{s} + 96]",
"mulx {w2}, {w1}, qword ptr [{s} + 104]",
"mulx {w3}, rax, qword ptr [{s} + 112]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 120]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 128]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 136]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 112]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 112]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 120]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 120]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 128]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 136]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 128]",
"mulx {k}, rax, qword ptr [{s} + 136]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 992], {k}",
"mov qword ptr [{s} + 1000], rax",
"mov rdx, qword ptr [{s} + 96]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 104]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 112]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 120]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 128]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 136]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 992], rax",
"adc qword ptr [{s} + 1000], rdx",
"mov qword ptr [{s} + 960], {w6}",
"mov qword ptr [{s} + 968], {w7}",
"mov qword ptr [{s} + 976], {c}",
"mov qword ptr [{s} + 984], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 960]",
"adc {w1}, qword ptr [{s} + 968]",
"adc {w2}, qword ptr [{s} + 976]",
"adc {w3}, qword ptr [{s} + 984]",
"adc {w4}, qword ptr [{s} + 992]",
"adc {w5}, qword ptr [{s} + 1000]",
"adc {w7}, 0",
"mov qword ptr [{s} + 520], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 520]",
"mov qword ptr [{s} + 480], {k}",
"mov qword ptr [{s} + 488], {w1}",
"mov qword ptr [{s} + 496], {w2}",
"mov qword ptr [{s} + 504], {w3}",
"mov qword ptr [{s} + 512], {w4}",
"mov qword ptr [{s} + 520], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 96]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 104]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 112]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 120]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 128]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 136]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 192]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 200]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 208]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 216]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 224]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 232]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 856], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 856]",
"mov qword ptr [{s} + 816], {w6}",
"mov qword ptr [{s} + 824], {w7}",
"mov qword ptr [{s} + 832], {w0}",
"mov qword ptr [{s} + 840], {w1}",
"mov qword ptr [{s} + 848], {w2}",
"mov qword ptr [{s} + 856], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 480]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 488]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 496]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 504]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 512]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 520]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 144]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 152]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 160]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 168]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 176]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 184]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 568], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 568]",
"mov qword ptr [{s} + 528], {w6}",
"mov qword ptr [{s} + 536], {w7}",
"mov qword ptr [{s} + 544], {w0}",
"mov qword ptr [{s} + 552], {w1}",
"mov qword ptr [{s} + 560], {w2}",
"mov qword ptr [{s} + 568], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 480]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 488]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 496]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 504]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 512]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 520]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 816]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 824]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 832]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 840]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 848]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 856]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 616], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 616]",
"mov qword ptr [{s} + 576], {w6}",
"mov qword ptr [{s} + 584], {w7}",
"mov qword ptr [{s} + 592], {w0}",
"mov qword ptr [{s} + 600], {w1}",
"mov qword ptr [{s} + 608], {w2}",
"mov qword ptr [{s} + 616], {w3}",
"mov {w0}, qword ptr [{s} + 528]",
"mov {w1}, qword ptr [{s} + 536]",
"mov {w2}, qword ptr [{s} + 544]",
"mov {w3}, qword ptr [{s} + 552]",
"mov {w4}, qword ptr [{s} + 560]",
"mov {w5}, qword ptr [{s} + 568]",
"sub {w0}, qword ptr [{s}]",
"sbb {w1}, qword ptr [{s} + 8]",
"sbb {w2}, qword ptr [{s} + 16]",
"sbb {w3}, qword ptr [{s} + 24]",
"sbb {w4}, qword ptr [{s} + 32]",
"sbb {w5}, qword ptr [{s} + 40]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 384], {w0}",
"mov qword ptr [{s} + 392], {w1}",
"mov qword ptr [{s} + 400], {w2}",
"mov qword ptr [{s} + 408], {w3}",
"mov qword ptr [{s} + 416], {w4}",
"mov qword ptr [{s} + 424], {w5}",
"mov rdx, qword ptr [{s} + 384]",
"mulx {w2}, {w1}, qword ptr [{s} + 392]",
"mulx {w3}, rax, qword ptr [{s} + 400]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 408]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 416]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 424]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 392]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 400]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 408]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 400]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 408]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 408]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 416]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 424]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 416]",
"mulx {k}, rax, qword ptr [{s} + 424]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 992], {k}",
"mov qword ptr [{s} + 1000], rax",
"mov rdx, qword ptr [{s} + 384]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 392]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 400]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 408]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 416]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 424]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 992], rax",
"adc qword ptr [{s} + 1000], rdx",
"mov qword ptr [{s} + 960], {w6}",
"mov qword ptr [{s} + 968], {w7}",
"mov qword ptr [{s} + 976], {c}",
"mov qword ptr [{s} + 984], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 960]",
"adc {w1}, qword ptr [{s} + 968]",
"adc {w2}, qword ptr [{s} + 976]",
"adc {w3}, qword ptr [{s} + 984]",
"adc {w4}, qword ptr [{s} + 992]",
"adc {w5}, qword ptr [{s} + 1000]",
"adc {w7}, 0",
"mov qword ptr [{s} + 664], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 664]",
"mov qword ptr [{s} + 624], {k}",
"mov qword ptr [{s} + 632], {w1}",
"mov qword ptr [{s} + 640], {w2}",
"mov qword ptr [{s} + 648], {w3}",
"mov qword ptr [{s} + 656], {w4}",
"mov qword ptr [{s} + 664], {w5}",
"mov {w0}, qword ptr [{s} + 576]",
"mov {w1}, qword ptr [{s} + 584]",
"mov {w2}, qword ptr [{s} + 592]",
"mov {w3}, qword ptr [{s} + 600]",
"mov {w4}, qword ptr [{s} + 608]",
"mov {w5}, qword ptr [{s} + 616]",
"sub {w0}, qword ptr [{s} + 48]",
"sbb {w1}, qword ptr [{s} + 56]",
"sbb {w2}, qword ptr [{s} + 64]",
"sbb {w3}, qword ptr [{s} + 72]",
"sbb {w4}, qword ptr [{s} + 80]",
"sbb {w5}, qword ptr [{s} + 88]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 432], {w0}",
"mov qword ptr [{s} + 440], {w1}",
"mov qword ptr [{s} + 448], {w2}",
"mov qword ptr [{s} + 456], {w3}",
"mov qword ptr [{s} + 464], {w4}",
"mov qword ptr [{s} + 472], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 432]",
"mov {w1}, qword ptr [{s} + 440]",
"mov {w2}, qword ptr [{s} + 448]",
"mov {w3}, qword ptr [{s} + 456]",
"mov {w4}, qword ptr [{s} + 464]",
"mov {w5}, qword ptr [{s} + 472]",
"add {w0}, qword ptr [{s} + 432]",
"adc {w1}, qword ptr [{s} + 440]",
"adc {w2}, qword ptr [{s} + 448]",
"adc {w3}, qword ptr [{s} + 456]",
"adc {w4}, qword ptr [{s} + 464]",
"adc {w5}, qword ptr [{s} + 472]",
"adc {w6}, 0",
"mov qword ptr [{s} + 472], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 472]",
"mov qword ptr [{s} + 432], {w0}",
"mov qword ptr [{s} + 440], {w1}",
"mov qword ptr [{s} + 448], {w2}",
"mov qword ptr [{s} + 456], {w3}",
"mov qword ptr [{s} + 464], {w4}",
"mov qword ptr [{s} + 472], {w5}",
"mov rdx, qword ptr [{s} + 432]",
"mulx {w2}, {w1}, qword ptr [{s} + 440]",
"mulx {w3}, rax, qword ptr [{s} + 448]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 456]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 464]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 472]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 440]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 448]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 456]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 472]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 464]",
"mulx {k}, rax, qword ptr [{s} + 472]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 992], {k}",
"mov qword ptr [{s} + 1000], rax",
"mov rdx, qword ptr [{s} + 432]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 440]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 448]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 456]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 464]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 472]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 992], rax",
"adc qword ptr [{s} + 1000], rdx",
"mov qword ptr [{s} + 960], {w6}",
"mov qword ptr [{s} + 968], {w7}",
"mov qword ptr [{s} + 976], {c}",
"mov qword ptr [{s} + 984], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 960]",
"adc {w1}, qword ptr [{s} + 968]",
"adc {w2}, qword ptr [{s} + 976]",
"adc {w3}, qword ptr [{s} + 984]",
"adc {w4}, qword ptr [{s} + 992]",
"adc {w5}, qword ptr [{s} + 1000]",
"adc {w7}, 0",
"mov qword ptr [{s} + 280], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 280]",
"mov qword ptr [{s} + 240], {k}",
"mov qword ptr [{s} + 248], {w1}",
"mov qword ptr [{s} + 256], {w2}",
"mov qword ptr [{s} + 264], {w3}",
"mov qword ptr [{s} + 272], {w4}",
"mov qword ptr [{s} + 280], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 624]",
"mov {w1}, qword ptr [{s} + 632]",
"mov {w2}, qword ptr [{s} + 640]",
"mov {w3}, qword ptr [{s} + 648]",
"mov {w4}, qword ptr [{s} + 656]",
"mov {w5}, qword ptr [{s} + 664]",
"add {w0}, qword ptr [{s} + 624]",
"adc {w1}, qword ptr [{s} + 632]",
"adc {w2}, qword ptr [{s} + 640]",
"adc {w3}, qword ptr [{s} + 648]",
"adc {w4}, qword ptr [{s} + 656]",
"adc {w5}, qword ptr [{s} + 664]",
"adc {w6}, 0",
"mov qword ptr [{s} + 712], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 712]",
"mov qword ptr [{s} + 672], {w0}",
"mov qword ptr [{s} + 680], {w1}",
"mov qword ptr [{s} + 688], {w2}",
"mov qword ptr [{s} + 696], {w3}",
"mov qword ptr [{s} + 704], {w4}",
"mov qword ptr [{s} + 712], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 672]",
"mov {w1}, qword ptr [{s} + 680]",
"mov {w2}, qword ptr [{s} + 688]",
"mov {w3}, qword ptr [{s} + 696]",
"mov {w4}, qword ptr [{s} + 704]",
"mov {w5}, qword ptr [{s} + 712]",
"add {w0}, qword ptr [{s} + 672]",
"adc {w1}, qword ptr [{s} + 680]",
"adc {w2}, qword ptr [{s} + 688]",
"adc {w3}, qword ptr [{s} + 696]",
"adc {w4}, qword ptr [{s} + 704]",
"adc {w5}, qword ptr [{s} + 712]",
"adc {w6}, 0",
"mov qword ptr [{s} + 712], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 712]",
"mov qword ptr [{s} + 672], {w0}",
"mov qword ptr [{s} + 680], {w1}",
"mov qword ptr [{s} + 688], {w2}",
"mov qword ptr [{s} + 696], {w3}",
"mov qword ptr [{s} + 704], {w4}",
"mov qword ptr [{s} + 712], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 672]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 680]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 688]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 696]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 704]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 712]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s}]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 8]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 16]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 24]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 32]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 40]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 808], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 808]",
"mov qword ptr [{s} + 768], {w6}",
"mov qword ptr [{s} + 776], {w7}",
"mov qword ptr [{s} + 784], {w0}",
"mov qword ptr [{s} + 792], {w1}",
"mov qword ptr [{s} + 800], {w2}",
"mov qword ptr [{s} + 808], {w3}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 672]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 680]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 688]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 696]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 704]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 712]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 384]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 392]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 400]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 408]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 416]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 424]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 760], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 760]",
"mov qword ptr [{s} + 720], {w6}",
"mov qword ptr [{s} + 728], {w7}",
"mov qword ptr [{s} + 736], {w0}",
"mov qword ptr [{s} + 744], {w1}",
"mov qword ptr [{s} + 752], {w2}",
"mov qword ptr [{s} + 760], {w3}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 96]",
"mov {w1}, qword ptr [{s} + 104]",
"mov {w2}, qword ptr [{s} + 112]",
"mov {w3}, qword ptr [{s} + 120]",
"mov {w4}, qword ptr [{s} + 128]",
"mov {w5}, qword ptr [{s} + 136]",
"add {w0}, qword ptr [{s} + 384]",
"adc {w1}, qword ptr [{s} + 392]",
"adc {w2}, qword ptr [{s} + 400]",
"adc {w3}, qword ptr [{s} + 408]",
"adc {w4}, qword ptr [{s} + 416]",
"adc {w5}, qword ptr [{s} + 424]",
"adc {w6}, 0",
"mov qword ptr [{s} + 376], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {w0}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"mov rdx, qword ptr [{s} + 336]",
"mulx {w2}, {w1}, qword ptr [{s} + 344]",
"mulx {w3}, rax, qword ptr [{s} + 352]",
"add {w2}, rax",
"mulx {w4}, rax, qword ptr [{s} + 360]",
"adc {w3}, rax",
"mulx {w5}, rax, qword ptr [{s} + 368]",
"adc {w4}, rax",
"mulx {w6}, rax, qword ptr [{s} + 376]",
"adc {w5}, rax",
"adc {w6}, 0",
"mov rdx, qword ptr [{s} + 344]",
"xor {w7:e}, {w7:e}",
"mulx {k}, rax, qword ptr [{s} + 352]",
"adcx {w3}, rax",
"adox {w4}, {k}",
"mulx {k}, rax, qword ptr [{s} + 360]",
"adcx {w4}, rax",
"adox {w5}, {k}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mov eax, 0",
"adcx {w7}, rax",
"mov rdx, qword ptr [{s} + 352]",
"xor {c:e}, {c:e}",
"mulx {k}, rax, qword ptr [{s} + 360]",
"adcx {w5}, rax",
"adox {w6}, {k}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w6}, rax",
"adox {w7}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mov eax, 0",
"adcx {c}, rax",
"mov rdx, qword ptr [{s} + 360]",
"xor {w0:e}, {w0:e}",
"mulx {k}, rax, qword ptr [{s} + 368]",
"adcx {w7}, rax",
"adox {c}, {k}",
"mulx {k}, rax, qword ptr [{s} + 376]",
"adcx {c}, rax",
"adox {w0}, {k}",
"mov eax, 0",
"adcx {w0}, rax",
"mov rdx, qword ptr [{s} + 368]",
"mulx {k}, rax, qword ptr [{s} + 376]",
"add {w0}, rax",
"adc {k}, 0",
"add {w1}, {w1}",
"adc {w2}, {w2}",
"adc {w3}, {w3}",
"adc {w4}, {w4}",
"adc {w5}, {w5}",
"adc {w6}, {w6}",
"adc {w7}, {w7}",
"adc {c}, {c}",
"adc {w0}, {w0}",
"adc {k}, {k}",
"mov eax, 0",
"adc eax, 0",
"mov qword ptr [{s} + 992], {k}",
"mov qword ptr [{s} + 1000], rax",
"mov rdx, qword ptr [{s} + 336]",
"mulx rdx, {k}, rdx",
"add {w1}, rdx",
"mov rdx, qword ptr [{s} + 344]",
"mulx rdx, rax, rdx",
"adc {w2}, rax",
"adc {w3}, rdx",
"mov rdx, qword ptr [{s} + 352]",
"mulx rdx, rax, rdx",
"adc {w4}, rax",
"adc {w5}, rdx",
"mov rdx, qword ptr [{s} + 360]",
"mulx rdx, rax, rdx",
"adc {w6}, rax",
"adc {w7}, rdx",
"mov rdx, qword ptr [{s} + 368]",
"mulx rdx, rax, rdx",
"adc {c}, rax",
"adc {w0}, rdx",
"mov rdx, qword ptr [{s} + 376]",
"mulx rdx, rax, rdx",
"adc qword ptr [{s} + 992], rax",
"adc qword ptr [{s} + 1000], rdx",
"mov qword ptr [{s} + 960], {w6}",
"mov qword ptr [{s} + 968], {w7}",
"mov qword ptr [{s} + 976], {c}",
"mov qword ptr [{s} + 984], {w0}",
"mov {w7}, 0xffffffff00000001",
"mov {c:e}, 0xffffffff",
"mov rdx, {k}",
"shl rdx, 32",
"add rdx, {k}",
"mulx rax, {k}, {w7}",
"mulx {k}, {w6}, {c}",
"add rax, {w6}",
"adc {k}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w1}, rax",
"sbb {w2}, {k}",
"sbb {w3}, {w6}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"mov {k}, rdx",
"sbb {k}, 0",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {w7}",
"mulx {w1}, {w6}, {c}",
"add rax, {w6}",
"adc {w1}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {w6}",
"sbb {w5}, 0",
"sbb {k}, 0",
"mov {w1}, rdx",
"sbb {w1}, 0",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {w7}",
"mulx {w2}, {w6}, {c}",
"add rax, {w6}",
"adc {w2}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {w6}",
"sbb {k}, 0",
"sbb {w1}, 0",
"mov {w2}, rdx",
"sbb {w2}, 0",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {w7}",
"mulx {w3}, {w6}, {c}",
"add rax, {w6}",
"adc {w3}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {k}, {w6}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"mov {w3}, rdx",
"sbb {w3}, 0",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {w7}",
"mulx {w4}, {w6}, {c}",
"add rax, {w6}",
"adc {w4}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {w5}, rax",
"sbb {k}, {w4}",
"sbb {w1}, {w6}",
"sbb {w2}, 0",
"sbb {w3}, 0",
"mov {w4}, rdx",
"sbb {w4}, 0",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {w7}",
"mulx {w5}, {w6}, {c}",
"add rax, {w6}",
"adc {w5}, rdx",
"mov {w6:e}, 0",
"adc {w6}, 0",
"sub {k}, rax",
"sbb {w1}, {w5}",
"sbb {w2}, {w6}",
"sbb {w3}, 0",
"sbb {w4}, 0",
"mov {w5}, rdx",
"sbb {w5}, 0",
"xor {w7:e}, {w7:e}",
"add {k}, qword ptr [{s} + 960]",
"adc {w1}, qword ptr [{s} + 968]",
"adc {w2}, qword ptr [{s} + 976]",
"adc {w3}, qword ptr [{s} + 984]",
"adc {w4}, qword ptr [{s} + 992]",
"adc {w5}, qword ptr [{s} + 1000]",
"adc {w7}, 0",
"mov qword ptr [{s} + 376], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w0:e}, 1",
"mov {w6}, {w3}",
"mov {c}, {w4}",
"add rax, {k}",
"adc rdx, {w1}",
"adc {w0}, {w2}",
"adc {w6}, 0",
"adc {c}, 0",
"adc {w5}, 0",
"adc {w7}, 0",
"cmovnz {k}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w0}",
"cmovnz {w3}, {w6}",
"cmovnz {w4}, {c}",
"cmovz {w5}, qword ptr [{s} + 376]",
"mov qword ptr [{s} + 336], {k}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 720]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 728]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 736]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 744]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 752]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 760]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 48]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 56]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 64]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 72]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 80]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 88]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 904], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 904]",
"mov qword ptr [{s} + 864], {w6}",
"mov qword ptr [{s} + 872], {w7}",
"mov qword ptr [{s} + 880], {w0}",
"mov qword ptr [{s} + 888], {w1}",
"mov qword ptr [{s} + 896], {w2}",
"mov qword ptr [{s} + 904], {w3}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 768]",
"mov {w1}, qword ptr [{s} + 776]",
"mov {w2}, qword ptr [{s} + 784]",
"mov {w3}, qword ptr [{s} + 792]",
"mov {w4}, qword ptr [{s} + 800]",
"mov {w5}, qword ptr [{s} + 808]",
"add {w0}, qword ptr [{s} + 768]",
"adc {w1}, qword ptr [{s} + 776]",
"adc {w2}, qword ptr [{s} + 784]",
"adc {w3}, qword ptr [{s} + 792]",
"adc {w4}, qword ptr [{s} + 800]",
"adc {w5}, qword ptr [{s} + 808]",
"adc {w6}, 0",
"mov qword ptr [{s} + 856], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 856]",
"mov qword ptr [{s} + 816], {w0}",
"mov qword ptr [{s} + 824], {w1}",
"mov qword ptr [{s} + 832], {w2}",
"mov qword ptr [{s} + 840], {w3}",
"mov qword ptr [{s} + 848], {w4}",
"mov qword ptr [{s} + 856], {w5}",
"mov {w0}, qword ptr [{s} + 240]",
"mov {w1}, qword ptr [{s} + 248]",
"mov {w2}, qword ptr [{s} + 256]",
"mov {w3}, qword ptr [{s} + 264]",
"mov {w4}, qword ptr [{s} + 272]",
"mov {w5}, qword ptr [{s} + 280]",
"sub {w0}, qword ptr [{s} + 720]",
"sbb {w1}, qword ptr [{s} + 728]",
"sbb {w2}, qword ptr [{s} + 736]",
"sbb {w3}, qword ptr [{s} + 744]",
"sbb {w4}, qword ptr [{s} + 752]",
"sbb {w5}, qword ptr [{s} + 760]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 240], {w0}",
"mov qword ptr [{s} + 248], {w1}",
"mov qword ptr [{s} + 256], {w2}",
"mov qword ptr [{s} + 264], {w3}",
"mov qword ptr [{s} + 272], {w4}",
"mov qword ptr [{s} + 280], {w5}",
"mov {w0}, qword ptr [{s} + 240]",
"mov {w1}, qword ptr [{s} + 248]",
"mov {w2}, qword ptr [{s} + 256]",
"mov {w3}, qword ptr [{s} + 264]",
"mov {w4}, qword ptr [{s} + 272]",
"mov {w5}, qword ptr [{s} + 280]",
"sub {w0}, qword ptr [{s} + 816]",
"sbb {w1}, qword ptr [{s} + 824]",
"sbb {w2}, qword ptr [{s} + 832]",
"sbb {w3}, qword ptr [{s} + 840]",
"sbb {w4}, qword ptr [{s} + 848]",
"sbb {w5}, qword ptr [{s} + 856]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 240], {w0}",
"mov qword ptr [{s} + 248], {w1}",
"mov qword ptr [{s} + 256], {w2}",
"mov qword ptr [{s} + 264], {w3}",
"mov qword ptr [{s} + 272], {w4}",
"mov qword ptr [{s} + 280], {w5}",
"mov {w0}, qword ptr [{s} + 768]",
"mov {w1}, qword ptr [{s} + 776]",
"mov {w2}, qword ptr [{s} + 784]",
"mov {w3}, qword ptr [{s} + 792]",
"mov {w4}, qword ptr [{s} + 800]",
"mov {w5}, qword ptr [{s} + 808]",
"sub {w0}, qword ptr [{s} + 240]",
"sbb {w1}, qword ptr [{s} + 248]",
"sbb {w2}, qword ptr [{s} + 256]",
"sbb {w3}, qword ptr [{s} + 264]",
"sbb {w4}, qword ptr [{s} + 272]",
"sbb {w5}, qword ptr [{s} + 280]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 912], {w0}",
"mov qword ptr [{s} + 920], {w1}",
"mov qword ptr [{s} + 928], {w2}",
"mov qword ptr [{s} + 936], {w3}",
"mov qword ptr [{s} + 944], {w4}",
"mov qword ptr [{s} + 952], {w5}",
"mov {w0}, qword ptr [{s} + 336]",
"mov {w1}, qword ptr [{s} + 344]",
"mov {w2}, qword ptr [{s} + 352]",
"mov {w3}, qword ptr [{s} + 360]",
"mov {w4}, qword ptr [{s} + 368]",
"mov {w5}, qword ptr [{s} + 376]",
"sub {w0}, qword ptr [{s} + 480]",
"sbb {w1}, qword ptr [{s} + 488]",
"sbb {w2}, qword ptr [{s} + 496]",
"sbb {w3}, qword ptr [{s} + 504]",
"sbb {w4}, qword ptr [{s} + 512]",
"sbb {w5}, qword ptr [{s} + 520]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 336], {w0}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"xor {w0:e}, {w0:e}",
"xor {w1:e}, {w1:e}",
"xor {w2:e}, {w2:e}",
"xor {w3:e}, {w3:e}",
"xor {w4:e}, {w4:e}",
"xor {w5:e}, {w5:e}",
"xor {w6:e}, {w6:e}",
"mov {k}, 0xffffffff00000001",
"mov rdx, qword ptr [{s} + 912]",
"xor {w7:e}, {w7:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mov eax, 0",
"adcx {w6}, rax",
"adox {w7}, rax",
"adcx {w7}, rax",
"mov rdx, {w0}",
"shl rdx, 32",
"add rdx, {w0}",
"mulx rax, {w0}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w0}, {c}, {c}",
"add rax, {c}",
"adc {w0}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w1}, rax",
"sbb {w2}, {w0}",
"sbb {w3}, {c}",
"sbb {w4}, 0",
"sbb {w5}, 0",
"sbb rdx, 0",
"add {w6}, rdx",
"adc {w7}, 0",
"mov rdx, qword ptr [{s} + 920]",
"xor {w0:e}, {w0:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mov eax, 0",
"adcx {w7}, rax",
"adox {w0}, rax",
"adcx {w0}, rax",
"mov rdx, {w1}",
"shl rdx, 32",
"add rdx, {w1}",
"mulx rax, {w1}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w1}, {c}, {c}",
"add rax, {c}",
"adc {w1}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w2}, rax",
"sbb {w3}, {w1}",
"sbb {w4}, {c}",
"sbb {w5}, 0",
"sbb {w6}, 0",
"sbb rdx, 0",
"add {w7}, rdx",
"adc {w0}, 0",
"mov rdx, qword ptr [{s} + 928]",
"xor {w1:e}, {w1:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mov eax, 0",
"adcx {w0}, rax",
"adox {w1}, rax",
"adcx {w1}, rax",
"mov rdx, {w2}",
"shl rdx, 32",
"add rdx, {w2}",
"mulx rax, {w2}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w2}, {c}, {c}",
"add rax, {c}",
"adc {w2}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w3}, rax",
"sbb {w4}, {w2}",
"sbb {w5}, {c}",
"sbb {w6}, 0",
"sbb {w7}, 0",
"sbb rdx, 0",
"add {w0}, rdx",
"adc {w1}, 0",
"mov rdx, qword ptr [{s} + 936]",
"xor {w2:e}, {w2:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w3}, rax",
"adox {w4}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mov eax, 0",
"adcx {w1}, rax",
"adox {w2}, rax",
"adcx {w2}, rax",
"mov rdx, {w3}",
"shl rdx, 32",
"add rdx, {w3}",
"mulx rax, {w3}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w3}, {c}, {c}",
"add rax, {c}",
"adc {w3}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w4}, rax",
"sbb {w5}, {w3}",
"sbb {w6}, {c}",
"sbb {w7}, 0",
"sbb {w0}, 0",
"sbb rdx, 0",
"add {w1}, rdx",
"adc {w2}, 0",
"mov rdx, qword ptr [{s} + 944]",
"xor {w3:e}, {w3:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w4}, rax",
"adox {w5}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mov eax, 0",
"adcx {w2}, rax",
"adox {w3}, rax",
"adcx {w3}, rax",
"mov rdx, {w4}",
"shl rdx, 32",
"add rdx, {w4}",
"mulx rax, {w4}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w4}, {c}, {c}",
"add rax, {c}",
"adc {w4}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w5}, rax",
"sbb {w6}, {w4}",
"sbb {w7}, {c}",
"sbb {w0}, 0",
"sbb {w1}, 0",
"sbb rdx, 0",
"add {w2}, rdx",
"adc {w3}, 0",
"mov rdx, qword ptr [{s} + 952]",
"xor {w4:e}, {w4:e}",
"mulx {c}, rax, qword ptr [{s} + 432]",
"adcx {w5}, rax",
"adox {w6}, {c}",
"mulx {c}, rax, qword ptr [{s} + 440]",
"adcx {w6}, rax",
"adox {w7}, {c}",
"mulx {c}, rax, qword ptr [{s} + 448]",
"adcx {w7}, rax",
"adox {w0}, {c}",
"mulx {c}, rax, qword ptr [{s} + 456]",
"adcx {w0}, rax",
"adox {w1}, {c}",
"mulx {c}, rax, qword ptr [{s} + 464]",
"adcx {w1}, rax",
"adox {w2}, {c}",
"mulx {c}, rax, qword ptr [{s} + 472]",
"adcx {w2}, rax",
"adox {w3}, {c}",
"mov eax, 0",
"adcx {w3}, rax",
"adox {w4}, rax",
"adcx {w4}, rax",
"mov rdx, {w5}",
"shl rdx, 32",
"add rdx, {w5}",
"mulx rax, {w5}, {k}",
"mov {c:e}, 0xffffffff",
"mulx {w5}, {c}, {c}",
"add rax, {c}",
"adc {w5}, rdx",
"mov {c:e}, 0",
"adc {c}, 0",
"sub {w6}, rax",
"sbb {w7}, {w5}",
"sbb {w0}, {c}",
"sbb {w1}, 0",
"sbb {w2}, 0",
"sbb rdx, 0",
"add {w3}, rdx",
"adc {w4}, 0",
"mov qword ptr [{s} + 328], {w3}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w5:e}, 1",
"mov {c}, {w1}",
"mov {k}, {w2}",
"add rax, {w6}",
"adc rdx, {w7}",
"adc {w5}, {w0}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w3}, 0",
"adc {w4}, 0",
"cmovnz {w6}, rax",
"cmovnz {w7}, rdx",
"cmovnz {w0}, {w5}",
"cmovnz {w1}, {c}",
"cmovnz {w2}, {k}",
"cmovz {w3}, qword ptr [{s} + 328]",
"mov qword ptr [{s} + 288], {w6}",
"mov qword ptr [{s} + 296], {w7}",
"mov qword ptr [{s} + 304], {w0}",
"mov qword ptr [{s} + 312], {w1}",
"mov qword ptr [{s} + 320], {w2}",
"mov qword ptr [{s} + 328], {w3}",
"mov {w0}, qword ptr [{s} + 336]",
"mov {w1}, qword ptr [{s} + 344]",
"mov {w2}, qword ptr [{s} + 352]",
"mov {w3}, qword ptr [{s} + 360]",
"mov {w4}, qword ptr [{s} + 368]",
"mov {w5}, qword ptr [{s} + 376]",
"sub {w0}, qword ptr [{s} + 624]",
"sbb {w1}, qword ptr [{s} + 632]",
"sbb {w2}, qword ptr [{s} + 640]",
"sbb {w3}, qword ptr [{s} + 648]",
"sbb {w4}, qword ptr [{s} + 656]",
"sbb {w5}, qword ptr [{s} + 664]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 336], {w0}",
"mov qword ptr [{s} + 344], {w1}",
"mov qword ptr [{s} + 352], {w2}",
"mov qword ptr [{s} + 360], {w3}",
"mov qword ptr [{s} + 368], {w4}",
"mov qword ptr [{s} + 376], {w5}",
"xor {w6:e}, {w6:e}",
"mov {w0}, qword ptr [{s} + 864]",
"mov {w1}, qword ptr [{s} + 872]",
"mov {w2}, qword ptr [{s} + 880]",
"mov {w3}, qword ptr [{s} + 888]",
"mov {w4}, qword ptr [{s} + 896]",
"mov {w5}, qword ptr [{s} + 904]",
"add {w0}, qword ptr [{s} + 864]",
"adc {w1}, qword ptr [{s} + 872]",
"adc {w2}, qword ptr [{s} + 880]",
"adc {w3}, qword ptr [{s} + 888]",
"adc {w4}, qword ptr [{s} + 896]",
"adc {w5}, qword ptr [{s} + 904]",
"adc {w6}, 0",
"mov qword ptr [{s} + 904], {w5}",
"mov rax, 0xffffffff00000001",
"mov edx, 0xffffffff",
"mov {w7:e}, 1",
"mov {c}, {w3}",
"mov {k}, {w4}",
"add rax, {w0}",
"adc rdx, {w1}",
"adc {w7}, {w2}",
"adc {c}, 0",
"adc {k}, 0",
"adc {w5}, 0",
"adc {w6}, 0",
"cmovnz {w0}, rax",
"cmovnz {w1}, rdx",
"cmovnz {w2}, {w7}",
"cmovnz {w3}, {c}",
"cmovnz {w4}, {k}",
"cmovz {w5}, qword ptr [{s} + 904]",
"mov qword ptr [{s} + 864], {w0}",
"mov qword ptr [{s} + 872], {w1}",
"mov qword ptr [{s} + 880], {w2}",
"mov qword ptr [{s} + 888], {w3}",
"mov qword ptr [{s} + 896], {w4}",
"mov qword ptr [{s} + 904], {w5}",
"mov {w0}, qword ptr [{s} + 288]",
"mov {w1}, qword ptr [{s} + 296]",
"mov {w2}, qword ptr [{s} + 304]",
"mov {w3}, qword ptr [{s} + 312]",
"mov {w4}, qword ptr [{s} + 320]",
"mov {w5}, qword ptr [{s} + 328]",
"sub {w0}, qword ptr [{s} + 864]",
"sbb {w1}, qword ptr [{s} + 872]",
"sbb {w2}, qword ptr [{s} + 880]",
"sbb {w3}, qword ptr [{s} + 888]",
"sbb {w4}, qword ptr [{s} + 896]",
"sbb {w5}, qword ptr [{s} + 904]",
"sbb {c}, {c}",
"mov eax, 0xffffffff",
"and rax, {c}",
"mov rdx, {c}",
"shl rdx, 32",
"mov {w6}, {c}",
"and {w6}, -2",
"add {w0}, rax",
"adc {w1}, rdx",
"adc {w2}, {w6}",
"adc {w3}, {c}",
"adc {w4}, {c}",
"adc {w5}, {c}",
"mov qword ptr [{s} + 288], {w0}",
"mov qword ptr [{s} + 296], {w1}",
"mov qword ptr [{s} + 304], {w2}",
"mov qword ptr [{s} + 312], {w3}",
"mov qword ptr [{s} + 320], {w4}",
"mov qword ptr [{s} + 328], {w5}",
s = in(reg) buf.as_mut_ptr(),
w0 = out(reg) _,
w1 = out(reg) _,
w2 = out(reg) _,
w3 = out(reg) _,
w4 = out(reg) _,
w5 = out(reg) _,
w6 = out(reg) _,
w7 = out(reg) _,
c = out(reg) _,
k = out(reg) _,
out("rax") _,
out("rdx") _,
options(nostack),
);
}
}
#[allow(dead_code)]
pub const ADD_AFFINE_X1: usize = 0;
#[allow(dead_code)]
pub const ADD_AFFINE_Y1: usize = 1;
#[allow(dead_code)]
pub const ADD_AFFINE_Z1: usize = 2;
#[allow(dead_code)]
pub const ADD_AFFINE_X2: usize = 3;
#[allow(dead_code)]
pub const ADD_AFFINE_Y2: usize = 4;
#[allow(dead_code)]
pub const ADD_AFFINE_X3: usize = 5;
#[allow(dead_code)]
pub const ADD_AFFINE_Y3: usize = 6;
#[allow(dead_code)]
pub const ADD_AFFINE_Z3: usize = 7;
#[allow(dead_code)]
pub const ADD_AFFINE_H: usize = 8;
#[allow(dead_code)]
pub const ADD_AFFINE_R: usize = 9;