#![allow(non_upper_case_globals, unused_macros, unused_imports)]
use crate::low::macros::*;
pub(crate) fn bignum_emontredc_8n(z: &mut [u64], m: &[u64], w: u64) -> u64 {
let ret: u64;
debug_assert!(z.len() == m.len() * 2);
debug_assert!(z.len().is_multiple_of(8));
unsafe {
core::arch::asm!(
Q!(" endbr64 " ),
Q!(" push " "rbp"),
Q!(" push " "rbx"),
Q!(" push " "r12"),
Q!(" push " "r13"),
Q!(" push " "r14"),
Q!(" push " "r15"),
Q!(" xor " "eax, eax"),
Q!(" shr " "rdi, 0x3"),
Q!(" je " Label!("bignum_emontredc_8n_end", 2, After)),
Q!(" lea " "rbx, [rdi -0x1]"),
Q!(" shl " "rbx, 0x6"),
Q!(" push " "rbx"),
Q!(" push " "rdi"),
Q!(" sub " "rsp, 0x10"),
Q!(" mov " "QWORD PTR [rsp], 0x0"),
Q!(" mov " "rdi, rdx"),
Q!(Label!("bignum_emontredc_8n_outerloop", 3) ":"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mov " "r8, QWORD PTR [rsi]"),
Q!(" mulx " "rax, rdx, r8"),
Q!(" mov " "QWORD PTR [rsi], rdx"),
Q!(" mov " "r9, QWORD PTR [rsi + 0x8]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mov " "r10, QWORD PTR [rsi + 0x10]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mov " "r11, QWORD PTR [rsi + 0x18]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mov " "r12, QWORD PTR [rsi + 0x20]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mov " "r13, QWORD PTR [rsi + 0x28]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mov " "r14, QWORD PTR [rsi + 0x30]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mov " "r15, QWORD PTR [rsi + 0x38]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" adc " "r8, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r9"),
Q!(" mov " "QWORD PTR [rsi + 0x8], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" adc " "r9, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r10"),
Q!(" mov " "QWORD PTR [rsi + 0x10], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" adc " "r10, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r11"),
Q!(" mov " "QWORD PTR [rsi + 0x18], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" adc " "r11, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r12"),
Q!(" mov " "QWORD PTR [rsi + 0x20], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" adc " "r12, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r13"),
Q!(" mov " "QWORD PTR [rsi + 0x28], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" adc " "r13, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r14"),
Q!(" mov " "QWORD PTR [rsi + 0x30], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" adc " "r14, 0x0"),
Q!(" mov " "rdx, rcx"),
Q!(" xor " "eax, eax"),
Q!(" mulx " "rax, rdx, r15"),
Q!(" mov " "QWORD PTR [rsi + 0x38], rdx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x8]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x10]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x18]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x20]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x28]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x30]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rdi + 0x38]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" adc " "r15, 0x0"),
Q!(" mov " "rbp, rsi"),
Q!(" mov " "rax, QWORD PTR [rsp + 0x18]"),
Q!(" test " "rax, rax"),
Q!(" je " Label!("bignum_emontredc_8n_innerend", 4, After)),
Q!(" mov " "QWORD PTR [rsp + 0x8], rax"),
Q!(Label!("bignum_emontredc_8n_innerloop", 5) ":"),
Q!(" add " "rbp, 0x40"),
Q!(" add " "rdi, 0x40"),
Q!(" mov " "rdx, QWORD PTR [rdi]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r8, QWORD PTR [rbp + 0x0]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x0], r8"),
Q!(" mov " "r8d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" adc " "r8, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x8]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r9, QWORD PTR [rbp + 0x8]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x8], r9"),
Q!(" mov " "r9d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" adc " "r9, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x10]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r10, QWORD PTR [rbp + 0x10]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x10], r10"),
Q!(" mov " "r10d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" adc " "r10, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x18]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r11, QWORD PTR [rbp + 0x18]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x18], r11"),
Q!(" mov " "r11d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" adc " "r11, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x20]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r12, QWORD PTR [rbp + 0x20]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x20], r12"),
Q!(" mov " "r12d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" adc " "r12, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x28]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r13, QWORD PTR [rbp + 0x28]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x28], r13"),
Q!(" mov " "r13d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" adc " "r13, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x30]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r14, QWORD PTR [rbp + 0x30]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x30], r14"),
Q!(" mov " "r14d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" adc " "r14, 0x0"),
Q!(" mov " "rdx, QWORD PTR [rdi + 0x38]"),
Q!(" xor " "eax, eax"),
Q!(" adox " "r15, QWORD PTR [rbp + 0x38]"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi]"),
Q!(" adcx " "r15, rax"),
Q!(" adox " "r8, rbx"),
Q!(" mov " "QWORD PTR [rbp + 0x38], r15"),
Q!(" mov " "r15d, 0x0"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x8]"),
Q!(" adcx " "r8, rax"),
Q!(" adox " "r9, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x10]"),
Q!(" adcx " "r9, rax"),
Q!(" adox " "r10, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x18]"),
Q!(" adcx " "r10, rax"),
Q!(" adox " "r11, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x20]"),
Q!(" adcx " "r11, rax"),
Q!(" adox " "r12, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x28]"),
Q!(" adcx " "r12, rax"),
Q!(" adox " "r13, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x30]"),
Q!(" adcx " "r13, rax"),
Q!(" adox " "r14, rbx"),
Q!(" mulx " "rbx, rax, QWORD PTR [rsi + 0x38]"),
Q!(" adcx " "r14, rax"),
Q!(" adox " "r15, rbx"),
Q!(" adc " "r15, 0x0"),
Q!(" sub " "QWORD PTR [rsp + 0x8], 0x40"),
Q!(" jne " Label!("bignum_emontredc_8n_innerloop", 5, Before)),
Q!(" mov " "rax, QWORD PTR [rsp + 0x18]"),
Q!(Label!("bignum_emontredc_8n_innerend", 4) ":"),
Q!(" sub " "rdi, rax"),
Q!(" mov " "rbx, QWORD PTR [rsp]"),
Q!(" neg " "rbx"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x40], r8"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x48], r9"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x50], r10"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x58], r11"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x60], r12"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x68], r13"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x70], r14"),
Q!(" adc " "QWORD PTR [rsi + rax * 1 + 0x78], r15"),
Q!(" mov " "eax, 0x0"),
Q!(" adc " "rax, 0x0"),
Q!(" mov " "QWORD PTR [rsp], rax"),
Q!(" add " "rsi, 0x40"),
Q!(" sub " "QWORD PTR [rsp + 0x10], 0x1"),
Q!(" jne " Label!("bignum_emontredc_8n_outerloop", 3, Before)),
Q!(" pop " "rax"),
Q!(" add " "rsp, 0x18"),
Q!(Label!("bignum_emontredc_8n_end", 2) ":"),
Q!(" pop " "r15"),
Q!(" pop " "r14"),
Q!(" pop " "r13"),
Q!(" pop " "r12"),
Q!(" pop " "rbx"),
Q!(" pop " "rbp"),
inout("rdi") m.len() => _,
inout("rsi") z.as_mut_ptr() => _,
inout("rdx") m.as_ptr() => _,
inout("rcx") w => _,
out("rax") ret,
out("r10") _,
out("r11") _,
out("r12") _,
out("r13") _,
out("r14") _,
out("r15") _,
out("r8") _,
out("r9") _,
)
};
ret
}