#![allow(non_upper_case_globals)] mod uint { #[inline(always)] pub fn split(a: u64) -> (u64, u64) { (a >> 32, a & 0xFFFF_FFFF) } #[inline(always)] #[doc(hidden)] pub fn mul_u32(a: (u64, u64), b: u64, carry: u64) -> (u64, u64) { let upper = b * a.0; let lower = b * a.1; let (res1, overflow1) = lower.overflowing_add(upper << 32); let (res2, overflow2) = res1.overflowing_add(carry); let carry = (upper >> 32) + overflow1 as u64 + overflow2 as u64; (res2, carry) } } pub struct UINT(pub [u64; 16]); impl UINT { pub fn from_dec_str() -> Self { UINT(Default::default()) } #[inline(always)] pub fn overflowing_mul(self, other: UINT) -> (UINT, bool) { { { let ret: [u64; 16 * 2] = { { #![allow(unused_assignments)] let UINT(ref me) = self; let UINT(ref you) = other; let mut ret = [0u64; 2 * 16]; { { const i: usize = 0; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 1; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 2; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 3; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 4; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 5; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 6; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 7; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 8; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 9; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 10; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 11; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 12; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 13; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 14; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } } { const i: usize = 0 + 15; { let mut carry = 0u64; let (b_u, b_l) = uint::split(you[i]); { { const j: usize = 0; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 1; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 2; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 3; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 4; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 5; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 6; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 7; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 8; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 9; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 10; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 11; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 12; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 13; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 14; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } } { const j: usize = 0 + 15; { if me[j] != 0 || carry != 0 { let a = uint::split(me[j]); let (c_l, overflow_l) = uint::mul_u32(a, b_l, ret[i + j]); let (c_u, overflow_u) = uint::mul_u32(a, b_u, c_l >> 32); ret[i + j] = (c_l & 0xFFFFFFFF) + (c_u << 32); let res = (c_u >> 32) + (overflow_u << 32); let (res, o1) = res.overflowing_add(overflow_l + carry); let (res, o2) = res.overflowing_add(ret[i + j + 1]); ret[i + j + 1] = res; carry = (o1 | o2) as u64; } } }; } } }; } ret } }; let ret: [[u64; 16]; 2] = unsafe { std::mem::transmute(ret) }; #[inline(always)] fn any_nonzero(arr: &[u64; 16]) -> bool { { { const i: usize = 0; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 1; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 2; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 3; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 4; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 5; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 6; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 7; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 8; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 9; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 10; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 11; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 12; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 13; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 14; { if arr[i] != 0 { return true; } } } { const i: usize = 0 + 15; { if arr[i] != 0 { return true; } } }; } false } (UINT(ret[0]), any_nonzero(&ret[1])) } } } } fn main() { let a = UINT::from_dec_str(); let b = UINT::from_dec_str(); let _ = a.overflowing_mul(b); }