1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
λ x x0 : word64 * word64 * word64 * word64,
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffff);
uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0x0);
uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffffff00000001L);
ℤ x40 = Op (Syntax.Opp (Syntax.TWord 3) Syntax.TZ) (Return x39);
uint64_t _, ℤ x43 = addcarryx_u64ℤ(0x0, x40, x27);
uint64_t x44 = x43 == 0 ? x38 : x26;
uint64_t x45 = x43 == 0 ? x35 : x23;
uint64_t x46 = x43 == 0 ? x32 : x20;
uint64_t x47 = x43 == 0 ? x29 : x17;
return (x44, x45, x46, x47))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
|