#[unsafe(no_mangle)] fn gcd(mut a: usize, mut b: usize) -> usize { // To make assembly cleaner, remainder panic has been removed. while unsafe { a.checked_rem(b).unwrap_unchecked() } != 0 { [a, b] = [b, unsafe { a.checked_rem(b).unwrap_unchecked() }]; } b } #[unsafe(no_mangle)] fn gcd2(mut a: usize, mut b: usize) -> usize { while unsafe { a.checked_rem(b).unwrap_unchecked() } != 0 { let t = b; b = a % b; a = t; } b }