https://github.com/mit-plv/fiat-crypto

sort by:
Revision Author Date Message Commit Date
230e572 WIP bounds 20 May 2022, 01:32:43 UTC
a97e8d9 WIP addcarray add 20 May 2022, 01:32:43 UTC
4bf58cd Fix commented out rsp adjustment 20 May 2022, 01:32:43 UTC
94764ee Update asm with swap args hack 20 May 2022, 01:32:43 UTC
ac40a32 Uncomment 20 May 2022, 01:32:43 UTC
f3ce789 WIP ``` check_args /* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul --no-wide-int --shiftr-avoid-uint1 --hints-file 'fiat-amd64/boringssl_intel_manual_mul_p256.asm' */ /* curve description: p256 */ /* machine_wordsize = 64 (from "64") */ /* requested operations: mul */ /* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */ /* */ /* NOTE: In addition to the bounds specified above each function, all */ /* functions synthesized for this Montgomery arithmetic require the */ /* input to be strictly less than the prime modulus (m), and also */ /* require the input to be in the unique saturated representation. */ /* All functions also ensure that these two properties are true of */ /* return values. */ /* */ /* Computed values: */ /* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) */ /* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ /* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */ /* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ In fiat_p256_mul: Error while checking for equivalence of syntax tree and assembly: The syntax tree: (λ x1 x2, let x3 := x1[1] (* : uint64_t *) in let x4 := x1[2] (* : uint64_t *) in let x5 := x1[3] (* : uint64_t *) in let x6 := x1[0] (* : uint64_t *) in let x7 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x8 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x9 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x10 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x11 := Z.add_get_carry(2^64, None, (x10₂, Some [0x0 ~> 0xffffffffffffffff], (x9₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x12 := Z.add_with_get_carry(2^64, None, (x11₂, Some [0x0 ~> 0x1], (x9₂, Some [0x0 ~> 0xffffffffffffffff], (x8₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x13 := Z.add_with_get_carry(2^64, None, (x12₂, Some [0x0 ~> 0x1], (x8₂, Some [0x0 ~> 0xffffffffffffffff], (x7₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x14 := x13₂ + x7₂ (* : uint64_t *) in let x15 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x16 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x17 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x18 := Z.add_get_carry(2^64, None, (x17₂, Some [0x0 ~> 0xffffffffffffffff], (x16₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x19 := x18₂ + x16₂ (* : uint64_t *) in let x20 := Z.add_get_carry(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (x17₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x21 := Z.add_with_get_carry(2^64, None, (x20₂, Some [0x0 ~> 0x1], (x11₁, Some [0x0 ~> 0xffffffffffffffff], (x18₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x22 := Z.add_with_get_carry(2^64, None, (x21₂, Some [0x0 ~> 0x1], (x12₁, Some [0x0 ~> 0xffffffffffffffff], (x19, Some [0x0 ~> 0xffffffffffffffff])))) in let x23 := Z.add_with_get_carry(2^64, None, (x22₂, Some [0x0 ~> 0x1], (x13₁, Some [0x0 ~> 0xffffffffffffffff], (x15₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x24 := Z.add_with_get_carry(2^64, None, (x23₂, Some [0x0 ~> 0x1], (x14, Some [0x0 ~> 0xffffffffffffffff], (x15₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x25 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x26 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x27 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x28 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x29 := Z.add_get_carry(2^64, None, (x28₂, Some [0x0 ~> 0xffffffffffffffff], (x27₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x30 := Z.add_with_get_carry(2^64, None, (x29₂, Some [0x0 ~> 0x1], (x27₂, Some [0x0 ~> 0xffffffffffffffff], (x26₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x31 := Z.add_with_get_carry(2^64, None, (x30₂, Some [0x0 ~> 0x1], (x26₂, Some [0x0 ~> 0xffffffffffffffff], (x25₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x32 := x31₂ + x25₂ (* : uint64_t *) in let x33 := Z.add_get_carry(2^64, None, (x21₁, Some [0x0 ~> 0xffffffffffffffff], (x28₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x34 := Z.add_with_get_carry(2^64, None, (x33₂, Some [0x0 ~> 0x1], (x22₁, Some [0x0 ~> 0xffffffffffffffff], (x29₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x35 := Z.add_with_get_carry(2^64, None, (x34₂, Some [0x0 ~> 0x1], (x23₁, Some [0x0 ~> 0xffffffffffffffff], (x30₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x36 := Z.add_with_get_carry(2^64, None, (x35₂, Some [0x0 ~> 0x1], (x24₁, Some [0x0 ~> 0xffffffffffffffff], (x31₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x37 := Z.add_with_get_carry(2^64, None, (x36₂, Some [0x0 ~> 0x1], (x24₂, Some [0x0 ~> 0x1], (x32, Some [0x0 ~> 0xffffffffffffffff])))) in let x38 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x39 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x40 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x41 := Z.add_get_carry(2^64, None, (x40₂, Some [0x0 ~> 0xffffffffffffffff], (x39₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x42 := x41₂ + x39₂ (* : uint64_t *) in let x43 := Z.add_get_carry(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (x40₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x44 := Z.add_with_get_carry(2^64, None, (x43₂, Some [0x0 ~> 0x1], (x34₁, Some [0x0 ~> 0xffffffffffffffff], (x41₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x45 := Z.add_with_get_carry(2^64, None, (x44₂, Some [0x0 ~> 0x1], (x35₁, Some [0x0 ~> 0xffffffffffffffff], (x42, Some [0x0 ~> 0xffffffffffffffff])))) in let x46 := Z.add_with_get_carry(2^64, None, (x45₂, Some [0x0 ~> 0x1], (x36₁, Some [0x0 ~> 0xffffffffffffffff], (x38₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x47 := Z.add_with_get_carry(2^64, None, (x46₂, Some [0x0 ~> 0x1], (x37₁, Some [0x0 ~> 0xffffffffffffffff], (x38₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x48 := x47₂ + x37₂ (* : uint64_t *) in let x49 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x50 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x51 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x52 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x53 := Z.add_get_carry(2^64, None, (x52₂, Some [0x0 ~> 0xffffffffffffffff], (x51₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x54 := Z.add_with_get_carry(2^64, None, (x53₂, Some [0x0 ~> 0x1], (x51₂, Some [0x0 ~> 0xffffffffffffffff], (x50₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x55 := Z.add_with_get_carry(2^64, None, (x54₂, Some [0x0 ~> 0x1], (x50₂, Some [0x0 ~> 0xffffffffffffffff], (x49₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x56 := x55₂ + x49₂ (* : uint64_t *) in let x57 := Z.add_get_carry(2^64, None, (x44₁, Some [0x0 ~> 0xffffffffffffffff], (x52₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x58 := Z.add_with_get_carry(2^64, None, (x57₂, Some [0x0 ~> 0x1], (x45₁, Some [0x0 ~> 0xffffffffffffffff], (x53₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x59 := Z.add_with_get_carry(2^64, None, (x58₂, Some [0x0 ~> 0x1], (x46₁, Some [0x0 ~> 0xffffffffffffffff], (x54₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x60 := Z.add_with_get_carry(2^64, None, (x59₂, Some [0x0 ~> 0x1], (x47₁, Some [0x0 ~> 0xffffffffffffffff], (x55₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x61 := Z.add_with_get_carry(2^64, None, (x60₂, Some [0x0 ~> 0x1], (x48, Some [0x0 ~> 0xffffffffffffffff], (x56, Some [0x0 ~> 0xffffffffffffffff])))) in let x62 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x63 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x64 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x65 := Z.add_get_carry(2^64, None, (x64₂, Some [0x0 ~> 0xffffffffffffffff], (x63₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x66 := x65₂ + x63₂ (* : uint64_t *) in let x67 := Z.add_get_carry(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (x64₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x68 := Z.add_with_get_carry(2^64, None, (x67₂, Some [0x0 ~> 0x1], (x58₁, Some [0x0 ~> 0xffffffffffffffff], (x65₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x69 := Z.add_with_get_carry(2^64, None, (x68₂, Some [0x0 ~> 0x1], (x59₁, Some [0x0 ~> 0xffffffffffffffff], (x66, Some [0x0 ~> 0xffffffffffffffff])))) in let x70 := Z.add_with_get_carry(2^64, None, (x69₂, Some [0x0 ~> 0x1], (x60₁, Some [0x0 ~> 0xffffffffffffffff], (x62₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x71 := Z.add_with_get_carry(2^64, None, (x70₂, Some [0x0 ~> 0x1], (x61₁, Some [0x0 ~> 0xffffffffffffffff], (x62₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x72 := x71₂ + x61₂ (* : uint64_t *) in let x73 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x74 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x75 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x76 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x77 := Z.add_get_carry(2^64, None, (x76₂, Some [0x0 ~> 0xffffffffffffffff], (x75₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x78 := Z.add_with_get_carry(2^64, None, (x77₂, Some [0x0 ~> 0x1], (x75₂, Some [0x0 ~> 0xffffffffffffffff], (x74₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x79 := Z.add_with_get_carry(2^64, None, (x78₂, Some [0x0 ~> 0x1], (x74₂, Some [0x0 ~> 0xffffffffffffffff], (x73₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x80 := x79₂ + x73₂ (* : uint64_t *) in let x81 := Z.add_get_carry(2^64, None, (x68₁, Some [0x0 ~> 0xffffffffffffffff], (x76₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x82 := Z.add_with_get_carry(2^64, None, (x81₂, Some [0x0 ~> 0x1], (x69₁, Some [0x0 ~> 0xffffffffffffffff], (x77₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x83 := Z.add_with_get_carry(2^64, None, (x82₂, Some [0x0 ~> 0x1], (x70₁, Some [0x0 ~> 0xffffffffffffffff], (x78₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x84 := Z.add_with_get_carry(2^64, None, (x83₂, Some [0x0 ~> 0x1], (x71₁, Some [0x0 ~> 0xffffffffffffffff], (x79₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x85 := Z.add_with_get_carry(2^64, None, (x84₂, Some [0x0 ~> 0x1], (x72, Some [0x0 ~> 0xffffffffffffffff], (x80, Some [0x0 ~> 0xffffffffffffffff])))) in let x86 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x87 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x88 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x89 := Z.add_get_carry(2^64, None, (x88₂, Some [0x0 ~> 0xffffffffffffffff], (x87₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x90 := x89₂ + x87₂ (* : uint64_t *) in let x91 := Z.add_get_carry(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (x88₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x92 := Z.add_with_get_carry(2^64, None, (x91₂, Some [0x0 ~> 0x1], (x82₁, Some [0x0 ~> 0xffffffffffffffff], (x89₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x93 := Z.add_with_get_carry(2^64, None, (x92₂, Some [0x0 ~> 0x1], (x83₁, Some [0x0 ~> 0xffffffffffffffff], (x90, Some [0x0 ~> 0xffffffffffffffff])))) in let x94 := Z.add_with_get_carry(2^64, None, (x93₂, Some [0x0 ~> 0x1], (x84₁, Some [0x0 ~> 0xffffffffffffffff], (x86₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x95 := Z.add_with_get_carry(2^64, None, (x94₂, Some [0x0 ~> 0x1], (x85₁, Some [0x0 ~> 0xffffffffffffffff], (x86₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x96 := x95₂ + x85₂ (* : uint64_t *) in let x97 := Z.sub_with_get_borrow(2^64, None, (0, None, (x92₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None)))) in let x98 := Z.sub_with_get_borrow(2^64, None, (x97₂, Some [0x0 ~> 0x1], (x93₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None)))) in let x99 := Z.sub_with_get_borrow(2^64, None, (x98₂, Some [0x0 ~> 0x1], (x94₁, Some [0x0 ~> 0xffffffffffffffff], (0, None)))) in let x100 := Z.sub_with_get_borrow(2^64, None, (x99₂, Some [0x0 ~> 0x1], (x95₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None)))) in let x101 := Z.sub_with_get_borrow(2^64, None, (x100₂, Some [0x0 ~> 0x1], (x96, Some [0x0 ~> 0xffffffffffffffff], (0, None)))) in let x102 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x97₁, Some [0x0 ~> 0xffffffffffffffff], (x92₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x103 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x98₁, Some [0x0 ~> 0xffffffffffffffff], (x93₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x104 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x99₁, Some [0x0 ~> 0xffffffffffffffff], (x94₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x105 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x100₁, Some [0x0 ~> 0xffffffffffffffff], (x95₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in x102 :: x103 :: x104 :: x105 :: [] ) which can be pretty-printed as: /* * Input Bounds: * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] * Output Bounds: * out1: None */ void f(uint64_t out1[4], const uint64_t arg1[4], const uint64_t arg2[4]) { uint64_t x1; uint64_t x2; uint64_t x3; uint64_t x4; uint64_t x5; uint64_t x6; uint64_t x7; uint64_t x8; uint64_t x9; uint64_t x10; uint64_t x11; uint64_t x12; uint64_t x13; uint1 x14; uint64_t x15; uint1 x16; uint64_t x17; uint1 x18; uint64_t x19; uint64_t x20; uint64_t x21; uint64_t x22; uint64_t x23; uint64_t x24; uint64_t x25; uint64_t x26; uint1 x27; uint64_t x28; uint64_t x29; uint1 x30; uint64_t x31; uint1 x32; uint64_t x33; uint1 x34; uint64_t x35; uint1 x36; uint64_t x37; uint1 x38; uint64_t x39; uint64_t x40; uint64_t x41; uint64_t x42; uint64_t x43; uint64_t x44; uint64_t x45; uint64_t x46; uint64_t x47; uint1 x48; uint64_t x49; uint1 x50; uint64_t x51; uint1 x52; uint64_t x53; uint64_t x54; uint1 x55; uint64_t x56; uint1 x57; uint64_t x58; uint1 x59; uint64_t x60; uint1 x61; uint64_t x62; uint1 x63; uint64_t x64; uint64_t x65; uint64_t x66; uint64_t x67; uint64_t x68; uint64_t x69; uint64_t x70; uint1 x71; uint64_t x72; uint64_t x73; uint1 x74; uint64_t x75; uint1 x76; uint64_t x77; uint1 x78; uint64_t x79; uint1 x80; uint64_t x81; uint1 x82; uint64_t x83; uint64_t x84; uint64_t x85; uint64_t x86; uint64_t x87; uint64_t x88; uint64_t x89; uint64_t x90; uint64_t x91; uint64_t x92; uint1 x93; uint64_t x94; uint1 x95; uint64_t x96; uint1 x97; uint64_t x98; uint64_t x99; uint1 x100; uint64_t x101; uint1 x102; uint64_t x103; uint1 x104; uint64_t x105; uint1 x106; uint64_t x107; uint1 x108; uint64_t x109; uint64_t x110; uint64_t x111; uint64_t x112; uint64_t x113; uint64_t x114; uint64_t x115; uint1 x116; uint64_t x117; uint64_t x118; uint1 x119; uint64_t x120; uint1 x121; uint64_t x122; uint1 x123; uint64_t x124; uint1 x125; uint64_t x126; uint1 x127; uint64_t x128; uint64_t x129; uint64_t x130; uint64_t x131; uint64_t x132; uint64_t x133; uint64_t x134; uint64_t x135; uint64_t x136; uint64_t x137; uint1 x138; uint64_t x139; uint1 x140; uint64_t x141; uint1 x142; uint64_t x143; uint64_t x144; uint1 x145; uint64_t x146; uint1 x147; uint64_t x148; uint1 x149; uint64_t x150; uint1 x151; uint64_t x152; uint1 x153; uint64_t x154; uint64_t x155; uint64_t x156; uint64_t x157; uint64_t x158; uint64_t x159; uint64_t x160; uint1 x161; uint64_t x162; uint64_t x163; uint1 x164; uint64_t x165; uint1 x166; uint64_t x167; uint1 x168; uint64_t x169; uint1 x170; uint64_t x171; uint1 x172; uint64_t x173; uint64_t x174; uint1 x175; uint64_t x176; uint1 x177; uint64_t x178; uint1 x179; uint64_t x180; uint1 x181; uint64_t x182; uint1 x183; uint64_t x184; uint64_t x185; uint64_t x186; uint64_t x187; x1 = (arg1[1]); x2 = (arg1[2]); x3 = (arg1[3]); x4 = (arg1[0]); mulx_u64(&x5, &x6, x4, (arg2[3])); mulx_u64(&x7, &x8, x4, (arg2[2])); mulx_u64(&x9, &x10, x4, (arg2[1])); mulx_u64(&x11, &x12, x4, (arg2[0])); addcarryx_u64(&x13, &x14, 0x0, x12, x9); addcarryx_u64(&x15, &x16, x14, x10, x7); addcarryx_u64(&x17, &x18, x16, x8, x5); x19 = (x18 + x6); mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x26, &x27, 0x0, x25, x22); x28 = (x27 + x23); addcarryx_u64(&x29, &x30, 0x0, x11, x24); addcarryx_u64(&x31, &x32, x30, x13, x26); addcarryx_u64(&x33, &x34, x32, x15, x28); addcarryx_u64(&x35, &x36, x34, x17, x20); addcarryx_u64(&x37, &x38, x36, x19, x21); mulx_u64(&x39, &x40, x1, (arg2[3])); mulx_u64(&x41, &x42, x1, (arg2[2])); mulx_u64(&x43, &x44, x1, (arg2[1])); mulx_u64(&x45, &x46, x1, (arg2[0])); addcarryx_u64(&x47, &x48, 0x0, x46, x43); addcarryx_u64(&x49, &x50, x48, x44, x41); addcarryx_u64(&x51, &x52, x50, x42, x39); x53 = (x52 + x40); addcarryx_u64(&x54, &x55, 0x0, x31, x45); addcarryx_u64(&x56, &x57, x55, x33, x47); addcarryx_u64(&x58, &x59, x57, x35, x49); addcarryx_u64(&x60, &x61, x59, x37, x51); addcarryx_u64(&x62, &x63, x61, x38, x53); mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x70, &x71, 0x0, x69, x66); x72 = (x71 + x67); addcarryx_u64(&x73, &x74, 0x0, x54, x68); addcarryx_u64(&x75, &x76, x74, x56, x70); addcarryx_u64(&x77, &x78, x76, x58, x72); addcarryx_u64(&x79, &x80, x78, x60, x64); addcarryx_u64(&x81, &x82, x80, x62, x65); x83 = ((uint64_t)x82 + x63); mulx_u64(&x84, &x85, x2, (arg2[3])); mulx_u64(&x86, &x87, x2, (arg2[2])); mulx_u64(&x88, &x89, x2, (arg2[1])); mulx_u64(&x90, &x91, x2, (arg2[0])); addcarryx_u64(&x92, &x93, 0x0, x91, x88); addcarryx_u64(&x94, &x95, x93, x89, x86); addcarryx_u64(&x96, &x97, x95, x87, x84); x98 = (x97 + x85); addcarryx_u64(&x99, &x100, 0x0, x75, x90); addcarryx_u64(&x101, &x102, x100, x77, x92); addcarryx_u64(&x103, &x104, x102, x79, x94); addcarryx_u64(&x105, &x106, x104, x81, x96); addcarryx_u64(&x107, &x108, x106, x83, x98); mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x115, &x116, 0x0, x114, x111); x117 = (x116 + x112); addcarryx_u64(&x118, &x119, 0x0, x99, x113); addcarryx_u64(&x120, &x121, x119, x101, x115); addcarryx_u64(&x122, &x123, x121, x103, x117); addcarryx_u64(&x124, &x125, x123, x105, x109); addcarryx_u64(&x126, &x127, x125, x107, x110); x128 = ((uint64_t)x127 + x108); mulx_u64(&x129, &x130, x3, (arg2[3])); mulx_u64(&x131, &x132, x3, (arg2[2])); mulx_u64(&x133, &x134, x3, (arg2[1])); mulx_u64(&x135, &x136, x3, (arg2[0])); addcarryx_u64(&x137, &x138, 0x0, x136, x133); addcarryx_u64(&x139, &x140, x138, x134, x131); addcarryx_u64(&x141, &x142, x140, x132, x129); x143 = (x142 + x130); addcarryx_u64(&x144, &x145, 0x0, x120, x135); addcarryx_u64(&x146, &x147, x145, x122, x137); addcarryx_u64(&x148, &x149, x147, x124, x139); addcarryx_u64(&x150, &x151, x149, x126, x141); addcarryx_u64(&x152, &x153, x151, x128, x143); mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x160, &x161, 0x0, x159, x156); x162 = (x161 + x157); addcarryx_u64(&x163, &x164, 0x0, x144, x158); addcarryx_u64(&x165, &x166, x164, x146, x160); addcarryx_u64(&x167, &x168, x166, x148, x162); addcarryx_u64(&x169, &x170, x168, x150, x154); addcarryx_u64(&x171, &x172, x170, x152, x155); x173 = ((uint64_t)x172 + x153); subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); subborrowx_u64(&x178, &x179, x177, x169, 0x0); subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); subborrowx_u64(&x182, &x183, x181, x173, 0x0); cmovznz_u64(&x184, x183, x174, x165); cmovznz_u64(&x185, x183, x176, x167); cmovznz_u64(&x186, x183, x178, x169); cmovznz_u64(&x187, x183, x180, x171); out1[0] = x184; out1[1] = x185; out1[2] = x186; out1[3] = x187; } Assembly: ecp_nistz256_mul_mont: ;push rbp ;push rbx ;push r12 ;push r13 ;push r14 ;push r15 mov rbx, rdx mov rax, QWORD PTR [rbx] mov r9, QWORD PTR [rsi] mov r10, QWORD PTR [rsi + 0x08 * 1] mov r11, QWORD PTR [rsi + 0x08 * 2] mov r12, QWORD PTR [rsi + 0x08 * 3] mov rbp, rax mul r9 mov r14, 4294967295 mov r8, rax mov rax, rbp mov r9, rdx mul r10 mov r15, 18446744069414584321 add r9, rax mov rax, rbp adc rdx, 0 mov r10, rdx mul r11 add r10, rax mov rax, rbp adc rdx, 0 mov r11, rdx mul r12 add r11, rax mov rax, r8 adc rdx, 0 xor r13, r13 mov r12, rdx mov rbp, r8 shl r8, 32 mul r15 shr rbp, 32 add r9, r8 adc r10, rbp adc r11, rax mov rax, QWORD PTR [rbx + 0x08 * 1] adc r12, rdx adc r13, 0 xor r8, r8 mov rbp, rax mul QWORD PTR [rsi] add r9, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r10, rcx adc rdx, 0 add r10, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r11, rcx adc rdx, 0 add r11, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r12, rcx adc rdx, 0 add r12, rax mov rax, r9 adc r13, rdx adc r8, 0 mov rbp, r9 shl r9, 32 mul r15 shr rbp, 32 add r10, r9 adc r11, rbp adc r12, rax mov rax, QWORD PTR [rbx + 0x08 * 2] adc r13, rdx adc r8, 0 xor r9, r9 mov rbp, rax mul QWORD PTR [rsi] add r10, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r11, rcx adc rdx, 0 add r11, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r12, rcx adc rdx, 0 add r12, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r13, rcx adc rdx, 0 add r13, rax mov rax, r10 adc r8, rdx adc r9, 0 mov rbp, r10 shl r10, 32 mul r15 shr rbp, 32 add r11, r10 adc r12, rbp adc r13, rax mov rax, QWORD PTR [rbx + 0x08 * 3] adc r8, rdx adc r9, 0 xor r10, r10 mov rbp, rax mul QWORD PTR [rsi] add r11, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r12, rcx adc rdx, 0 add r12, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r13, rcx adc rdx, 0 add r13, rax mov rax, rbp adc rdx, 0 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r8, rcx adc rdx, 0 add r8, rax mov rax, r11 adc r9, rdx adc r10, 0 mov rbp, r11 shl r11, 32 mul r15 shr rbp, 32 add r12, r11 adc r13, rbp mov rcx, r12 adc r8, rax adc r9, rdx mov rbp, r13 adc r10, 0 sub r12, 18446744073709551615 mov rbx, r8 sbb r13, r14 sbb r8, 0 mov rdx, r9 sbb r9, r15 sbb r10, 0 cmovb r12, rcx cmovb r13, rbp mov QWORD PTR [rdi], r12 cmovb r8, rbx mov QWORD PTR [rdi + 0x08 * 1], r13 cmovb r9, rdx mov QWORD PTR [rdi + 0x08 * 2], r8 mov QWORD PTR [rdi + 0x08 * 3], r9 ;mov r15,QWORD PTR [rsp] ;mov r14,QWORD PTR [rsp+0x8] ;mov r13,QWORD PTR [rsp+0x10] ;mov r12,QWORD PTR [rsp+0x18] ;mov rbx,QWORD PTR [rsp+0x20] ;mov rbp,QWORD PTR [rsp+0x28] ;lea rsp,[rsp+0x30] ret Equivalence checking error: Unable to unify: In environment: (*symbolic_state*) {| dag_state := (*dag*)[ (*0*) (old 64 0, []); (*1*) (old 64 1, []); (*2*) (old 64 2, []); (*3*) (old 64 3, []); (*4*) (old 64 4, []); (*5*) (old 64 5, []); (*6*) (old 64 6, []); (*7*) (old 64 7, []); (*8*) (const 0, []); (*9*) (const 18446744073709551616, []); (*10*) (const 64, []); (*11*) (mulZ, [3, 4]); (*12*) (mul 64, [3, 4]); (*13*) (shrZ, [11, 10]); (*14*) (shr 64, [11, 10]); (*15*) (mulZ, [3, 5]); (*16*) (mul 64, [3, 5]); (*17*) (shrZ, [15, 10]); (*18*) (shr 64, [15, 10]); (*19*) (mulZ, [3, 6]); (*20*) (mul 64, [3, 6]); (*21*) (shrZ, [19, 10]); (*22*) (shr 64, [19, 10]); (*23*) (mulZ, [3, 7]); (*24*) (mul 64, [3, 7]); (*25*) (shrZ, [23, 10]); (*26*) (shr 64, [23, 10]); (*27*) (add 64, [20, 26]); (*28*) (addcarryZ 64, [26, 20]); (*29*) (addcarry 64, [20, 26]); (*30*) (add 64, [16, 22, 29]); (*31*) (addcarryZ 64, [29, 22, 16]); (*32*) (addcarry 64, [16, 22, 29]); (*33*) (add 64, [12, 18, 32]); (*34*) (addcarryZ 64, [32, 18, 12]); (*35*) (addcarry 64, [12, 18, 32]); (*36*) (addZ, [35, 14]); (*37*) (add 64, [14, 35]); (*38*) (const 18446744069414584321, []); (*39*) (mulZ, [24, 38]); (*40*) (mul 64, [3, 7, 38]); (*41*) (shrZ, [39, 10]); (*42*) (shr 64, [39, 10]); (*43*) (const 4294967295, []); (*44*) (mulZ, [24, 43]); (*45*) (mul 64, [3, 7, 43]); (*46*) (shrZ, [44, 10]); (*47*) (shr 64, [44, 10]); (*48*) (const 18446744073709551615, []); (*49*) (mulZ, [24, 48]); (*50*) (mul 64, [3, 7, 48]); (*51*) (shrZ, [49, 10]); (*52*) (shr 64, [49, 10]); (*53*) (add 64, [45, 52]); (*54*) (addcarryZ 64, [52, 45]); (*55*) (addcarry 64, [45, 52]); (*56*) (addZ, [55, 47]); (*57*) (add 64, [47, 55]); (*58*) (mul 64, [3, 7, 8]); (*59*) (add 64, [58]); (*60*) (addcarryZ 64, [24, 50]); (*61*) (addcarry 64, [24, 50]); (*62*) (add 64, [20, 26, 45, 52, 61]); (*63*) (addcarryZ 64, [61, 27, 53]); (*64*) (addcarry 64, [27, 53, 61]); (*65*) (add 64, [16, 22, 29, 47, 55, 64]); (*66*) (addcarryZ 64, [64, 30, 57]); (*67*) (addcarry 64, [30, 57, 64]); (*68*) (add 64, [12, 18, 32, 40, 67]); (*69*) (addcarryZ 64, [67, 33, 40]); (*70*) (addcarry 64, [33, 40, 67]); (*71*) (add 64, [14, 35, 42, 70]); (*72*) (addcarryZ 64, [70, 37, 42]); (*73*) (addcarry 64, [37, 42, 70]); (*74*) (mulZ, [2, 4]); (*75*) (mul 64, [2, 4]); (*76*) (shrZ, [74, 10]); (*77*) (shr 64, [74, 10]); (*78*) (mulZ, [2, 5]); (*79*) (mul 64, [2, 5]); (*80*) (shrZ, [78, 10]); (*81*) (shr 64, [78, 10]); (*82*) (mulZ, [2, 6]); (*83*) (mul 64, [2, 6]); (*84*) (shrZ, [82, 10]); (*85*) (shr 64, [82, 10]); (*86*) (mulZ, [2, 7]); (*87*) (mul 64, [2, 7]); (*88*) (shrZ, [86, 10]); (*89*) (shr 64, [86, 10]); (*90*) (add 64, [83, 89]); (*91*) (addcarryZ 64, [89, 83]); (*92*) (addcarry 64, [83, 89]); (*93*) (add 64, [79, 85, 92]); (*94*) (addcarryZ 64, [92, 85, 79]); (*95*) (addcarry 64, [79, 85, 92]); (*96*) (add 64, [75, 81, 95]); (*97*) (addcarryZ 64, [95, 81, 75]); (*98*) (addcarry 64, [75, 81, 95]); (*99*) (addZ, [98, 77]); (*100*) (add 64, [77, 98]); (*101*) (add 64, [20, 26, 45, 52, 61, 87]); (*102*) (addcarryZ 64, [62, 87]); (*103*) (addcarry 64, [62, 87]); (*104*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103]); (*105*) (addcarryZ 64, [103, 65, 90]); (*106*) (addcarry 64, [65, 90, 103]); (*107*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106]); (*108*) (addcarryZ 64, [106, 68, 93]); (*109*) (addcarry 64, [68, 93, 106]); (*110*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109]); (*111*) (addcarryZ 64, [109, 71, 96]); (*112*) (addcarry 64, [71, 96, 109]); (*113*) (add 64, [73, 77, 98, 112]); (*114*) (addcarryZ 64, [112, 73, 100]); (*115*) (addcarry 64, [73, 100, 112]); (*116*) (mulZ, [38, 101]); (*117*) (mul 64, [38, 101]); (*118*) (shrZ, [116, 10]); (*119*) (shr 64, [116, 10]); (*120*) (mulZ, [43, 101]); (*121*) (mul 64, [43, 101]); (*122*) (shrZ, [120, 10]); (*123*) (shr 64, [120, 10]); (*124*) (mulZ, [48, 101]); (*125*) (mul 64, [48, 101]); (*126*) (shrZ, [124, 10]); (*127*) (shr 64, [124, 10]); (*128*) (add 64, [121, 127]); (*129*) (addcarryZ 64, [127, 121]); (*130*) (addcarry 64, [121, 127]); (*131*) (addZ, [130, 123]); (*132*) (add 64, [123, 130]); (*133*) (add 64, [20, 26, 45, 52, 61, 87, 125]); (*134*) (addcarryZ 64, [101, 125]); (*135*) (addcarry 64, [101, 125]); (*136*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135]); (*137*) (addcarryZ 64, [135, 104, 128]); (*138*) (addcarry 64, [104, 128, 135]); (*139*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138]); (*140*) (addcarryZ 64, [138, 107, 132]); (*141*) (addcarry 64, [107, 132, 138]); (*142*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141]); (*143*) (addcarryZ 64, [141, 110, 117]); (*144*) (addcarry 64, [110, 117, 141]); (*145*) (add 64, [73, 77, 98, 112, 119, 144]); (*146*) (addcarryZ 64, [144, 113, 119]); (*147*) (addcarry 64, [113, 119, 144]); (*148*) (addZ, [147, 115]); (*149*) (add 64, [115, 147]); (*150*) (mulZ, [1, 4]); (*151*) (mul 64, [1, 4]); (*152*) (shrZ, [150, 10]); (*153*) (shr 64, [150, 10]); (*154*) (mulZ, [1, 5]); (*155*) (mul 64, [1, 5]); (*156*) (shrZ, [154, 10]); (*157*) (shr 64, [154, 10]); (*158*) (mulZ, [1, 6]); (*159*) (mul 64, [1, 6]); (*160*) (shrZ, [158, 10]); (*161*) (shr 64, [158, 10]); (*162*) (mulZ, [1, 7]); (*163*) (mul 64, [1, 7]); (*164*) (shrZ, [162, 10]); (*165*) (shr 64, [162, 10]); (*166*) (add 64, [159, 165]); (*167*) (addcarryZ 64, [165, 159]); (*168*) (addcarry 64, [159, 165]); (*169*) (add 64, [155, 161, 168]); (*170*) (addcarryZ 64, [168, 161, 155]); (*171*) (addcarry 64, [155, 161, 168]); (*172*) (add 64, [151, 157, 171]); (*173*) (addcarryZ 64, [171, 157, 151]); (*174*) (addcarry 64, [151, 157, 171]); (*175*) (addZ, [174, 153]); (*176*) (add 64, [153, 174]); (*177*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135, 163]); (*178*) (addcarryZ 64, [136, 163]); (*179*) (addcarry 64, [136, 163]); (*180*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179]); (*181*) (addcarryZ 64, [179, 139, 166]); (*182*) (addcarry 64, [139, 166, 179]); (*183*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182]); (*184*) (addcarryZ 64, [182, 142, 169]); (*185*) (addcarry 64, [142, 169, 182]); (*186*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185]); (*187*) (addcarryZ 64, [185, 145, 172]); (*188*) (addcarry 64, [145, 172, 185]); (*189*) (add 64, [115, 147, 153, 174, 188]); (*190*) (addcarryZ 64, [188, 149, 176]); (*191*) (addcarry 64, [149, 176, 188]); (*192*) (mulZ, [38, 177]); (*193*) (mul 64, [38, 177]); (*194*) (shrZ, [192, 10]); (*195*) (shr 64, [192, 10]); (*196*) (mulZ, [43, 177]); (*197*) (mul 64, [43, 177]); (*198*) (shrZ, [196, 10]); (*199*) (shr 64, [196, 10]); (*200*) (mulZ, [48, 177]); (*201*) (mul 64, [48, 177]); (*202*) (shrZ, [200, 10]); (*203*) (shr 64, [200, 10]); (*204*) (add 64, [197, 203]); (*205*) (addcarryZ 64, [203, 197]); (*206*) (addcarry 64, [197, 203]); (*207*) (addZ, [206, 199]); (*208*) (add 64, [199, 206]); (*209*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135, 163, 201]); (*210*) (addcarryZ 64, [177, 201]); (*211*) (addcarry 64, [177, 201]); (*212*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211]); (*213*) (addcarryZ 64, [211, 180, 204]); (*214*) (addcarry 64, [180, 204, 211]); (*215*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214]); (*216*) (addcarryZ 64, [214, 183, 208]); (*217*) (addcarry 64, [183, 208, 214]); (*218*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217]); (*219*) (addcarryZ 64, [217, 186, 193]); (*220*) (addcarry 64, [186, 193, 217]); (*221*) (add 64, [115, 147, 153, 174, 188, 195, 220]); (*222*) (addcarryZ 64, [220, 189, 195]); (*223*) (addcarry 64, [189, 195, 220]); (*224*) (addZ, [223, 191]); (*225*) (add 64, [191, 223]); (*226*) (mulZ, [0, 4]); (*227*) (mul 64, [0, 4]); (*228*) (shrZ, [226, 10]); (*229*) (shr 64, [226, 10]); (*230*) (mulZ, [0, 5]); (*231*) (mul 64, [0, 5]); (*232*) (shrZ, [230, 10]); (*233*) (shr 64, [230, 10]); (*234*) (mulZ, [0, 6]); (*235*) (mul 64, [0, 6]); (*236*) (shrZ, [234, 10]); (*237*) (shr 64, [234, 10]); (*238*) (mulZ, [0, 7]); (*239*) (mul 64, [0, 7]); (*240*) (shrZ, [238, 10]); (*241*) (shr 64, [238, 10]); (*242*) (add 64, [235, 241]); (*243*) (addcarryZ 64, [241, 235]); (*244*) (addcarry 64, [235, 241]); (*245*) (add 64, [231, 237, 244]); (*246*) (addcarryZ 64, [244, 237, 231]); (*247*) (addcarry 64, [231, 237, 244]); (*248*) (add 64, [227, 233, 247]); (*249*) (addcarryZ 64, [247, 233, 227]); (*250*) (addcarry 64, [227, 233, 247]); (*251*) (addZ, [250, 229]); (*252*) (add 64, [229, 250]); (*253*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211, 239]); (*254*) (addcarryZ 64, [212, 239]); (*255*) (addcarry 64, [212, 239]); (*256*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255]); (*257*) (addcarryZ 64, [255, 215, 242]); (*258*) (addcarry 64, [215, 242, 255]); (*259*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258]); (*260*) (addcarryZ 64, [258, 218, 245]); (*261*) (addcarry 64, [218, 245, 258]); (*262*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261]); (*263*) (addcarryZ 64, [261, 221, 248]); (*264*) (addcarry 64, [221, 248, 261]); (*265*) (add 64, [191, 223, 229, 250, 264]); (*266*) (addcarryZ 64, [264, 225, 252]); (*267*) (addcarry 64, [225, 252, 264]); (*268*) (mulZ, [38, 253]); (*269*) (mul 64, [38, 253]); (*270*) (shrZ, [268, 10]); (*271*) (shr 64, [268, 10]); (*272*) (mulZ, [43, 253]); (*273*) (mul 64, [43, 253]); (*274*) (shrZ, [272, 10]); (*275*) (shr 64, [272, 10]); (*276*) (mulZ, [48, 253]); (*277*) (mul 64, [48, 253]); (*278*) (shrZ, [276, 10]); (*279*) (shr 64, [276, 10]); (*280*) (add 64, [273, 279]); (*281*) (addcarryZ 64, [279, 273]); (*282*) (addcarry 64, [273, 279]); (*283*) (addZ, [282, 275]); (*284*) (add 64, [275, 282]); (*285*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211, 239, 277]); (*286*) (addcarryZ 64, [253, 277]); (*287*) (addcarry 64, [253, 277]); (*288*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255, 273, 279, 287]); (*289*) (addcarryZ 64, [287, 256, 280]); (*290*) (addcarry 64, [256, 280, 287]); (*291*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258, 275, 282, 290]); (*292*) (addcarryZ 64, [290, 259, 284]); (*293*) (addcarry 64, [259, 284, 290]); (*294*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261, 269, 293]); (*295*) (addcarryZ 64, [293, 262, 269]); (*296*) (addcarry 64, [262, 269, 293]); (*297*) (add 64, [191, 223, 229, 250, 264, 271, 296]); (*298*) (addcarryZ 64, [296, 265, 271]); (*299*) (addcarry 64, [265, 271, 296]); (*300*) (addZ, [299, 267]); (*301*) (add 64, [267, 299]); (*302*) (const 1, []); (*303*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255, 273, 279, 287, 302]); (*304*) (subborrowZ 64, [288, 48]); (*305*) (subborrow 64, [288, 48]); (*306*) (neg 64, [305]); (*307*) (add 64, [38, 73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258, 275, 282, 290, 306]); (*308*) (subborrowZ 64, [291, 43, 305]); (*309*) (subborrow 64, [291, 43, 305]); (*310*) (neg 64, [309]); (*311*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261, 269, 293, 310]); (*312*) (subborrowZ 64, [294, 309]); (*313*) (subborrow 64, [294, 309]); (*314*) (neg 64, [313]); (*315*) (add 64, [43, 191, 223, 229, 250, 264, 271, 296, 314]); (*316*) (subborrowZ 64, [297, 38, 313]); (*317*) (subborrow 64, [297, 38, 313]); (*318*) (neg 64, [317]); (*319*) (add 64, [267, 299, 318]); (*320*) (subborrowZ 64, [301, 317]); (*321*) (subborrow 64, [301, 317]); (*322*) (selectznz, [321, 303, 288]); (*323*) (selectznz, [321, 307, 291]); (*324*) (selectznz, [321, 311, 294]); (*325*) (selectznz, [321, 315, 297]); (*326*) (old 64 326, []); (*327*) (old 64 327, []); (*328*) (old 64 328, []); (*329*) (old 64 329, []); (*330*) (old 64 330, []); (*331*) (old 64 331, []); (*332*) (old 64 332, []); (*333*) (old 64 333, []); (*334*) (old 64 334, []); (*335*) (old 64 335, []); (*336*) (old 64 336, []); (*337*) (old 64 337, []); (*338*) (old 64 338, []); (*339*) (old 64 339, []); (*340*) (old 64 340, []); (*341*) (old 64 341, []); (*342*) (old 64 342, []); (*343*) (old 64 343, []); (*344*) (old 64 344, []); (*345*) (old 64 345, []); (*346*) (old 64 346, []); (*347*) (const 8, []); (*348*) (add 64, [346, 347]); (*349*) (const 16, []); (*350*) (add 64, [346, 349]); (*351*) (const 24, []); (*352*) (add 64, [346, 351]); (*353*) (old 64 353, []); (*354*) (add 64, [347, 353]); (*355*) (add 64, [349, 353]); (*356*) (add 64, [351, 353]); (*357*) (old 64 357, []); (*358*) (add 64, [347, 357]); (*359*) (add 64, [349, 357]); (*360*) (add 64, [351, 357]); (*361*) (old 64 361, []); (*362*) (add 64, [26, 87]); (*363*) (addcarry 64, [26, 87]); (*364*) (addoverflow 64, [26, 87]); (*365*) (add 64, [89, 363]); (*366*) (addcarry 64, [89, 363]); (*367*) (addoverflow 64, [89, 363]); (*368*) (add 64, [89, 163, 363]); (*369*) (addcarry 64, [163, 365]); (*370*) (addoverflow 64, [163, 365]); (*371*) (add 64, [165, 369]); (*372*) (addcarry 64, [165, 369]); (*373*) (addoverflow 64, [165, 369]); (*374*) (add 64, [165, 239, 369]); (*375*) (addcarry 64, [239, 371]); (*376*) (addoverflow 64, [239, 371]); (*377*) (add 64, [241, 375]); (*378*) (addcarry 64, [241, 375]); (*379*) (addoverflow 64, [241, 375]); (*380*) (xorZ, [339, 339]); (*381*) (const 32, []); (*382*) (const 63, []); (*383*) (const 4294967296, []); (*384*) (mul 64, [3, 7, 383]); (*385*) (shr 64, [24, 381]); (*386*) (add 64, [26, 87, 384]); (*387*) (addcarry 64, [362, 384]); (*388*) (addoverflow 64, [362, 384]); (*389*) (add 64, [89, 163, 363, 385, 387]); (*390*) (addcarry 64, [368, 385, 387]); (*391*) (addoverflow 64, [368, 385, 387]); (*392*) (add 64, [40, 165, 239, 369, 390]); (*393*) (addcarry 64, [40, 374, 390]); (*394*) (addoverflow 64, [40, 374, 390]); (*395*) (add 64, [42, 241, 375, 393]); (*396*) (addcarry 64, [42, 377, 393]); (*397*) (addoverflow 64, [42, 377, 393]); (*398*) (xorZ, [384, 384]); (*399*) (add 64, [20, 26, 87, 384]); (*400*) (addcarry 64, [20, 386]); (*401*) (addoverflow 64, [20, 386]); (*402*) (add 64, [22, 400]); (*403*) (addcarry 64, [22, 400]); (*404*) (addoverflow 64, [22, 400]); (*405*) (add 64, [22, 89, 163, 363, 385, 387, 400]); (*406*) (addcarry 64, [389, 402]); (*407*) (addoverflow 64, [389, 402]); (*408*) (add 64, [85, 406]); (*409*) (addcarry 64, [85, 406]); (*410*) (addoverflow 64, [85, 406]); (*411*) (add 64, [22, 83, 89, 163, 363, 385, 387, 400]); (*412*) (addcarry 64, [83, 405]); (*413*) (addoverflow 64, [83, 405]); (*414*) (add 64, [85, 406, 412]); (*415*) (addcarry 64, [408, 412]); (*416*) (addoverflow 64, [408, 412]); (*417*) (add 64, [40, 85, 165, 239, 369, 390, 406, 412]); (*418*) (addcarry 64, [392, 414]); (*419*) (addoverflow 64, [392, 414]); (*420*) (add 64, [161, 418]); (*421*) (addcarry 64, [161, 418]); (*422*) (addoverflow 64, [161, 418]); (*423*) (add 64, [40, 85, 159, 165, 239, 369, 390, 406, 412]); (*424*) (addcarry 64, [159, 417]); (*425*) (addoverflow 64, [159, 417]); (*426*) (add 64, [161, 418, 424]); (*427*) (addcarry 64, [420, 424]); (*428*) (addoverflow 64, [420, 424]); (*429*) (add 64, [42, 161, 241, 375, 393, 418, 424]); (*430*) (addcarry 64, [395, 426]); (*431*) (addoverflow 64, [395, 426]); (*432*) (add 64, [237, 430]); (*433*) (addcarry 64, [237, 430]); (*434*) (addoverflow 64, [237, 430]); (*435*) (add 64, [42, 161, 235, 241, 375, 393, 418, 424]); (*436*) (addcarry 64, [235, 429]); (*437*) (addoverflow 64, [235, 429]); (*438*) (add 64, [237, 396, 430, 436]); (*439*) (addcarry 64, [396, 432, 436]); (*440*) (addoverflow 64, [396, 432, 436]); (*441*) (mul 64, [383, 399]); (*442*) (mulZ, [38, 399]); (*443*) (shrZ, [442, 10]); (*444*) (mul 64, [38, 399]); (*445*) (shr 64, [442, 10]); (*446*) (shr 64, [399, 381]); (*447*) (add 64, [22, 83, 89, 163, 363, 385, 387, 400, 441]); (*448*) (addcarry 64, [411, 441]); (*449*) (addoverflow 64, [411, 441]); (*450*) (add 64, [40, 85, 159, 165, 239, 369, 390, 406, 412, 446, 448]); (*451*) (addcarry 64, [423, 446, 448]); (*452*) (addoverflow 64, [423, 446, 448]); (*453*) (add 64, [42, 161, 235, 241, 375, 393, 418, 424, 444, 451]); (*454*) (addcarry 64, [435, 444, 451]); (*455*) (addoverflow 64, [435, 444, 451]); (*456*) (add 64, [237, 396, 430, 436, 445, 454]); (*457*) (addcarry 64, [438, 445, 454]); (*458*) (addoverflow 64, [438, 445, 454]); (*459*) (add 64, [439, 457]); (*460*) (xorZ, [441, 441]); (*461*) (add 64, [16, 22, 83, 89, 163, 363, 385, 387, 400, 441]); (*462*) (addcarry 64, [16, 447]); (*463*) (addoverflow 64, [16, 447]); (*464*) (add 64, [18, 462]); (*465*) (addcarry 64, [18, 462]); (*466*) (addoverflow 64, [18, 462]); (*467*) (add 64, [18, 40, 85, 159, 165, 239, 369, 390, 406, 412, 446, 448, 462]); (*468*) (addcarry 64, [450, 464]); (*469*) (addoverflow 64, [450, 464]); (*470*) (add 64, [81, 468]); (*471*) (addcarry 64, [81, 468]); (*472*) (addoverflow 64, [81, 468]); (*473*) (add 64, [18, 40, 79, 85, 159, 165, 239, 369, 390, 406, 412, 446, 448, 462]); (*474*) (addcarry 64, [79, 467]); (*475*) (addoverflow 64, [79, 467]); (*476*) (add 64, [81, 468, 474]); (*477*) (addcarry 64, [470, 474]); (*478*) (addoverflow 64, [470, 474]); (*479*) (add 64, [42, 81, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474]); (*480*) (addcarry 64, [453, 476]); (*481*) (addoverflow 64, [453, 476]); (*482*) (add 64, [157, 480]); (*483*) (addcarry 64, [157, 480]); (*484*) (addoverflow 64, [157, 480]); (*485*) (add 64, [42, 81, 155, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474]); (*486*) (addcarry 64, [155, 479]); (*487*) (addoverflow 64, [155, 479]); (*488*) (add 64, [157, 480, 486]); (*489*) (addcarry 64, [482, 486]); (*490*) (addoverflow 64, [482, 486]); (*491*) (add 64, [157, 237, 396, 430, 436, 445, 454, 480, 486]); (*492*) (addcarry 64, [456, 488]); (*493*) (addoverflow 64, [456, 488]); (*494*) (add 64, [233, 492]); (*495*) (addcarry 64, [233, 492]); (*496*) (addoverflow 64, [233, 492]); (*497*) (add 64, [157, 231, 237, 396, 430, 436, 445, 454, 480, 486]); (*498*) (addcarry 64, [231, 491]); (*499*) (addoverflow 64, [231, 491]); (*500*) (add 64, [233, 439, 457, 492, 498]); (*501*) (addcarry 64, [459, 494, 498]); (*502*) (addoverflow 64, [459, 494, 498]); (*503*) (mul 64, [383, 461]); (*504*) (mulZ, [38, 461]); (*505*) (shrZ, [504, 10]); (*506*) (mul 64, [38, 461]); (*507*) (shr 64, [504, 10]); (*508*) (shr 64, [461, 381]); (*509*) (add 64, [18, 40, 79, 85, 159, 165, 239, 369, 390, 406, 412, 446, 448, 462, 503]); (*510*) (addcarry 64, [473, 503]); (*511*) (addoverflow 64, [473, 503]); (*512*) (add 64, [42, 81, 155, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474, 508, 510]); (*513*) (addcarry 64, [485, 508, 510]); (*514*) (addoverflow 64, [485, 508, 510]); (*515*) (add 64, [157, 231, 237, 396, 430, 436, 445, 454, 480, 486, 506, 513]); (*516*) (addcarry 64, [497, 506, 513]); (*517*) (addoverflow 64, [497, 506, 513]); (*518*) (add 64, [233, 439, 457, 492, 498, 507, 516]); (*519*) (addcarry 64, [500, 507, 516]); (*520*) (addoverflow 64, [500, 507, 516]); (*521*) (add 64, [501, 519]); (*522*) (xorZ, [503, 503]); (*523*) (add 64, [12, 18, 40, 79, 85, 159, 165, 239, 369, 390, 406, 412, 446, 448, 462, 503]); (*524*) (addcarry 64, [12, 509]); (*525*) (addoverflow 64, [12, 509]); (*526*) (add 64, [14, 524]); (*527*) (addcarry 64, [14, 524]); (*528*) (addoverflow 64, [14, 524]); (*529*) (add 64, [14, 42, 81, 155, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474, 508, 510, 524]); (*530*) (addcarry 64, [512, 526]); (*531*) (addoverflow 64, [512, 526]); (*532*) (add 64, [77, 530]); (*533*) (addcarry 64, [77, 530]); (*534*) (addoverflow 64, [77, 530]); (*535*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474, 508, 510, 524]); (*536*) (addcarry 64, [75, 529]); (*537*) (addoverflow 64, [75, 529]); (*538*) (add 64, [77, 530, 536]); (*539*) (addcarry 64, [532, 536]); (*540*) (addoverflow 64, [532, 536]); (*541*) (add 64, [77, 157, 231, 237, 396, 430, 436, 445, 454, 480, 486, 506, 513, 530, 536]); (*542*) (addcarry 64, [515, 538]); (*543*) (addoverflow 64, [515, 538]); (*544*) (add 64, [153, 542]); (*545*) (addcarry 64, [153, 542]); (*546*) (addoverflow 64, [153, 542]); (*547*) (add 64, [77, 151, 157, 231, 237, 396, 430, 436, 445, 454, 480, 486, 506, 513, 530, 536]); (*548*) (addcarry 64, [151, 541]); (*549*) (addoverflow 64, [151, 541]); (*550*) (add 64, [153, 542, 548]); (*551*) (addcarry 64, [544, 548]); (*552*) (addoverflow 64, [544, 548]); (*553*) (add 64, [153, 233, 439, 457, 492, 498, 507, 516, 542, 548]); (*554*) (addcarry 64, [518, 550]); (*555*) (addoverflow 64, [518, 550]); (*556*) (add 64, [229, 554]); (*557*) (addcarry 64, [229, 554]); (*558*) (addoverflow 64, [229, 554]); (*559*) (add 64, [153, 227, 233, 439, 457, 492, 498, 507, 516, 542, 548]); (*560*) (addcarry 64, [227, 553]); (*561*) (addoverflow 64, [227, 553]); (*562*) (add 64, [229, 501, 519, 554, 560]); (*563*) (addcarry 64, [521, 556, 560]); (*564*) (addoverflow 64, [521, 556, 560]); (*565*) (mul 64, [383, 523]); (*566*) (mulZ, [38, 523]); (*567*) (shrZ, [566, 10]); (*568*) (mul 64, [38, 523]); (*569*) (shr 64, [566, 10]); (*570*) (shr 64, [523, 381]); (*571*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 375, 393, 418, 424, 444, 451, 468, 474, 508, 510, 524, 565]); (*572*) (addcarry 64, [535, 565]); (*573*) (addoverflow 64, [535, 565]); (*574*) (add 64, [77, 151, 157, 231, 237, 396, 430, 436, 445, 454, 480, 486, 506, 513, 530, 536, 570, 572]); (*575*) (addcarry 64, [547, 570, 572]); (*576*) (addoverflow 64, [547, 570, 572]); (*577*) (add 64, [153, 227, 233, 439, 457, 492, 498, 507, 516, 542, 548, 568, 575]); (*578*) (addcarry 64, [559, 568, 575]); (*579*) (addoverflow 64, [559, 568, 575]); (*580*) (add 64, [229, 501, 519, 554, 560, 569, 578]); (*581*) (addcarry 64, [562, 569, 578]); (*582*) (addoverflow 64, [562, 569, 578]); (*583*) (add 64, [563, 581]); (*584*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 302, 375, 393, 418, 424, 444, 451, 468, 474, 508, 510, 524, 565]); (*585*) (subborrow 64, [571, 48]); (*586*) (neg 64, [585]); (*587*) (add 64, [38, 77, 151, 157, 231, 237, 396, 430, 436, 445, 454, 480, 486, 506, 513, 530, 536, 570, 572, 586]); (*588*) (subborrow 64, [574, 43, 585]); (*589*) (neg 64, [588]); (*590*) (add 64, [153, 227, 233, 439, 457, 492, 498, 507, 516, 542, 548, 568, 575, 589]); (*591*) (subborrow 64, [577, 588]); (*592*) (neg 64, [591]); (*593*) (add 64, [43, 229, 501, 519, 554, 560, 569, 578, 592]); (*594*) (subborrow 64, [580, 38, 591]); (*595*) (neg 64, [594]); (*596*) (add 64, [563, 581, 595]); (*597*) (subborrow 64, [583, 594]); (*598*) (selectznz, [597, 584, 571]); (*599*) (selectznz, [597, 587, 574]); (*600*) (selectznz, [597, 590, 577]); (*601*) (selectznz, [597, 593, 580]); ] ; symbolic_reg_state := [(rax, 568), (rcx, 571), (rdx, 580), (rbx, 577), (rsp, 361), (rbp, 574), (rsi, 346), (rdi, 357), (r8, 600), (r9, 601), (r10, 596), (r11, 565), (r12, 598), (r13, 599), (r14, 43), (r15, 38)]; symbolic_flag_state := (*flag_state*)(CF=Some 597 PF=None AF=None ZF=None SF=None ZF=None OF=None); symbolic_mem_state := [] ; |} Unable to unify: [inr [598, 599, 600, 601]] == [inr [322, 323, 324, 325]] Could not unify the values at index 0: [#598, #599, #600, #601] ≠ [#322, #323, #324, #325] index 0: #598 ≠ #322 (selectznz, [#597, #584, #571]) ≠ (selectznz, [#321, #303, #288]) index 0: #597 ≠ #321 (subborrow 64, [#583, #594]) ≠ (subborrow 64, [#301, #317]) index 0: #583 ≠ #301 (add 64, [#563, #581]) ≠ (add 64, [#267, #299]) index 0: #563 ≠ #267 (addcarry 64, [#521, #556, #560]) ≠ (addcarry 64, [#225, #252, #264]) index 0: #521 ≠ #225 (add 64, [#501, #519]) ≠ (add 64, [#191, #223]) index 0: #501 ≠ #191 (addcarry 64, [#459, #494, #498]) ≠ (addcarry 64, [#149, #176, #188]) index 0: #459 ≠ #149 (add 64, [#439, #457]) ≠ (add 64, [#115, #147]) index 0: #439 ≠ #115 (addcarry 64, [#396, #432, #436]) ≠ (addcarry 64, [#73, #100, #112]) index 0: #396 ≠ #73 (addcarry 64, [#42, #377, #393]) ≠ (addcarry 64, [#37, #42, #70]) index 1: #377 ≠ #37 (add 64, [#241, #375]) ≠ (add 64, [#14, #35]) index 0: #241 ≠ #14 (shr 64, [#238, #10]) ≠ (shr 64, [#11, #10]) index 0: #238 ≠ #11 (mulZ, [#0, #7]) ≠ (mulZ, [#3, #4]) index 0: #0 ≠ #3 (old 64 0, []) ≠ (old 64 3, []) (old 64 0, []) ≠ (old 64 3, []) Operation mismatch: old 64 0 ≠ old 64 3 0 is a special value no longer present in the symbolic machine state at the end of execution. 3 is a special value no longer present in the symbolic machine state at the end of execution. Fatal error: exception Failure("Synthesis failed") ``` 20 May 2022, 01:32:43 UTC
e5c44fd Add some assembly tests from BoringSSL p256 Towards better equivalence checking We don't support these instructions yet: ``` $ src/ExtractionOCaml/word_by_word_montgomery p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul --no-wide-int --shiftr-avoid-uint1 --hints-file fiat-amd64/boringssl_intel_manual_mul_p256.asm [...] In parsing: Error while parsing assembly: mul r9 mul r10 mul r11 mul r12 mul r15 mov rax,QWORD PTR [rbx+0x8] mul QWORD PTR [rsi] mul QWORD PTR [rsi+0x8] mul QWORD PTR [rsi+0x10] mul QWORD PTR [rsi+0x18] mul r15 mov rax,QWORD PTR [rbx+0x10] mul QWORD PTR [rsi] mul QWORD PTR [rsi+0x8] mul QWORD PTR [rsi+0x10] mul QWORD PTR [rsi+0x18] mul r15 mov rax,QWORD PTR [rbx+0x18] mul QWORD PTR [rsi] mul QWORD PTR [rsi+0x8] mul QWORD PTR [rsi+0x10] mul QWORD PTR [rsi+0x18] mul r15 cmovb r12,rcx cmovb r13,rbp mov QWORD PTR [rdi],r12 cmovb r8,rbx mov QWORD PTR [rdi+0x8],r13 cmovb r9,rdx mov QWORD PTR [rdi+0x10],r8 mov QWORD PTR [rdi+0x18],r9 repz ret Fatal error: exception Failure("Synthesis failed") ``` 20 May 2022, 01:32:43 UTC
1f683c9 Add some subrelation instances (#1245) <details><summary>Timing Diff</summary> <p> ``` After | Peak Mem | File Name | Before | Peak Mem || Change || Change (mem) | % Change | % Change (mem) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 138m52.03s | 4072760 ko | Total Time / Peak Mem | 139m15.93s | 4075576 ko || -0m23.90s || -2816 ko | -0.28% | -0.06% ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7m23.75s | 1061508 ko | fiat-json/src/p384_32.json | 8m10.06s | 1061472 ko || -0m46.31s || 36 ko | -9.44% | +0.00% 7m56.46s | 959900 ko | fiat-go/32/p384/p384.go | 7m16.49s | 959976 ko || +0m39.96s || -76 ko | +9.15% | -0.00% 7m47.27s | 1116112 ko | fiat-zig/src/p384_32.zig | 7m56.60s | 1116192 ko || -0m09.33s || -80 ko | -1.95% | -0.00% 7m03.40s | 1057720 ko | fiat-bedrock2/src/p384_32.c | 7m06.96s | 1057648 ko || -0m03.56s || 72 ko | -0.83% | +0.00% 7m46.39s | 942188 ko | fiat-rust/src/p384_32.rs | 7m44.21s | 942456 ko || +0m02.18s || -268 ko | +0.46% | -0.02% 4m20.80s | 1363192 ko | PushButtonSynthesis/WordByWordMontgomeryReificationCache.vo | 4m23.33s | 1395412 ko || -0m02.52s || -32220 ko | -0.96% | -2.30% 4m09.60s | 4072760 ko | Curves/EdwardsMontgomery.vo | 4m07.18s | 4075576 ko || +0m02.41s || -2816 ko | +0.97% | -0.06% 0m29.71s | 210444 ko | fiat-bedrock2/src/p256_32.c | 0m32.20s | 210136 ko || -0m02.49s || 308 ko | -7.73% | +0.14% 0m29.07s | 234552 ko | fiat-json/src/secp256k1_32.json | 0m31.23s | 234576 ko || -0m02.16s || -24 ko | -6.91% | -0.01% 0m28.92s | 208332 ko | fiat-java/src/FiatSecp256K1.java | 0m31.06s | 208352 ko || -0m02.13s || -20 ko | -6.88% | -0.00% 0m27.88s | 227384 ko | fiat-zig/src/p256_32.zig | 0m30.74s | 227204 ko || -0m02.85s || 180 ko | -9.30% | +0.07% 0m27.81s | 195368 ko | fiat-go/32/p256/p256.go | 0m30.04s | 195328 ko || -0m02.23s || 40 ko | -7.42% | +0.02% 0m23.83s | 144000 ko | fiat-zig/src/p434_64.zig | 0m21.09s | 143836 ko || +0m02.73s || 164 ko | +12.99% | +0.11% 7m54.35s | 1081840 ko | fiat-c/src/p384_32.c | 7m52.94s | 1082160 ko || +0m01.41s || -320 ko | +0.29% | -0.02% 0m35.54s | 1452920 ko | ExtractionOCaml/bedrock2_saturated_solinas | 0m33.97s | 1452912 ko || +0m01.57s || 8 ko | +4.62% | +0.00% 0m29.01s | 954156 ko | PushButtonSynthesis/BYInversionReificationCache.vo | 0m27.29s | 954532 ko || +0m01.72s || -376 ko | +6.30% | -0.03% 0m25.72s | 1233352 ko | ExtractionOCaml/perf_unsaturated_solinas | 0m27.33s | 1233140 ko || -0m01.60s || 212 ko | -5.89% | +0.01% 0m21.56s | 1714120 ko | ExtractionOCaml/bedrock2_saturated_solinas.ml | 0m20.54s | 1714084 ko || +0m01.01s || 36 ko | +4.96% | +0.00% 0m15.27s | 805632 ko | Bedrock/Field/Translation/Proofs/Cmd.vo | 0m16.57s | 805796 ko || -0m01.30s || -164 ko | -7.84% | -0.02% 0m14.64s | 131216 ko | fiat-json/src/p224_32.json | 0m13.38s | 131012 ko || +0m01.25s || 204 ko | +9.41% | +0.15% 7m50.59s | 1105652 ko | fiat-java/src/FiatP384.java | 7m51.37s | 1105580 ko || -0m00.77s || 72 ko | -0.16% | +0.00% 6m53.70s | 2075284 ko | Curves/Weierstrass/AffineProofs.vo | 6m52.78s | 2085408 ko || +0m00.92s || -10124 ko | +0.22% | -0.48% 5m36.80s | 2100572 ko | Bedrock/Field/Synthesis/Examples/p224_64_new.vo | 5m36.61s | 2100564 ko || +0m00.18s || 8 ko | +0.05% | +0.00% 2m55.89s | 1447776 ko | Curves/Weierstrass/Projective.vo | 2m56.13s | 1448452 ko || -0m00.24s || -676 ko | -0.13% | -0.04% 2m42.17s | 1444860 ko | Curves/Montgomery/XZProofs.vo | 2m43.06s | 1446140 ko || -0m00.88s || -1280 ko | -0.54% | -0.08% 2m37.11s | 1230880 ko | Curves/Montgomery/AffineProofs.vo | 2m37.80s | 1231036 ko || -0m00.68s || -156 ko | -0.43% | -0.01% 1m55.88s | 2508148 ko | Bedrock/End2End/X25519/MontgomeryLadder.vo | 1m55.81s | 2508244 ko || +0m00.06s || -96 ko | +0.06% | -0.00% 1m43.04s | 1466548 ko | Fancy/Barrett256.vo | 1m42.60s | 1465768 ko || +0m00.43s || 780 ko | +0.42% | +0.05% 1m40.78s | 1060100 ko | Bedrock/Field/Synthesis/Examples/X25519_64.vo | 1m41.01s | 1060228 ko || -0m00.22s || -128 ko | -0.22% | -0.01% 1m36.13s | 1455828 ko | SlowPrimeSynthesisExamples.vo | 1m36.03s | 1456116 ko || +0m00.09s || -288 ko | +0.10% | -0.01% 1m19.69s | 1224556 ko | Bedrock/End2End/X25519/Field25519.vo | 1m19.82s | 1224596 ko || -0m00.12s || -40 ko | -0.16% | -0.00% 1m17.12s | 1122996 ko | UnsaturatedSolinasHeuristics/Tests.vo | 1m17.66s | 1123088 ko || -0m00.53s || -92 ko | -0.69% | -0.00% 1m02.71s | 949624 ko | Curves/Weierstrass/Jacobian.vo | 1m02.74s | 944416 ko || -0m00.03s || 5208 ko | -0.04% | +0.55% 1m01.84s | 1363364 ko | Bedrock/Field/Synthesis/Examples/p224_64.vo | 1m02.10s | 1363168 ko || -0m00.25s || 196 ko | -0.41% | +0.01% 1m00.62s | 974740 ko | PushButtonSynthesis/UnsaturatedSolinasReificationCache.vo | 1m00.11s | 975384 ko || +0m00.50s || -644 ko | +0.84% | -0.06% 0m59.14s | 1285812 ko | Bedrock/Field/Synthesis/Examples/p256_64.vo | 0m59.37s | 1285760 ko || -0m00.22s || 52 ko | -0.38% | +0.00% 0m54.71s | 2462140 ko | ExtractionOCaml/bedrock2_word_by_word_montgomery | 0m54.76s | 2462092 ko || -0m00.04s || 48 ko | -0.09% | +0.00% 0m49.54s | 2145264 ko | ExtractionOCaml/word_by_word_montgomery | 0m49.17s | 2145284 ko || +0m00.36s || -20 ko | +0.75% | -0.00% 0m46.89s | 1078348 ko | Bedrock/Field/Translation/Proofs/ValidComputable/Expr.vo | 0m47.16s | 1077960 ko || -0m00.26s || 388 ko | -0.57% | +0.03% 0m44.71s | 579944 ko | Demo.vo | 0m44.69s | 580072 ko || +0m00.02s || -128 ko | +0.04% | -0.02% 0m43.11s | 1334340 ko | Fancy/Montgomery256.vo | 0m43.18s | 1334364 ko || -0m00.07s || -24 ko | -0.16% | -0.00% 0m40.00s | 1019384 ko | Bedrock/Group/ScalarMult/MontgomeryLadder.vo | 0m40.05s | 1019192 ko || -0m00.04s || 192 ko | -0.12% | +0.01% 0m39.83s | 2410116 ko | ExtractionOCaml/bedrock2_word_by_word_montgomery.ml | 0m40.05s | 2410112 ko || -0m00.21s || 4 ko | -0.54% | +0.00% 0m39.56s | 1862800 ko | ExtractionOCaml/bedrock2_unsaturated_solinas | 0m39.67s | 1863068 ko || -0m00.10s || -268 ko | -0.27% | -0.01% 0m38.23s | 2306144 ko | ExtractionOCaml/word_by_word_montgomery.ml | 0m38.38s | 2306024 ko || -0m00.15s || 120 ko | -0.39% | +0.00% 0m36.46s | 1649212 ko | ExtractionOCaml/unsaturated_solinas | 0m35.48s | 1649220 ko || +0m00.98s || -8 ko | +2.76% | -0.00% 0m34.61s | 1445504 ko | ExtractionOCaml/bedrock2_base_conversion | 0m35.14s | 1445584 ko || -0m00.53s || -80 ko | -1.50% | -0.00% 0m33.43s | 216724 ko | fiat-bedrock2/src/secp256k1_32.c | 0m33.45s | 216548 ko || -0m00.02s || 176 ko | -0.05% | +0.08% 0m33.04s | 1285244 ko | ExtractionOCaml/base_conversion | 0m32.58s | 1285136 ko || +0m00.46s || 108 ko | +1.41% | +0.00% 0m31.54s | 195176 ko | fiat-zig/src/secp256k1_32.zig | 0m31.03s | 195168 ko || +0m00.50s || 8 ko | +1.64% | +0.00% 0m31.47s | 1270516 ko | ExtractionOCaml/saturated_solinas | 0m30.80s | 1270528 ko || +0m00.66s || -12 ko | +2.17% | -0.00% 0m30.96s | 218700 ko | fiat-go/32/secp256k1/secp256k1.go | 0m31.34s | 218604 ko || -0m00.37s || 96 ko | -1.21% | +0.04% 0m30.90s | 200744 ko | fiat-rust/src/secp256k1_32.rs | 0m30.75s | 201020 ko || +0m00.14s || -276 ko | +0.48% | -0.13% 0m30.42s | 201304 ko | fiat-java/src/FiatP256.java | 0m30.16s | 201284 ko || +0m00.26s || 20 ko | +0.86% | +0.00% 0m29.95s | 248040 ko | fiat-json/src/p256_32.json | 0m29.99s | 247980 ko || -0m00.03s || 60 ko | -0.13% | +0.02% 0m29.81s | 224604 ko | fiat-rust/src/p256_32.rs | 0m30.03s | 224556 ko || -0m00.22s || 48 ko | -0.73% | +0.02% 0m29.79s | 1233228 ko | ExtractionOCaml/perf_word_by_word_montgomery | 0m29.63s | 1233392 ko || +0m00.16s || -164 ko | +0.53% | -0.01% 0m29.76s | 200696 ko | fiat-c/src/secp256k1_32.c | 0m30.05s | 200852 ko || -0m00.28s || -156 ko | -0.96% | -0.07% 0m29.33s | 1171608 ko | Bedrock/Field/Synthesis/Generic/UnsaturatedSolinas.vo | 0m30.09s | 1172292 ko || -0m00.76s || -684 ko | -2.52% | -0.05% 0m29.25s | 178860 ko | fiat-c/src/p256_32.c | 0m29.61s | 178848 ko || -0m00.35s || 12 ko | -1.21% | +0.00% 0m28.23s | 1098080 ko | Bedrock/Field/Synthesis/Generic/WordByWordMontgomery.vo | 0m28.36s | 1096388 ko || -0m00.12s || 1692 ko | -0.45% | +0.15% 0m27.45s | 914820 ko | PushButtonSynthesis/BarrettReductionReificationCache.vo | 0m27.35s | 915260 ko || +0m00.09s || -440 ko | +0.36% | -0.04% 0m26.60s | 844908 ko | PushButtonSynthesis/UnsaturatedSolinas.vo | 0m26.68s | 845056 ko || -0m00.07s || -148 ko | -0.29% | -0.01% 0m25.98s | 499960 ko | Arithmetic/Saturated.vo | 0m25.90s | 499960 ko || +0m00.08s || 0 ko | +0.30% | +0.00% 0m25.83s | 1816800 ko | ExtractionOCaml/bedrock2_unsaturated_solinas.ml | 0m25.89s | 1816916 ko || -0m00.06s || -116 ko | -0.23% | -0.00% 0m24.65s | 157136 ko | fiat-bedrock2/src/p434_64.c | 0m24.60s | 157372 ko || +0m00.04s || -236 ko | +0.20% | -0.14% 0m24.25s | 1705940 ko | ExtractionOCaml/unsaturated_solinas.ml | 0m24.41s | 1705940 ko || -0m00.16s || 0 ko | -0.65% | +0.00% 0m24.16s | 154696 ko | fiat-go/64/p434/p434.go | 0m23.40s | 154816 ko || +0m00.76s || -120 ko | +3.24% | -0.07% 0m23.51s | 161476 ko | fiat-json/src/p434_64.json | 0m23.73s | 161268 ko || -0m00.21s || 208 ko | -0.92% | +0.12% 0m23.18s | 865764 ko | Bedrock/Field/Synthesis/Examples/LadderStep.vo | 0m23.04s | 866356 ko || +0m00.14s || -592 ko | +0.60% | -0.06% 0m22.42s | 790944 ko | Bedrock/Field/Translation/Proofs/Expr.vo | 0m22.28s | 791304 ko || +0m00.14s || -360 ko | +0.62% | -0.04% 0m22.39s | 161208 ko | fiat-c/src/p434_64.c | 0m22.54s | 161128 ko || -0m00.14s || 80 ko | -0.66% | +0.04% 0m21.52s | 1703968 ko | ExtractionOCaml/bedrock2_base_conversion.ml | 0m21.58s | 1704056 ko || -0m00.05s || -88 ko | -0.27% | -0.00% 0m21.19s | 821980 ko | PushButtonSynthesis/WordByWordMontgomery.vo | 0m21.45s | 821752 ko || -0m00.25s || 228 ko | -1.21% | +0.02% 0m20.89s | 734160 ko | Bedrock/Field/Translation/Proofs/LoadStoreList.vo | 0m20.98s | 734052 ko || -0m00.08s || 108 ko | -0.42% | +0.01% 0m20.80s | 169984 ko | fiat-rust/src/p434_64.rs | 0m20.71s | 169996 ko || +0m00.08s || -12 ko | +0.43% | -0.00% 0m19.84s | 1646164 ko | ExtractionOCaml/base_conversion.ml | 0m20.00s | 1646408 ko || -0m00.16s || -244 ko | -0.80% | -0.01% 0m19.01s | 1651992 ko | ExtractionOCaml/saturated_solinas.ml | 0m19.91s | 1649388 ko || -0m00.89s || 2604 ko | -4.52% | +0.15% 0m18.29s | 1821048 ko | ExtractionOCaml/perf_word_by_word_montgomery.ml | 0m18.38s | 1820724 ko || -0m00.08s || 324 ko | -0.48% | +0.01% 0m18.14s | 820032 ko | Bedrock/Field/Synthesis/Examples/X1305_32.vo | 0m18.11s | 820036 ko || +0m00.03s || -4 ko | +0.16% | -0.00% 0m17.93s | 943124 ko | StandaloneDebuggingExamples.vo | 0m18.00s | 943136 ko || -0m00.07s || -12 ko | -0.38% | -0.00% 0m17.88s | 847492 ko | Bedrock/End2End/RupicolaCrypto/Low.vo | 0m18.04s | 847304 ko || -0m00.16s || 188 ko | -0.88% | +0.02% 0m17.45s | 1931916 ko | ExtractionHaskell/bedrock2_word_by_word_montgomery.hs | 0m17.19s | 1931840 ko || +0m00.25s || 76 ko | +1.51% | +0.00% 0m17.00s | 1778328 ko | ExtractionOCaml/perf_unsaturated_solinas.ml | 0m17.14s | 1777956 ko || -0m00.14s || 372 ko | -0.81% | +0.02% 0m16.71s | 532988 ko | Arithmetic/WordByWordMontgomery.vo | 0m16.42s | 533328 ko || +0m00.28s || -340 ko | +1.76% | -0.06% 0m16.67s | 754944 ko | PushButtonSynthesis/FancyMontgomeryReductionReificationCache.vo | 0m16.69s | 755004 ko || -0m00.01s || -60 ko | -0.11% | -0.00% 0m16.63s | 831228 ko | Curves/Edwards/XYZT/Basic.vo | 0m16.80s | 831440 ko || -0m00.17s || -212 ko | -1.01% | -0.02% 0m16.61s | 1848496 ko | ExtractionHaskell/word_by_word_montgomery.hs | 0m16.63s | 1848964 ko || -0m00.01s || -468 ko | -0.12% | -0.02% 0m16.54s | 727500 ko | Bedrock/End2End/RupicolaCrypto/Derive.vo | 0m16.40s | 727360 ko || +0m00.14s || 140 ko | +0.85% | +0.01% 0m15.65s | 726436 ko | Curves/Edwards/AffineProofs.vo | 0m15.49s | 726168 ko || +0m00.16s || 268 ko | +1.03% | +0.03% 0m15.19s | 135368 ko | fiat-bedrock2/src/p224_32.c | 0m15.22s | 134820 ko || -0m00.03s || 548 ko | -0.19% | +0.40% 0m15.18s | 790840 ko | Bedrock/Field/Translation/Proofs/Func.vo | 0m15.98s | 790980 ko || -0m00.80s || -140 ko | -5.00% | -0.01% 0m15.07s | 515772 ko | Arithmetic/BarrettReduction.vo | 0m15.03s | 515900 ko || +0m00.04s || -128 ko | +0.26% | -0.02% 0m14.75s | 800572 ko | Bedrock/End2End/Poly1305/Field1305.vo | 0m14.66s | 800468 ko || +0m00.08s || 104 ko | +0.61% | +0.01% 0m14.34s | 119540 ko | fiat-zig/src/p224_32.zig | 0m14.40s | 119716 ko || -0m00.06s || -176 ko | -0.41% | -0.14% 0m14.15s | 134416 ko | fiat-java/src/FiatP224.java | 0m14.19s | 134372 ko || -0m00.03s || 44 ko | -0.28% | +0.03% 0m14.11s | 460396 ko | Algebra/Field.vo | 0m14.06s | 460312 ko || +0m00.04s || 84 ko | +0.35% | +0.01% 0m14.11s | 134736 ko | fiat-go/32/p224/p224.go | 0m13.86s | 134624 ko || +0m00.25s || 112 ko | +1.80% | +0.08% 0m14.03s | 482592 ko | Arithmetic/Core.vo | 0m14.04s | 482508 ko || -0m00.00s || 84 ko | -0.07% | +0.01% 0m13.84s | 668096 ko | Bedrock/Group/AdditionChains.vo | 0m13.62s | 667924 ko || +0m00.22s || 172 ko | +1.61% | +0.02% 0m13.55s | 588324 ko | Bedrock/Field/Common/Util.vo | 0m13.49s | 588840 ko || +0m00.06s || -516 ko | +0.44% | -0.08% 0m13.43s | 116236 ko | fiat-c/src/p224_32.c | 0m13.66s | 116720 ko || -0m00.23s || -484 ko | -1.68% | -0.41% 0m13.03s | 1549244 ko | ExtractionHaskell/bedrock2_unsaturated_solinas.hs | 0m13.15s | 1549436 ko || -0m00.12s || -192 ko | -0.91% | -0.01% 0m12.90s | 971168 ko | Bedrock/End2End/X25519/MontgomeryLadderProperties.vo | 0m13.02s | 971124 ko || -0m00.11s || 44 ko | -0.92% | +0.00% 0m12.90s | 657996 ko | Bedrock/Group/ScalarMult/LadderStep.vo | 0m12.80s | 657880 ko || +0m00.09s || 116 ko | +0.78% | +0.01% 0m12.72s | 136740 ko | fiat-rust/src/p224_32.rs | 0m13.56s | 136564 ko || -0m00.83s || 176 ko | -6.19% | +0.12% 0m12.70s | 833352 ko | Bedrock/Field/Synthesis/New/Signature.vo | 0m13.10s | 833596 ko || -0m00.40s || -244 ko | -3.05% | -0.02% 0m12.59s | 1542716 ko | ExtractionHaskell/unsaturated_solinas.hs | 0m12.74s | 1542688 ko || -0m00.15s || 28 ko | -1.17% | +0.00% 0m12.30s | 841348 ko | PushButtonSynthesis/SmallExamples.vo | 0m12.30s | 841420 ko || +0m00.00s || -72 ko | +0.00% | -0.00% 0m12.27s | 89364 ko | fiat-bedrock2/src/p384_64.c | 0m12.12s | 89116 ko || +0m00.15s || 248 ko | +1.23% | +0.27% 0m12.19s | 1488728 ko | ExtractionHaskell/bedrock2_base_conversion.hs | 0m11.35s | 1488816 ko || +0m00.83s || -88 ko | +7.40% | -0.00% 0m11.26s | 1488656 ko | ExtractionHaskell/bedrock2_saturated_solinas.hs | 0m11.33s | 1488936 ko || -0m00.07s || -280 ko | -0.61% | -0.01% 0m11.25s | 1378336 ko | ExtractionHaskell/base_conversion.hs | 0m10.60s | 1378392 ko || +0m00.65s || -56 ko | +6.13% | -0.00% 0m11.01s | 113036 ko | fiat-json/src/p384_64.json | 0m10.96s | 113164 ko || +0m00.04s || -128 ko | +0.45% | -0.11% 0m10.97s | 97280 ko | fiat-go/64/p384/p384.go | 0m11.07s | 97208 ko || -0m00.09s || 72 ko | -0.90% | +0.07% 0m10.92s | 603084 ko | Bedrock/Field/Translation/Proofs/Flatten.vo | 0m10.54s | 603676 ko || +0m00.38s || -592 ko | +3.60% | -0.09% 0m10.87s | 105140 ko | fiat-zig/src/p384_64.zig | 0m10.87s | 105204 ko || +0m00.00s || -64 ko | +0.00% | -0.06% 0m10.82s | 1429068 ko | ExtractionHaskell/saturated_solinas.hs | 0m10.75s | 1429292 ko || +0m00.07s || -224 ko | +0.65% | -0.01% 0m10.71s | 98680 ko | fiat-rust/src/p384_64.rs | 0m10.58s | 99216 ko || +0m00.13s || -536 ko | +1.22% | -0.54% 0m10.29s | 100764 ko | fiat-c/src/p384_64.c | 0m10.53s | 100840 ko || -0m00.24s || -76 ko | -2.27% | -0.07% 0m10.27s | 1323388 ko | Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo | 0m10.14s | 1323312 ko || +0m00.12s || 76 ko | +1.28% | +0.00% 0m10.22s | 472772 ko | Primitives/MxDHRepChange.vo | 0m10.24s | 472628 ko || -0m00.01s || 144 ko | -0.19% | +0.03% 0m09.54s | 651888 ko | Bedrock/Group/ScalarMult/CSwap.vo | 0m09.56s | 651896 ko || -0m00.02s || -8 ko | -0.20% | -0.00% 0m09.37s | 450344 ko | Algebra/Ring.vo | 0m09.45s | 450292 ko || -0m00.08s || 52 ko | -0.84% | +0.01% 0m08.51s | 107092 ko | fiat-json/src/p448_solinas_32.json | 0m08.22s | 106856 ko || +0m00.28s || 236 ko | +3.52% | +0.22% 0m08.17s | 902368 ko | Bedrock/Field/Translation/Proofs/EquivalenceProperties.vo | 0m08.08s | 901208 ko || +0m00.08s || 1160 ko | +1.11% | +0.12% 0m08.14s | 49928 ko | fiat-zig/src/p448_solinas_32.zig | 0m08.14s | 49960 ko || +0m00.00s || -32 ko | +0.00% | -0.06% 0m08.10s | 695232 ko | PushButtonSynthesis/BaseConversion.vo | 0m08.07s | 695140 ko || +0m00.02s || 92 ko | +0.37% | +0.01% 0m08.01s | 49284 ko | fiat-rust/src/p448_solinas_32.rs | 0m08.05s | 49028 ko || -0m00.04s || 256 ko | -0.49% | +0.52% 0m07.95s | 50232 ko | fiat-c/src/p448_solinas_32.c | 0m07.96s | 50288 ko || -0m00.00s || -56 ko | -0.12% | -0.11% 0m07.33s | 703396 ko | PushButtonSynthesis/Primitives.vo | 0m07.37s | 703532 ko || -0m00.04s || -136 ko | -0.54% | -0.01% 0m06.70s | 600556 ko | PushButtonSynthesis/SaturatedSolinasReificationCache.vo | 0m06.66s | 600488 ko || +0m00.04s || 68 ko | +0.60% | +0.01% 0m06.53s | 464132 ko | Arithmetic/FancyMontgomeryReduction.vo | 0m06.56s | 464024 ko || -0m00.02s || 108 ko | -0.45% | +0.02% 0m06.20s | 828840 ko | Bedrock/Field/Translation/Proofs/UsedVarnames.vo | 0m06.24s | 829040 ko || -0m00.04s || -200 ko | -0.64% | -0.02% 0m05.44s | 500740 ko | Arithmetic/BYInv.vo | 0m05.23s | 500620 ko || +0m00.20s || 120 ko | +4.01% | +0.02% 0m05.36s | 735980 ko | Bedrock/Field/Synthesis/Examples/EncodeDecode.vo | 0m05.40s | 735884 ko || -0m00.04s || 96 ko | -0.74% | +0.01% 0m05.14s | 525612 ko | Fancy/Prod.vo | 0m05.32s | 525640 ko || -0m00.18s || -28 ko | -3.38% | -0.00% 0m05.08s | 490584 ko | COperationSpecifications.vo | 0m04.98s | 490468 ko || +0m00.09s || 116 ko | +2.00% | +0.02% 0m04.85s | 459368 ko | Util/FsatzAutoLemmas.vo | 0m04.83s | 459464 ko || +0m00.01s || -96 ko | +0.41% | -0.02% 0m04.81s | 500640 ko | Curves/Edwards/Pre.vo | 0m04.76s | 500728 ko || +0m00.04s || -88 ko | +1.05% | -0.01% 0m04.77s | 686920 ko | PushButtonSynthesis/BarrettReduction.vo | 0m04.66s | 686904 ko || +0m00.10s || 16 ko | +2.36% | +0.00% 0m04.12s | 474680 ko | Algebra/Field_test.vo | 0m04.08s | 474604 ko || +0m00.04s || 76 ko | +0.98% | +0.01% 0m04.09s | 457004 ko | UnsaturatedSolinasHeuristics.vo | 0m03.94s | 456964 ko || +0m00.14s || 40 ko | +3.80% | +0.00% 0m04.08s | 34728 ko | fiat-go/64/p521/p521.go | 0m03.69s | 34624 ko || +0m00.39s || 104 ko | +10.56% | +0.30% 0m03.91s | 483984 ko | Curves/Montgomery/Affine.vo | 0m03.76s | 484132 ko || +0m00.15s || -148 ko | +3.98% | -0.03% 0m03.84s | 759328 ko | Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo | 0m03.83s | 759480 ko || +0m00.00s || -152 ko | +0.26% | -0.02% 0m03.82s | 44204 ko | fiat-bedrock2/src/p521_64.c | 0m03.79s | 44288 ko || +0m00.02s || -84 ko | +0.79% | -0.18% 0m03.75s | 602168 ko | Bedrock/Field/Synthesis/Generic/Bignum.vo | 0m03.19s | 601884 ko || +0m00.56s || 284 ko | +17.55% | +0.04% 0m03.62s | 452916 ko | Arithmetic/UniformWeight.vo | 0m03.59s | 452840 ko || +0m00.03s || 76 ko | +0.83% | +0.01% 0m03.44s | 669884 ko | Bedrock/Group/ScalarMult/ScalarMult.vo | 0m03.85s | 669920 ko || -0m00.41s || -36 ko | -10.64% | -0.00% 0m03.31s | 564880 ko | PushButtonSynthesis/BaseConversionReificationCache.vo | 0m03.37s | 564728 ko || -0m00.06s || 152 ko | -1.78% | +0.02% 0m03.25s | 723560 ko | Bedrock/Field/Synthesis/Examples/MulTwice.vo | 0m03.29s | 723480 ko || -0m00.04s || 80 ko | -1.21% | +0.01% 0m03.24s | 39160 ko | fiat-json/src/p521_64.json | 0m03.27s | 38948 ko || -0m00.02s || 212 ko | -0.91% | +0.54% 0m03.18s | 29760 ko | fiat-zig/src/p521_64.zig | 0m03.16s | 30112 ko || +0m00.02s || -352 ko | +0.63% | -1.16% 0m03.17s | 696272 ko | PushButtonSynthesis/FancyMontgomeryReduction.vo | 0m03.16s | 696292 ko || +0m00.00s || -20 ko | +0.31% | -0.00% 0m03.13s | 28368 ko | fiat-c/src/p521_64.c | 0m03.09s | 28348 ko || +0m00.04s || 20 ko | +1.29% | +0.07% 0m03.13s | 26928 ko | fiat-rust/src/p521_64.rs | 0m03.12s | 26860 ko || +0m00.00s || 68 ko | +0.32% | +0.25% 0m03.08s | 392784 ko | Algebra/Group.vo | 0m03.04s | 392780 ko || +0m00.04s || 4 ko | +1.31% | +0.00% 0m03.04s | 46732 ko | fiat-bedrock2/src/secp256k1_64.c | 0m03.10s | 46996 ko || -0m00.06s || -264 ko | -1.93% | -0.56% 0m02.93s | 709176 ko | Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo | 0m02.96s | 709088 ko || -0m00.02s || 88 ko | -1.01% | +0.01% 0m02.88s | 614332 ko | Bedrock/Field/Interface/Compilation2.vo | 0m02.92s | 614332 ko || -0m00.04s || 0 ko | -1.36% | +0.00% 0m02.85s | 693400 ko | PushButtonSynthesis/SaturatedSolinas.vo | 0m02.94s | 693236 ko || -0m00.08s || 164 ko | -3.06% | +0.02% 0m02.74s | 44536 ko | fiat-go/64/secp256k1/secp256k1.go | 0m02.74s | 44672 ko || +0m00.00s || -136 ko | +0.00% | -0.30% 0m02.73s | 53436 ko | fiat-json/src/secp256k1_64.json | 0m02.74s | 53204 ko || -0m00.01s || 232 ko | -0.36% | +0.43% 0m02.68s | 41180 ko | fiat-bedrock2/src/p448_solinas_64.c | 0m02.65s | 41316 ko || +0m00.03s || -136 ko | +1.13% | -0.32% 0m02.68s | 37156 ko | fiat-go/64/p448solinas/p448solinas.go | 0m02.74s | 37104 ko || -0m00.06s || 52 ko | -2.18% | +0.14% 0m02.67s | 44656 ko | fiat-zig/src/secp256k1_64.zig | 0m02.69s | 44596 ko || -0m00.02s || 60 ko | -0.74% | +0.13% 0m02.58s | 723812 ko | CLI.vo | 0m02.68s | 723980 ko || -0m00.10s || -168 ko | -3.73% | -0.02% 0m02.57s | 44360 ko | fiat-rust/src/secp256k1_64.rs | 0m02.61s | 44396 ko || -0m00.04s || -36 ko | -1.53% | -0.08% 0m02.54s | 45360 ko | fiat-c/src/secp256k1_64.c | 0m02.53s | 45588 ko || +0m00.01s || -228 ko | +0.39% | -0.50% 0m02.52s | 39680 ko | fiat-bedrock2/src/curve25519_32.c | 0m02.56s | 39720 ko || -0m00.04s || -40 ko | -1.56% | -0.10% 0m02.37s | 46872 ko | fiat-bedrock2/src/p224_64.c | 0m02.41s | 46576 ko || -0m00.04s || 296 ko | -1.65% | +0.63% 0m02.35s | 460112 ko | Spec/MontgomeryCurve.vo | 0m02.34s | 460088 ko || +0m00.01s || 24 ko | +0.42% | +0.00% 0m02.28s | 43440 ko | fiat-bedrock2/src/p256_64.c | 0m02.20s | 43528 ko || +0m00.07s || -88 ko | +3.63% | -0.20% 0m02.25s | 454396 ko | Arithmetic/Freeze.vo | 0m02.21s | 454772 ko || +0m00.04s || -376 ko | +1.80% | -0.08% 0m02.18s | 588096 ko | Bedrock/Field/Common/Arrays/MakeAccessSizes.vo | 0m02.29s | 588020 ko || -0m00.10s || 76 ko | -4.80% | +0.01% 0m02.14s | 40248 ko | fiat-go/64/p224/p224.go | 0m01.99s | 40284 ko || +0m00.15s || -36 ko | +7.53% | -0.08% 0m02.09s | 39688 ko | fiat-json/src/p448_solinas_64.json | 0m01.96s | 39748 ko || +0m00.12s || -60 ko | +6.63% | -0.15% 0m02.06s | 453840 ko | Arithmetic/BaseConversion.vo | 0m02.04s | 453836 ko || +0m00.02s || 4 ko | +0.98% | +0.00% 0m02.06s | 39184 ko | fiat-go/64/p256/p256.go | 0m02.04s | 39216 ko || +0m00.02s || -32 ko | +0.98% | -0.08% 0m02.05s | 26980 ko | fiat-go/32/curve25519/curve25519.go | 0m02.07s | 26868 ko || -0m00.02s || 112 ko | -0.96% | +0.41% 0m02.04s | 49664 ko | fiat-json/src/p224_64.json | 0m02.01s | 49476 ko || +0m00.03s || 188 ko | +1.49% | +0.37% 0m01.96s | 26676 ko | fiat-zig/src/p448_solinas_64.zig | 0m01.97s | 27080 ko || -0m00.01s || -404 ko | -0.50% | -1.49% 0m01.94s | 40704 ko | fiat-c/src/p224_64.c | 0m01.93s | 40252 ko || +0m00.01s || 452 ko | +0.51% | +1.12% 0m01.93s | 49468 ko | fiat-json/src/p256_64.json | 0m01.89s | 49376 ko || +0m00.04s || 92 ko | +2.11% | +0.18% 0m01.93s | 40740 ko | fiat-rust/src/p224_64.rs | 0m01.92s | 40492 ko || +0m00.01s || 248 ko | +0.52% | +0.61% 0m01.92s | 26844 ko | fiat-rust/src/p448_solinas_64.rs | 0m01.90s | 26956 ko || +0m00.02s || -112 ko | +1.05% | -0.41% 0m01.91s | 26608 ko | fiat-c/src/p448_solinas_64.c | 0m01.92s | 26716 ko || -0m00.01s || -108 ko | -0.52% | -0.40% 0m01.88s | 44196 ko | fiat-rust/src/p256_64.rs | 0m01.87s | 44064 ko || +0m00.00s || 132 ko | +0.53% | +0.29% 0m01.86s | 41276 ko | fiat-json/src/curve25519_32.json | 0m01.89s | 41216 ko || -0m00.02s || 60 ko | -1.58% | +0.14% 0m01.85s | 38212 ko | fiat-c/src/p256_64.c | 0m01.83s | 38464 ko || +0m00.02s || -252 ko | +1.09% | -0.65% 0m01.85s | 41992 ko | fiat-zig/src/p224_64.zig | 0m01.92s | 41908 ko || -0m00.06s || 84 ko | -3.64% | +0.20% 0m01.84s | 611976 ko | Bedrock/Group/ScalarMult/MontgomeryEquivalence.vo | 0m01.89s | 611848 ko || -0m00.04s || 128 ko | -2.64% | +0.02% 0m01.84s | 42996 ko | fiat-zig/src/p256_64.zig | 0m01.84s | 43260 ko || +0m00.00s || -264 ko | +0.00% | -0.61% 0m01.76s | 26732 ko | fiat-java/src/FiatCurve25519.java | 0m01.77s | 26512 ko || -0m00.01s || 220 ko | -0.56% | +0.82% 0m01.73s | 27128 ko | fiat-c/src/curve25519_32.c | 0m01.77s | 26964 ko || -0m00.04s || 164 ko | -2.25% | +0.60% 0m01.72s | 26188 ko | fiat-zig/src/curve25519_32.zig | 0m01.75s | 26120 ko || -0m00.03s || 68 ko | -1.71% | +0.26% 0m01.71s | 25576 ko | fiat-rust/src/curve25519_32.rs | 0m01.73s | 25920 ko || -0m00.02s || -344 ko | -1.15% | -1.32% 0m01.67s | 452020 ko | Arithmetic/ModOps.vo | 0m01.70s | 451924 ko || -0m00.03s || 96 ko | -1.76% | +0.02% 0m01.64s | 596532 ko | Bedrock/Field/Common/Names/MakeNames.vo | 0m01.78s | 596440 ko || -0m00.14s || 92 ko | -7.86% | +0.01% 0m01.62s | 442476 ko | Arithmetic/ModularArithmeticTheorems.vo | 0m01.61s | 442388 ko || +0m00.01s || 88 ko | +0.62% | +0.01% 0m01.40s | 723572 ko | Rewriter/PerfTesting/Core.vo | 0m01.38s | 723680 ko || +0m00.02s || -108 ko | +1.44% | -0.01% 0m01.38s | 435340 ko | Spec/WeierstrassCurve.vo | 0m01.39s | 435204 ko || -0m00.01s || 136 ko | -0.71% | +0.03% 0m01.34s | 419196 ko | Algebra/ScalarMult.vo | 0m01.36s | 419012 ko || -0m00.02s || 184 ko | -1.47% | +0.04% 0m01.34s | 695436 ko | Bedrock/Field/Stringification/Stringification.vo | 0m01.32s | 695400 ko || +0m00.02s || 36 ko | +1.51% | +0.00% 0m01.27s | 619712 ko | Bedrock/Specs/Field.vo | 0m01.28s | 619712 ko || -0m00.01s || 0 ko | -0.78% | +0.00% 0m01.24s | 443528 ko | Arithmetic/Partition.vo | 0m01.17s | 443520 ko || +0m00.07s || 8 ko | +5.98% | +0.00% 0m01.19s | 466472 ko | Arithmetic/PrimeFieldTheorems.vo | 0m01.22s | 466572 ko || -0m00.03s || -100 ko | -2.45% | -0.02% 0m01.19s | 729348 ko | Bedrock/Field/Synthesis/Specialized/WordByWordMontgomery.vo | 0m01.16s | 729312 ko || +0m00.03s || 36 ko | +2.58% | +0.00% 0m01.18s | 717524 ko | Bedrock/Field/Synthesis/Specialized/UnsaturatedSolinas.vo | 0m01.16s | 717740 ko || +0m00.02s || -216 ko | +1.72% | -0.03% 0m01.18s | 701836 ko | Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo | 0m01.15s | 701820 ko || +0m00.03s || 16 ko | +2.60% | +0.00% 0m01.14s | 711000 ko | StandaloneOCamlMain.vo | 0m01.09s | 711028 ko || +0m00.04s || -28 ko | +4.58% | -0.00% 0m01.09s | 745320 ko | Bedrock/Standalone/StandaloneHaskellMain.vo | 0m01.15s | 745348 ko || -0m00.05s || -28 ko | -5.21% | -0.00% 0m01.08s | 697528 ko | Bedrock/Field/Synthesis/Generic/Operation.vo | 0m01.08s | 697352 ko || +0m00.00s || 176 ko | +0.00% | +0.02% 0m01.08s | 734036 ko | Rewriter/PerfTesting/StandaloneOCamlMain.vo | 0m01.11s | 733984 ko || -0m00.03s || 52 ko | -2.70% | +0.00% 0m01.07s | 597424 ko | Bedrock/Field/Common/Arrays/MaxBounds.vo | 0m01.09s | 597216 ko || -0m00.02s || 208 ko | -1.83% | +0.03% 0m01.06s | 702512 ko | Bedrock/Field/Synthesis/Specialized/ReifiedOperation.vo | 0m01.04s | 702364 ko || +0m00.02s || 148 ko | +1.92% | +0.02% 0m01.05s | 695308 ko | Bedrock/Field/Synthesis/Specialized/Tactics.vo | 0m01.11s | 695460 ko || -0m00.06s || -152 ko | -5.40% | -0.02% 0m01.04s | 693912 ko | Bedrock/Field/Synthesis/Generic/Tactics.vo | 0m01.13s | 693824 ko || -0m00.08s || 88 ko | -7.96% | +0.01% 0m01.03s | 711012 ko | StandaloneHaskellMain.vo | 0m01.01s | 710808 ko || +0m00.02s || 204 ko | +1.98% | +0.02% 0m01.02s | 713540 ko | Bedrock/Field/Synthesis/New/ComputedOp.vo | 0m00.97s | 713532 ko || +0m00.05s || 8 ko | +5.15% | +0.00% 0m01.01s | 438384 ko | Curves/Edwards/XYZT/Precomputed.vo | 0m01.02s | 438288 ko || -0m00.01s || 96 ko | -0.98% | +0.02% 0m00.99s | 588484 ko | Bedrock/Field/Common/Arrays/ByteBounds.vo | 0m00.97s | 588468 ko || +0m00.02s || 16 ko | +2.06% | +0.00% 0m00.98s | 745588 ko | Bedrock/Standalone/StandaloneOCamlMain.vo | 0m01.00s | 745520 ko || -0m00.02s || 68 ko | -2.00% | +0.00% 0m00.96s | 655460 ko | Bedrock/Field/Translation/Parameters/Defaults32.vo | 0m00.97s | 655516 ko || -0m00.01s || -56 ko | -1.03% | -0.00% 0m00.91s | 650960 ko | Bedrock/Field/Translation/Parameters/Defaults.vo | 0m00.93s | 650964 ko || -0m00.02s || -4 ko | -2.15% | -0.00% 0m00.91s | 655616 ko | Bedrock/Field/Translation/Parameters/Defaults64.vo | 0m00.95s | 655540 ko || -0m00.03s || 76 ko | -4.21% | +0.01% 0m00.89s | 610812 ko | Bedrock/Group/Point.vo | 0m00.91s | 610968 ko || -0m00.02s || -156 ko | -2.19% | -0.02% 0m00.86s | 608444 ko | Bedrock/Field/Interface/Representation.vo | 0m00.93s | 608228 ko || -0m00.07s || 216 ko | -7.52% | +0.03% 0m00.84s | 424488 ko | Curves/Montgomery/AffineInstances.vo | 0m00.86s | 424488 ko || -0m00.02s || 0 ko | -2.32% | +0.00% 0m00.76s | 580932 ko | Bedrock/Field/Common/Tactics.vo | 0m00.80s | 580944 ko || -0m00.04s || -12 ko | -5.00% | -0.00% 0m00.65s | 419948 ko | Algebra/IntegralDomain.vo | 0m00.67s | 419940 ko || -0m00.02s || 8 ko | -2.98% | +0.00% 0m00.64s | 24856 ko | fiat-go/64/curve25519/curve25519.go | 0m00.63s | 24856 ko || +0m00.01s || 0 ko | +1.58% | +0.00% 0m00.62s | 28032 ko | fiat-bedrock2/src/curve25519_64.c | 0m00.61s | 27932 ko || +0m00.01s || 100 ko | +1.63% | +0.35% 0m00.58s | 417548 ko | Algebra/SubsetoidRing.vo | 0m00.55s | 417472 ko || +0m00.02s || 76 ko | +5.45% | +0.01% 0m00.58s | 462092 ko | ArithmeticCPS/WordByWordMontgomery.vo | 0m00.53s | 462024 ko || +0m00.04s || 68 ko | +9.43% | +0.01% 0m00.55s | 449476 ko | ArithmeticCPS/Saturated.vo | 0m00.45s | 449424 ko || +0m00.10s || 52 ko | +22.22% | +0.01% 0m00.51s | 458836 ko | ArithmeticCPS/Freeze.vo | 0m00.47s | 458844 ko || +0m00.04s || -8 ko | +8.51% | -0.00% 0m00.51s | 447880 ko | Bedrock/Specs/Group.vo | 0m00.55s | 447720 ko || -0m00.04s || 160 ko | -7.27% | +0.03% 0m00.50s | 458932 ko | ArithmeticCPS/BaseConversion.vo | 0m00.41s | 458888 ko || +0m00.09s || 44 ko | +21.95% | +0.00% 0m00.50s | 453764 ko | ArithmeticCPS/ModOps.vo | 0m00.49s | 453232 ko || +0m00.01s || 532 ko | +2.04% | +0.11% 0m00.50s | 27960 ko | fiat-json/src/curve25519_64.json | 0m00.49s | 27740 ko || +0m00.01s || 220 ko | +2.04% | +0.79% 0m00.48s | 447108 ko | ArithmeticCPS/Core.vo | 0m00.52s | 447184 ko || -0m00.04s || -76 ko | -7.69% | -0.01% 0m00.48s | 473680 ko | Bedrock/End2End/RupicolaCrypto/Spec.vo | 0m00.51s | 473628 ko || -0m00.03s || 52 ko | -5.88% | +0.01% 0m00.46s | 22288 ko | fiat-c/src/curve25519_64.c | 0m00.46s | 22288 ko || +0m00.00s || 0 ko | +0.00% | +0.00% 0m00.45s | 22652 ko | fiat-zig/src/curve25519_64.zig | 0m00.45s | 22564 ko || +0m00.00s || 88 ko | +0.00% | +0.39% 0m00.44s | 467020 ko | Arithmetic/FLia.vo | 0m00.46s | 467028 ko || -0m00.02s || -8 ko | -4.34% | -0.00% 0m00.44s | 22876 ko | fiat-rust/src/curve25519_64.rs | 0m00.44s | 22996 ko || +0m00.00s || -120 ko | +0.00% | -0.52% 0m00.35s | 421796 ko | Curves/Weierstrass/Affine.vo | 0m00.37s | 421640 ko || -0m00.02s || 156 ko | -5.40% | +0.03% 0m00.35s | 26356 ko | fiat-bedrock2/src/poly1305_32.c | 0m00.36s | 26220 ko || -0m00.01s || 136 ko | -2.77% | +0.51% 0m00.34s | 420588 ko | Spec/CompleteEdwardsCurve.vo | 0m00.38s | 420564 ko || -0m00.03s || 24 ko | -10.52% | +0.00% 0m00.29s | 363984 ko | Curves/Montgomery/XZ.vo | 0m00.31s | 363988 ko || -0m00.02s || -4 ko | -6.45% | -0.00% 0m00.29s | 22212 ko | fiat-go/32/poly1305/poly1305.go | 0m00.29s | 22220 ko || +0m00.00s || -8 ko | +0.00% | -0.03% 0m00.25s | 353344 ko | Util/AdditionChainExponentiation.vo | 0m00.20s | 353308 ko || +0m00.04s || 36 ko | +24.99% | +0.01% 0m00.25s | 26260 ko | fiat-json/src/poly1305_32.json | 0m00.24s | 26356 ko || +0m00.01s || -96 ko | +4.16% | -0.36% 0m00.22s | 21252 ko | fiat-java/src/FiatPoly1305.java | 0m00.23s | 21660 ko || -0m00.01s || -408 ko | -4.34% | -1.88% 0m00.20s | 21536 ko | fiat-c/src/poly1305_32.c | 0m00.20s | 21560 ko || +0m00.00s || -24 ko | +0.00% | -0.11% 0m00.20s | 21452 ko | fiat-zig/src/poly1305_32.zig | 0m00.23s | 21532 ko || -0m00.03s || -80 ko | -13.04% | -0.37% 0m00.19s | 21272 ko | fiat-rust/src/poly1305_32.rs | 0m00.20s | 21456 ko || -0m00.01s || -184 ko | -5.00% | -0.85% 0m00.18s | 22320 ko | fiat-go/64/poly1305/poly1305.go | 0m00.18s | 21924 ko || +0m00.00s || 396 ko | +0.00% | +1.80% 0m00.16s | 24456 ko | fiat-bedrock2/src/poly1305_64.c | 0m00.15s | 24472 ko || +0m00.01s || -16 ko | +6.66% | -0.06% 0m00.14s | 24140 ko | fiat-json/src/poly1305_64.json | 0m00.15s | 24376 ko || -0m00.00s || -236 ko | -6.66% | -0.96% 0m00.12s | 20776 ko | fiat-zig/src/poly1305_64.zig | 0m00.11s | 20772 ko || +0m00.00s || 4 ko | +9.09% | +0.01% 0m00.11s | 20884 ko | fiat-c/src/poly1305_64.c | 0m00.12s | 20752 ko || -0m00.00s || 132 ko | -8.33% | +0.63% 0m00.11s | 20676 ko | fiat-rust/src/poly1305_64.rs | 0m00.11s | 20828 ko || +0m00.00s || -152 ko | +0.00% | -0.72% 0m00.08s | 220884 ko | Util/Relations.vo | 0m00.14s | 189384 ko || -0m00.06s || 31500 ko | -42.85% | +16.63% ``` </p> </details> 19 May 2022, 23:07:00 UTC
6833012 Fix some structures arguments (#1243) 19 May 2022, 19:31:40 UTC
e61c923 Add some basic FMap structures (#1239) Next Up: `FMapOption`, `FMapSum`, `FMapProd` 19 May 2022, 19:15:07 UTC
3f9a10f Rename WIsoSfun to IsoWSfun for slightly more consistency (#1242) 19 May 2022, 19:06:42 UTC
5cda6c7 Add `NoDupA_map_inv'` (#1241) 19 May 2022, 17:50:10 UTC
f352fca Add FMapSect (#1236) 19 May 2022, 10:56:14 UTC
998e4b6 Name the jobs in coq.yml (#1240) This way when we change the build params the job names won't change, so we don't have to keep updating the list of required checks. 19 May 2022, 03:20:53 UTC
c1fe902 Automatically skip bedrock2 on older versions of Coq (#1238) It's confusing to have `make` not work by default on older versions of Coq, I think, so instead when `SKIP_BEDROCK2` is unset we will set it by default on old versions of Coq. Fixes #1212 19 May 2022, 03:03:45 UTC
8f78fab Organize and fill out structures and orders (#1234) We're nearly at the point where we can use something like `FMapAVL` to optimize `Assembly/Symbolic`. (Tries would be better, but also harder.) What remains: 1. `src/Util/FSets/FMapSect` for showing that we don't need a full isomorphism to port FMap structure, only an injection 2. `src/Util/FSets/FMapOption` 3. `src/Util/FSets/FMapSum` 4. `src/Util/FSets/FMapFlip` (maybe?) 5. `src/Util/FSets/FMapProd` 6. `src/Util/FSets/FMapListViaAVL` (or similar) 7. Describing the injection from `op` to something like `N * option AccessSize * option symbol * option N * option N`. 8. Replacing dag with mapping from `idx` to `node idx * description`, and mapping from `node idx` to `idx`, and an `N` holding the total size of the dag. 9. Updating corresponding proofs. 10. (optional) using tries instead of AVL for list-keys 19 May 2022, 00:24:08 UTC
c2beb20 Add InA_map', the reverse direction of InA_map (#1235) 18 May 2022, 14:47:57 UTC
cff358a Add support for `is_true` relations in `setoid_subst_rel` (#1233) 16 May 2022, 13:23:01 UTC
eed0d16 Add `in_hyp_under_binders_do` (#1232) 13 May 2022, 18:04:02 UTC
9c07390 Add `specialize_all_ways_under_binders_by` (#1231) 13 May 2022, 15:42:09 UTC
8edf23d Add some more ordered types (#1230) 11 May 2022, 22:15:27 UTC
bf49a3f Build rupicola examples so we can use them 06 May 2022, 15:39:12 UTC
7bb6aeb Revert "Revert commits that don't build on master. (#1221)" This reverts commit 959e1c3f8b01f6523a7401eb66dfe42d39fcb25e. 06 May 2022, 15:39:12 UTC
ca08fc8 Bump actions/setup-java from 3.2.0 to 3.3.0 (#1229) 04 May 2022, 21:07:40 UTC
b1da4a1 Add more structures (towards tries) (#1226) 04 May 2022, 21:01:20 UTC
f32cc67 update rupicola/bedrock2/coqutil (#1228) after moving some lemmas from rupicola to coqutil/bedrock2 04 May 2022, 11:35:45 UTC
10539d5 Add a bunch of iso-based FMap and MSet stuff (#1222) 28 April 2022, 04:51:17 UTC
f9f6698 Rename some jobs for clarity (#1223) 27 April 2022, 17:46:51 UTC
4877569 Add pretty-printer for asm error messages (#1219) Prints things like ``` (addcarry₆₄, [((#15 >>₆₄ #10) +₆₄ (addcarry₆₄, [(#3 *₆₄ #5), ((#19 >>₆₄ #10) +₆₄ (addcarry₆₄, [#20, #26]))]))]) ≠ (addcarry₆₄, [(#15 >>₆₄ #10), (addcarry₆₄, [(#3 *₆₄ #5), (#19 >>₆₄ #10), (addcarry₆₄, [#20, #26])])]) ``` 27 April 2022, 16:55:12 UTC
959e1c3 Revert commits that don't build on master. (#1221) Revert "Prove compilation lemma for memcpy. TODO: needs cleanup" This reverts commit cb6a5f7621503ff9cf05223e910d57dc9c3c8c7b. Revert "Update to match felem spec and mostly implement memcpy lemma" This reverts commit 245d8fe64ec8143c0abf1f22a357f3eeff735c02. Revert "Update spec to use felems" This reverts commit dd949789cdc38511bd12641cd5133a6cde3588f1. Errors with ``` Error: Cannot find a physical path bound to logical path Rupicola.Examples.Loops. ``` Maybe the submodule needs to be updated? Please don't push commits that don't build on master, it breaks Coq's CI. 27 April 2022, 16:54:52 UTC
4ae6e21 Bump rupicola to fix broken build 27 April 2022, 16:54:40 UTC
cb6a5f7 Prove compilation lemma for memcpy. TODO: needs cleanup 27 April 2022, 00:00:36 UTC
245d8fe Update to match felem spec and mostly implement memcpy lemma 27 April 2022, 00:00:36 UTC
dd94978 Update spec to use felems 27 April 2022, 00:00:36 UTC
cc9748e Bump actions/setup-java from 3.1.1 to 3.2.0 (#1218) 26 April 2022, 21:50:36 UTC
f7f2104 Fold carry identity dropping into the general identity dropping (#1217) * Fold carry identity dropping into the general identity dropping * Fix for older Coqs 26 April 2022, 21:46:14 UTC
914d026 Add some operations to equivalence checker (#1191) We now support `mul`, `push`, `pop`. 26 April 2022, 11:51:27 UTC
538b3c7 Error if there are assembly files with no globals (#1216) Fix #1211 26 April 2022, 11:24:15 UTC
275366f Use poly parsing to support more labels (#1214) 22 April 2022, 22:17:42 UTC
d883c92 Add support for parsing polynomials (#1213) 22 April 2022, 22:17:27 UTC
c92aaad Add OCAMLOPT variable 22 April 2022, 13:59:51 UTC
ed2105e Better messages for unused labels 22 April 2022, 08:46:23 UTC
8049c38 Support 0F3h hex format 22 April 2022, 08:46:23 UTC
2aa3539 Fix show of prefix 22 April 2022, 08:46:23 UTC
3e14c75 Disable validate on Mac and Windows Currently the build is too slow :-( 21 April 2022, 20:12:37 UTC
c10d53f Print out more information about indices only present in asm 21 April 2022, 07:05:18 UTC
a3f2a72 Actual descriptions, not units <details><summary>Timing Diff since 831d6114a2c4b13b51c5985a48185c7bd2d5a3a8</summary> <p> ``` After | Peak Mem | File Name | Before | Peak Mem || Change || Change (mem) | % Change | % Change (mem) ---------------------------------------------------------------------------------------------------------------------------------------------------- 122m52.12s | 302392 ko | Total Time / Peak Mem | 103m15.27s | 327788 ko || +19m36.84s || -25396 ko | +18.99% | -7.74% ---------------------------------------------------------------------------------------------------------------------------------------------------- 52m14.52s | 302392 ko | fiat-amd64/p434-mul.only-status | 44m39.92s | 327788 ko || +7m34.59s || -25396 ko | +16.96% | -7.74% 49m00.50s | 289860 ko | fiat-amd64/p434-square.only-status | 41m46.12s | 280424 ko || +7m14.38s || 9436 ko | +17.33% | +3.36% 7m03.23s | 93856 ko | fiat-amd64/p384-mul.only-status | 5m42.95s | 93804 ko || +1m20.28s || 52 ko | +23.40% | +0.05% 6m17.51s | 93864 ko | fiat-amd64/p384-square.only-status | 5m09.63s | 84120 ko || +1m07.87s || 9744 ko | +21.92% | +11.58% 2m30.23s | 54948 ko | fiat-amd64/p448-mul.only-status | 1m46.05s | 50276 ko || +0m44.17s || 4672 ko | +41.65% | +9.29% 1m47.63s | 50300 ko | fiat-amd64/p521-mul.only-status | 1m10.69s | 45816 ko || +0m36.93s || 4484 ko | +52.25% | +9.78% 0m57.09s | 42144 ko | fiat-amd64/p448-square.only-status | 0m41.84s | 42168 ko || +0m15.25s || -24 ko | +36.44% | -0.05% 0m33.92s | 38808 ko | fiat-amd64/p224-square.only-status | 0m21.42s | 38620 ko || +0m12.50s || 188 ko | +58.35% | +0.48% 0m33.25s | 36436 ko | fiat-amd64/p224-mul.only-status | 0m22.94s | 36476 ko || +0m10.30s || -40 ko | +44.94% | -0.10% 0m17.85s | 36252 ko | fiat-amd64/p256-mul.only-status | 0m11.08s | 36188 ko || +0m06.77s || 64 ko | +61.10% | +0.17% 0m14.26s | 38104 ko | fiat-amd64/p256-square.only-status | 0m09.72s | 37620 ko || +0m04.53s || 484 ko | +46.70% | +1.28% 0m24.48s | 38740 ko | fiat-amd64/secp256k1-mul.only-status | 0m20.92s | 38780 ko || +0m03.55s || -40 ko | +17.01% | -0.10% 0m23.26s | 36288 ko | fiat-amd64/p521-square.only-status | 0m20.08s | 36152 ko || +0m03.18s || 136 ko | +15.83% | +0.37% 0m22.36s | 38900 ko | fiat-amd64/secp256k1-square.only-status | 0m19.29s | 39028 ko || +0m03.07s || -128 ko | +15.91% | -0.32% 0m04.70s | 26684 ko | fiat-amd64/curve25519-mul.only-status | 0m05.02s | 25720 ko || -0m00.31s || 964 ko | -6.37% | +3.74% 0m03.60s | 26752 ko | fiat-amd64/curve25519-square.only-status | 0m03.85s | 25700 ko || -0m00.25s || 1052 ko | -6.49% | +4.09% 0m01.88s | 22584 ko | fiat-amd64/poly1305-mul.only-status | 0m01.93s | 22620 ko || -0m00.05s || -36 ko | -2.59% | -0.15% 0m01.66s | 22168 ko | fiat-amd64/poly1305-square.only-status | 0m01.70s | 22296 ko || -0m00.04s || -128 ko | -2.35% | -0.57% 0m00.19s | 21616 ko | fiat-amd64/p224-sub.only-status | 0m00.13s | 21284 ko || +0m00.06s || 332 ko | +46.15% | +1.55% ``` </p> </details> 21 April 2022, 07:05:18 UTC
486fd3d Make dag_lookup faster 21 April 2022, 07:05:18 UTC
a26a2c9 Turn descriptions into units Hopefully this is fast enough to merge the other changes, and we can revert this at some future point when I figure out how to annotate dag indices with actual descriptions without making everything insanely slow. 21 April 2022, 07:05:18 UTC
9a956a8 Thunk descriptions for hopefully faster amd 64 tests 21 April 2022, 07:05:18 UTC
56412e2 Improve error messages of equivalence checker The dag now prints out where some indices came from, and assembly lines generating values that don't exist in PHOAS are annotated with the dag indices they generate. We also pave the way to display information about indices that appear only in the assembly and not in the PHOAS. We now get errors like: ``` check_args /* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul --no-wide-int --shiftr-avoid-uint1 --hints-file 'fiat-amd64/boringssl_intel_manual_mul_p256.asm' */ /* curve description: p256 */ /* machine_wordsize = 64 (from "64") */ /* requested operations: mul */ /* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */ /* */ /* NOTE: In addition to the bounds specified above each function, all */ /* functions synthesized for this Montgomery arithmetic require the */ /* input to be strictly less than the prime modulus (m), and also */ /* require the input to be in the unique saturated representation. */ /* All functions also ensure that these two properties are true of */ /* return values. */ /* */ /* Computed values: */ /* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) */ /* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) */ /* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */ /* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ In fiat_p256_mul: Error while checking for equivalence of syntax tree and assembly: The syntax tree: (λ x1 x2, let x3 := x1[1] (* : uint64_t *) in let x4 := x1[2] (* : uint64_t *) in let x5 := x1[3] (* : uint64_t *) in let x6 := x1[0] (* : uint64_t *) in let x7 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x8 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x9 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x10 := Z.mul_split(2^64, None, (x6, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x11 := Z.add_get_carry(2^64, None, (x10₂, Some [0x0 ~> 0xffffffffffffffff], (x9₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x12 := Z.add_with_get_carry(2^64, None, (x11₂, Some [0x0 ~> 0x1], (x9₂, Some [0x0 ~> 0xffffffffffffffff], (x8₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x13 := Z.add_with_get_carry(2^64, None, (x12₂, Some [0x0 ~> 0x1], (x8₂, Some [0x0 ~> 0xffffffffffffffff], (x7₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x14 := x13₂ + x7₂ (* : uint64_t *) in let x15 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x16 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x17 := Z.mul_split(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x18 := Z.add_get_carry(2^64, None, (x17₂, Some [0x0 ~> 0xffffffffffffffff], (x16₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x19 := x18₂ + x16₂ (* : uint64_t *) in let x20 := Z.add_get_carry(2^64, None, (x10₁, Some [0x0 ~> 0xffffffffffffffff], (x17₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x21 := Z.add_with_get_carry(2^64, None, (x20₂, Some [0x0 ~> 0x1], (x11₁, Some [0x0 ~> 0xffffffffffffffff], (x18₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x22 := Z.add_with_get_carry(2^64, None, (x21₂, Some [0x0 ~> 0x1], (x12₁, Some [0x0 ~> 0xffffffffffffffff], (x19, Some [0x0 ~> 0xffffffffffffffff])))) in let x23 := Z.add_with_get_carry(2^64, None, (x22₂, Some [0x0 ~> 0x1], (x13₁, Some [0x0 ~> 0xffffffffffffffff], (x15₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x24 := Z.add_with_get_carry(2^64, None, (x23₂, Some [0x0 ~> 0x1], (x14, Some [0x0 ~> 0xffffffffffffffff], (x15₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x25 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x26 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x27 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x28 := Z.mul_split(2^64, None, (x3, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x29 := Z.add_get_carry(2^64, None, (x28₂, Some [0x0 ~> 0xffffffffffffffff], (x27₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x30 := Z.add_with_get_carry(2^64, None, (x29₂, Some [0x0 ~> 0x1], (x27₂, Some [0x0 ~> 0xffffffffffffffff], (x26₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x31 := Z.add_with_get_carry(2^64, None, (x30₂, Some [0x0 ~> 0x1], (x26₂, Some [0x0 ~> 0xffffffffffffffff], (x25₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x32 := x31₂ + x25₂ (* : uint64_t *) in let x33 := Z.add_get_carry(2^64, None, (x21₁, Some [0x0 ~> 0xffffffffffffffff], (x28₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x34 := Z.add_with_get_carry(2^64, None, (x33₂, Some [0x0 ~> 0x1], (x22₁, Some [0x0 ~> 0xffffffffffffffff], (x29₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x35 := Z.add_with_get_carry(2^64, None, (x34₂, Some [0x0 ~> 0x1], (x23₁, Some [0x0 ~> 0xffffffffffffffff], (x30₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x36 := Z.add_with_get_carry(2^64, None, (x35₂, Some [0x0 ~> 0x1], (x24₁, Some [0x0 ~> 0xffffffffffffffff], (x31₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x37 := Z.add_with_get_carry(2^64, None, (x36₂, Some [0x0 ~> 0x1], (x24₂, Some [0x0 ~> 0x1], (x32, Some [0x0 ~> 0xffffffffffffffff])))) in let x38 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x39 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x40 := Z.mul_split(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x41 := Z.add_get_carry(2^64, None, (x40₂, Some [0x0 ~> 0xffffffffffffffff], (x39₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x42 := x41₂ + x39₂ (* : uint64_t *) in let x43 := Z.add_get_carry(2^64, None, (x33₁, Some [0x0 ~> 0xffffffffffffffff], (x40₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x44 := Z.add_with_get_carry(2^64, None, (x43₂, Some [0x0 ~> 0x1], (x34₁, Some [0x0 ~> 0xffffffffffffffff], (x41₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x45 := Z.add_with_get_carry(2^64, None, (x44₂, Some [0x0 ~> 0x1], (x35₁, Some [0x0 ~> 0xffffffffffffffff], (x42, Some [0x0 ~> 0xffffffffffffffff])))) in let x46 := Z.add_with_get_carry(2^64, None, (x45₂, Some [0x0 ~> 0x1], (x36₁, Some [0x0 ~> 0xffffffffffffffff], (x38₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x47 := Z.add_with_get_carry(2^64, None, (x46₂, Some [0x0 ~> 0x1], (x37₁, Some [0x0 ~> 0xffffffffffffffff], (x38₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x48 := x47₂ + x37₂ (* : uint64_t *) in let x49 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x50 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x51 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x52 := Z.mul_split(2^64, None, (x4, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x53 := Z.add_get_carry(2^64, None, (x52₂, Some [0x0 ~> 0xffffffffffffffff], (x51₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x54 := Z.add_with_get_carry(2^64, None, (x53₂, Some [0x0 ~> 0x1], (x51₂, Some [0x0 ~> 0xffffffffffffffff], (x50₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x55 := Z.add_with_get_carry(2^64, None, (x54₂, Some [0x0 ~> 0x1], (x50₂, Some [0x0 ~> 0xffffffffffffffff], (x49₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x56 := x55₂ + x49₂ (* : uint64_t *) in let x57 := Z.add_get_carry(2^64, None, (x44₁, Some [0x0 ~> 0xffffffffffffffff], (x52₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x58 := Z.add_with_get_carry(2^64, None, (x57₂, Some [0x0 ~> 0x1], (x45₁, Some [0x0 ~> 0xffffffffffffffff], (x53₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x59 := Z.add_with_get_carry(2^64, None, (x58₂, Some [0x0 ~> 0x1], (x46₁, Some [0x0 ~> 0xffffffffffffffff], (x54₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x60 := Z.add_with_get_carry(2^64, None, (x59₂, Some [0x0 ~> 0x1], (x47₁, Some [0x0 ~> 0xffffffffffffffff], (x55₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x61 := Z.add_with_get_carry(2^64, None, (x60₂, Some [0x0 ~> 0x1], (x48, Some [0x0 ~> 0xffffffffffffffff], (x56, Some [0x0 ~> 0xffffffffffffffff])))) in let x62 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x63 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x64 := Z.mul_split(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x65 := Z.add_get_carry(2^64, None, (x64₂, Some [0x0 ~> 0xffffffffffffffff], (x63₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x66 := x65₂ + x63₂ (* : uint64_t *) in let x67 := Z.add_get_carry(2^64, None, (x57₁, Some [0x0 ~> 0xffffffffffffffff], (x64₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x68 := Z.add_with_get_carry(2^64, None, (x67₂, Some [0x0 ~> 0x1], (x58₁, Some [0x0 ~> 0xffffffffffffffff], (x65₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x69 := Z.add_with_get_carry(2^64, None, (x68₂, Some [0x0 ~> 0x1], (x59₁, Some [0x0 ~> 0xffffffffffffffff], (x66, Some [0x0 ~> 0xffffffffffffffff])))) in let x70 := Z.add_with_get_carry(2^64, None, (x69₂, Some [0x0 ~> 0x1], (x60₁, Some [0x0 ~> 0xffffffffffffffff], (x62₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x71 := Z.add_with_get_carry(2^64, None, (x70₂, Some [0x0 ~> 0x1], (x61₁, Some [0x0 ~> 0xffffffffffffffff], (x62₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x72 := x71₂ + x61₂ (* : uint64_t *) in let x73 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[3], Some [0x0 ~> 0xffffffffffffffff]))) in let x74 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[2], Some [0x0 ~> 0xffffffffffffffff]))) in let x75 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[1], Some [0x0 ~> 0xffffffffffffffff]))) in let x76 := Z.mul_split(2^64, None, (x5, Some [0x0 ~> 0xffffffffffffffff], (x2[0], Some [0x0 ~> 0xffffffffffffffff]))) in let x77 := Z.add_get_carry(2^64, None, (x76₂, Some [0x0 ~> 0xffffffffffffffff], (x75₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x78 := Z.add_with_get_carry(2^64, None, (x77₂, Some [0x0 ~> 0x1], (x75₂, Some [0x0 ~> 0xffffffffffffffff], (x74₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x79 := Z.add_with_get_carry(2^64, None, (x78₂, Some [0x0 ~> 0x1], (x74₂, Some [0x0 ~> 0xffffffffffffffff], (x73₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x80 := x79₂ + x73₂ (* : uint64_t *) in let x81 := Z.add_get_carry(2^64, None, (x68₁, Some [0x0 ~> 0xffffffffffffffff], (x76₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x82 := Z.add_with_get_carry(2^64, None, (x81₂, Some [0x0 ~> 0x1], (x69₁, Some [0x0 ~> 0xffffffffffffffff], (x77₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x83 := Z.add_with_get_carry(2^64, None, (x82₂, Some [0x0 ~> 0x1], (x70₁, Some [0x0 ~> 0xffffffffffffffff], (x78₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x84 := Z.add_with_get_carry(2^64, None, (x83₂, Some [0x0 ~> 0x1], (x71₁, Some [0x0 ~> 0xffffffffffffffff], (x79₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x85 := Z.add_with_get_carry(2^64, None, (x84₂, Some [0x0 ~> 0x1], (x72, Some [0x0 ~> 0xffffffffffffffff], (x80, Some [0x0 ~> 0xffffffffffffffff])))) in let x86 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None))) in let x87 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None))) in let x88 := Z.mul_split(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None))) in let x89 := Z.add_get_carry(2^64, None, (x88₂, Some [0x0 ~> 0xffffffffffffffff], (x87₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x90 := x89₂ + x87₂ (* : uint64_t *) in let x91 := Z.add_get_carry(2^64, None, (x81₁, Some [0x0 ~> 0xffffffffffffffff], (x88₁, Some [0x0 ~> 0xffffffffffffffff]))) in let x92 := Z.add_with_get_carry(2^64, None, (x91₂, Some [0x0 ~> 0x1], (x82₁, Some [0x0 ~> 0xffffffffffffffff], (x89₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x93 := Z.add_with_get_carry(2^64, None, (x92₂, Some [0x0 ~> 0x1], (x83₁, Some [0x0 ~> 0xffffffffffffffff], (x90, Some [0x0 ~> 0xffffffffffffffff])))) in let x94 := Z.add_with_get_carry(2^64, None, (x93₂, Some [0x0 ~> 0x1], (x84₁, Some [0x0 ~> 0xffffffffffffffff], (x86₁, Some [0x0 ~> 0xffffffffffffffff])))) in let x95 := Z.add_with_get_carry(2^64, None, (x94₂, Some [0x0 ~> 0x1], (x85₁, Some [0x0 ~> 0xffffffffffffffff], (x86₂, Some [0x0 ~> 0xffffffffffffffff])))) in let x96 := x95₂ + x85₂ (* : uint64_t *) in let x97 := Z.sub_with_get_borrow(2^64, None, (0, None, (x92₁, Some [0x0 ~> 0xffffffffffffffff], (2^64-1, None)))) in let x98 := Z.sub_with_get_borrow(2^64, None, (x97₂, Some [0x0 ~> 0x1], (x93₁, Some [0x0 ~> 0xffffffffffffffff], (2^32-1, None)))) in let x99 := Z.sub_with_get_borrow(2^64, None, (x98₂, Some [0x0 ~> 0x1], (x94₁, Some [0x0 ~> 0xffffffffffffffff], (0, None)))) in let x100 := Z.sub_with_get_borrow(2^64, None, (x99₂, Some [0x0 ~> 0x1], (x95₁, Some [0x0 ~> 0xffffffffffffffff], (0xffffffff00000001, None)))) in let x101 := Z.sub_with_get_borrow(2^64, None, (x100₂, Some [0x0 ~> 0x1], (x96, Some [0x0 ~> 0xffffffffffffffff], (0, None)))) in let x102 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x97₁, Some [0x0 ~> 0xffffffffffffffff], (x92₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x103 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x98₁, Some [0x0 ~> 0xffffffffffffffff], (x93₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x104 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x99₁, Some [0x0 ~> 0xffffffffffffffff], (x94₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in let x105 := Z.zselect(x101₂, Some [0x0 ~> 0x1], (x100₁, Some [0x0 ~> 0xffffffffffffffff], (x95₁, Some [0x0 ~> 0xffffffffffffffff]))) (* : uint64_t *) in x102 :: x103 :: x104 :: x105 :: [] ) which can be pretty-printed as: /* * Input Bounds: * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] * Output Bounds: * out1: None */ void f(uint64_t out1[4], const uint64_t arg1[4], const uint64_t arg2[4]) { uint64_t x1; uint64_t x2; uint64_t x3; uint64_t x4; uint64_t x5; uint64_t x6; uint64_t x7; uint64_t x8; uint64_t x9; uint64_t x10; uint64_t x11; uint64_t x12; uint64_t x13; uint1 x14; uint64_t x15; uint1 x16; uint64_t x17; uint1 x18; uint64_t x19; uint64_t x20; uint64_t x21; uint64_t x22; uint64_t x23; uint64_t x24; uint64_t x25; uint64_t x26; uint1 x27; uint64_t x28; uint64_t x29; uint1 x30; uint64_t x31; uint1 x32; uint64_t x33; uint1 x34; uint64_t x35; uint1 x36; uint64_t x37; uint1 x38; uint64_t x39; uint64_t x40; uint64_t x41; uint64_t x42; uint64_t x43; uint64_t x44; uint64_t x45; uint64_t x46; uint64_t x47; uint1 x48; uint64_t x49; uint1 x50; uint64_t x51; uint1 x52; uint64_t x53; uint64_t x54; uint1 x55; uint64_t x56; uint1 x57; uint64_t x58; uint1 x59; uint64_t x60; uint1 x61; uint64_t x62; uint1 x63; uint64_t x64; uint64_t x65; uint64_t x66; uint64_t x67; uint64_t x68; uint64_t x69; uint64_t x70; uint1 x71; uint64_t x72; uint64_t x73; uint1 x74; uint64_t x75; uint1 x76; uint64_t x77; uint1 x78; uint64_t x79; uint1 x80; uint64_t x81; uint1 x82; uint64_t x83; uint64_t x84; uint64_t x85; uint64_t x86; uint64_t x87; uint64_t x88; uint64_t x89; uint64_t x90; uint64_t x91; uint64_t x92; uint1 x93; uint64_t x94; uint1 x95; uint64_t x96; uint1 x97; uint64_t x98; uint64_t x99; uint1 x100; uint64_t x101; uint1 x102; uint64_t x103; uint1 x104; uint64_t x105; uint1 x106; uint64_t x107; uint1 x108; uint64_t x109; uint64_t x110; uint64_t x111; uint64_t x112; uint64_t x113; uint64_t x114; uint64_t x115; uint1 x116; uint64_t x117; uint64_t x118; uint1 x119; uint64_t x120; uint1 x121; uint64_t x122; uint1 x123; uint64_t x124; uint1 x125; uint64_t x126; uint1 x127; uint64_t x128; uint64_t x129; uint64_t x130; uint64_t x131; uint64_t x132; uint64_t x133; uint64_t x134; uint64_t x135; uint64_t x136; uint64_t x137; uint1 x138; uint64_t x139; uint1 x140; uint64_t x141; uint1 x142; uint64_t x143; uint64_t x144; uint1 x145; uint64_t x146; uint1 x147; uint64_t x148; uint1 x149; uint64_t x150; uint1 x151; uint64_t x152; uint1 x153; uint64_t x154; uint64_t x155; uint64_t x156; uint64_t x157; uint64_t x158; uint64_t x159; uint64_t x160; uint1 x161; uint64_t x162; uint64_t x163; uint1 x164; uint64_t x165; uint1 x166; uint64_t x167; uint1 x168; uint64_t x169; uint1 x170; uint64_t x171; uint1 x172; uint64_t x173; uint64_t x174; uint1 x175; uint64_t x176; uint1 x177; uint64_t x178; uint1 x179; uint64_t x180; uint1 x181; uint64_t x182; uint1 x183; uint64_t x184; uint64_t x185; uint64_t x186; uint64_t x187; x1 = (arg1[1]); x2 = (arg1[2]); x3 = (arg1[3]); x4 = (arg1[0]); mulx_u64(&x5, &x6, x4, (arg2[3])); mulx_u64(&x7, &x8, x4, (arg2[2])); mulx_u64(&x9, &x10, x4, (arg2[1])); mulx_u64(&x11, &x12, x4, (arg2[0])); addcarryx_u64(&x13, &x14, 0x0, x12, x9); addcarryx_u64(&x15, &x16, x14, x10, x7); addcarryx_u64(&x17, &x18, x16, x8, x5); x19 = (x18 + x6); mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001)); mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff)); mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x26, &x27, 0x0, x25, x22); x28 = (x27 + x23); addcarryx_u64(&x29, &x30, 0x0, x11, x24); addcarryx_u64(&x31, &x32, x30, x13, x26); addcarryx_u64(&x33, &x34, x32, x15, x28); addcarryx_u64(&x35, &x36, x34, x17, x20); addcarryx_u64(&x37, &x38, x36, x19, x21); mulx_u64(&x39, &x40, x1, (arg2[3])); mulx_u64(&x41, &x42, x1, (arg2[2])); mulx_u64(&x43, &x44, x1, (arg2[1])); mulx_u64(&x45, &x46, x1, (arg2[0])); addcarryx_u64(&x47, &x48, 0x0, x46, x43); addcarryx_u64(&x49, &x50, x48, x44, x41); addcarryx_u64(&x51, &x52, x50, x42, x39); x53 = (x52 + x40); addcarryx_u64(&x54, &x55, 0x0, x31, x45); addcarryx_u64(&x56, &x57, x55, x33, x47); addcarryx_u64(&x58, &x59, x57, x35, x49); addcarryx_u64(&x60, &x61, x59, x37, x51); addcarryx_u64(&x62, &x63, x61, x38, x53); mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001)); mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff)); mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x70, &x71, 0x0, x69, x66); x72 = (x71 + x67); addcarryx_u64(&x73, &x74, 0x0, x54, x68); addcarryx_u64(&x75, &x76, x74, x56, x70); addcarryx_u64(&x77, &x78, x76, x58, x72); addcarryx_u64(&x79, &x80, x78, x60, x64); addcarryx_u64(&x81, &x82, x80, x62, x65); x83 = ((uint64_t)x82 + x63); mulx_u64(&x84, &x85, x2, (arg2[3])); mulx_u64(&x86, &x87, x2, (arg2[2])); mulx_u64(&x88, &x89, x2, (arg2[1])); mulx_u64(&x90, &x91, x2, (arg2[0])); addcarryx_u64(&x92, &x93, 0x0, x91, x88); addcarryx_u64(&x94, &x95, x93, x89, x86); addcarryx_u64(&x96, &x97, x95, x87, x84); x98 = (x97 + x85); addcarryx_u64(&x99, &x100, 0x0, x75, x90); addcarryx_u64(&x101, &x102, x100, x77, x92); addcarryx_u64(&x103, &x104, x102, x79, x94); addcarryx_u64(&x105, &x106, x104, x81, x96); addcarryx_u64(&x107, &x108, x106, x83, x98); mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001)); mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff)); mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x115, &x116, 0x0, x114, x111); x117 = (x116 + x112); addcarryx_u64(&x118, &x119, 0x0, x99, x113); addcarryx_u64(&x120, &x121, x119, x101, x115); addcarryx_u64(&x122, &x123, x121, x103, x117); addcarryx_u64(&x124, &x125, x123, x105, x109); addcarryx_u64(&x126, &x127, x125, x107, x110); x128 = ((uint64_t)x127 + x108); mulx_u64(&x129, &x130, x3, (arg2[3])); mulx_u64(&x131, &x132, x3, (arg2[2])); mulx_u64(&x133, &x134, x3, (arg2[1])); mulx_u64(&x135, &x136, x3, (arg2[0])); addcarryx_u64(&x137, &x138, 0x0, x136, x133); addcarryx_u64(&x139, &x140, x138, x134, x131); addcarryx_u64(&x141, &x142, x140, x132, x129); x143 = (x142 + x130); addcarryx_u64(&x144, &x145, 0x0, x120, x135); addcarryx_u64(&x146, &x147, x145, x122, x137); addcarryx_u64(&x148, &x149, x147, x124, x139); addcarryx_u64(&x150, &x151, x149, x126, x141); addcarryx_u64(&x152, &x153, x151, x128, x143); mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001)); mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff)); mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff)); addcarryx_u64(&x160, &x161, 0x0, x159, x156); x162 = (x161 + x157); addcarryx_u64(&x163, &x164, 0x0, x144, x158); addcarryx_u64(&x165, &x166, x164, x146, x160); addcarryx_u64(&x167, &x168, x166, x148, x162); addcarryx_u64(&x169, &x170, x168, x150, x154); addcarryx_u64(&x171, &x172, x170, x152, x155); x173 = ((uint64_t)x172 + x153); subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff)); subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff)); subborrowx_u64(&x178, &x179, x177, x169, 0x0); subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001)); subborrowx_u64(&x182, &x183, x181, x173, 0x0); cmovznz_u64(&x184, x183, x174, x165); cmovznz_u64(&x185, x183, x176, x167); cmovznz_u64(&x186, x183, x178, x169); cmovznz_u64(&x187, x183, x180, x171); out1[0] = x184; out1[1] = x185; out1[2] = x186; out1[3] = x187; } Assembly: ecp_nistz256_mul_mont: push rbp push rbx push r12 push r13 push r14 push r15 xchg rdx, rsi ; hack: swap args mov rbx, rdx mov rax, QWORD PTR [rbx] mov r9, QWORD PTR [rsi] mov r10, QWORD PTR [rsi + 0x08 * 1] mov r11, QWORD PTR [rsi + 0x08 * 2] mov r12, QWORD PTR [rsi + 0x08 * 3] mov rbp, rax mul r9 mov r14, 4294967295 mov r8, rax mov rax, rbp mov r9, rdx mul r10 mov r15, 18446744069414584321 add r9, rax ; #549, #582, #583, #584 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov r10, rdx mul r11 add r10, rax ; #553, #554, #594, #595, #596, #644, #645, #646 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov r11, rdx mul r12 add r11, rax ; #558, #559, #560, #606, #607, #608, #656, #657, #658, #706, #707, #708 mov rax, r8 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 xor r13, r13 ; #564 mov r12, rdx mov rbp, r8 shl r8, 32 ; #565, #566, #567 mul r15 ; #625, #626, #627, #628, #687, #688, #689, #690, #749, #750, #751, #752 shr rbp, 32 ; #568, #629, #691, #753 add r9, r8 ; #569, #570, #571 adc r10, rbp ; #572, #573, #574 adc r11, rax ; #575, #576, #577 mov rax, QWORD PTR [rbx + 0x08 * 1] adc r12, rdx ; #578, #579, #580 adc r13, 0 xor r8, r8 ; #581 mov rbp, rax mul QWORD PTR [rsi] add r9, rax ; #549, #582, #583, #584 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r10, rcx ; #588, #589, #590 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r10, rax ; #553, #554, #594, #595, #596, #644, #645, #646 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r11, rcx ; #600, #601, #602, #650, #651, #652 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r11, rax ; #558, #559, #560, #606, #607, #608, #656, #657, #658, #706, #707, #708 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r12, rcx ; #612, #613, #614, #662, #663, #664, #712, #713, #714 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r12, rax ; #618, #619, #620, #668, #669, #670, #718, #719, #720 mov rax, r9 adc r13, rdx ; #621, #622, #623, #639, #640, #641 adc r8, 0 ; #642 mov rbp, r9 shl r9, 32 ; #624 mul r15 ; #625, #626, #627, #628, #687, #688, #689, #690, #749, #750, #751, #752 shr rbp, 32 ; #568, #629, #691, #753 add r10, r9 ; #630, #631, #632 adc r11, rbp ; #633, #634, #635 adc r12, rax ; #636, #637, #638 mov rax, QWORD PTR [rbx + 0x08 * 2] adc r13, rdx ; #621, #622, #623, #639, #640, #641 adc r8, 0 ; #642 xor r9, r9 ; #643 mov rbp, rax mul QWORD PTR [rsi] add r10, rax ; #553, #554, #594, #595, #596, #644, #645, #646 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r11, rcx ; #600, #601, #602, #650, #651, #652 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r11, rax ; #558, #559, #560, #606, #607, #608, #656, #657, #658, #706, #707, #708 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r12, rcx ; #612, #613, #614, #662, #663, #664, #712, #713, #714 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r12, rax ; #618, #619, #620, #668, #669, #670, #718, #719, #720 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r13, rcx ; #674, #675, #676, #724, #725, #726 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r13, rax ; #680, #681, #682, #730, #731, #732 mov rax, r10 adc r8, rdx ; #683, #684, #685, #701, #702, #703 adc r9, 0 ; #704 mov rbp, r10 shl r10, 32 ; #686 mul r15 ; #625, #626, #627, #628, #687, #688, #689, #690, #749, #750, #751, #752 shr rbp, 32 ; #568, #629, #691, #753 add r11, r10 ; #692, #693, #694 adc r12, rbp ; #695, #696, #697 adc r13, rax ; #698, #699, #700 mov rax, QWORD PTR [rbx + 0x08 * 3] adc r8, rdx ; #683, #684, #685, #701, #702, #703 adc r9, 0 ; #704 xor r10, r10 ; #705 mov rbp, rax mul QWORD PTR [rsi] add r11, rax ; #558, #559, #560, #606, #607, #608, #656, #657, #658, #706, #707, #708 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 1] add r12, rcx ; #612, #613, #614, #662, #663, #664, #712, #713, #714 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r12, rax ; #618, #619, #620, #668, #669, #670, #718, #719, #720 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 2] add r13, rcx ; #674, #675, #676, #724, #725, #726 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r13, rax ; #680, #681, #682, #730, #731, #732 mov rax, rbp adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 mov rcx, rdx mul QWORD PTR [rsi + 0x08 * 3] add r8, rcx ; #736, #737, #738 adc rdx, 0 ; #550, #551, #552, #555, #556, #557, #561, #562, #563, #585, #586, #587, #591, #592, #593, #597, #598, #599, #603, #604, #605, #609, #610, #611, #615, #616, #617, #647, #648, #649, #653, #654, #655, #659, #660, #661, #665, #666, #667, #671, #672, #673, #677, #678, #679, #709, #710, #711, #715, #716, #717, #721, #722, #723, #727, #728, #729, #733, #734, #735, #739, #740, #741 add r8, rax ; #742, #743, #744 mov rax, r11 adc r9, rdx ; #745, #746, #747, #763, #764, #765 adc r10, 0 ; #766 mov rbp, r11 shl r11, 32 ; #748 mul r15 ; #625, #626, #627, #628, #687, #688, #689, #690, #749, #750, #751, #752 shr rbp, 32 ; #568, #629, #691, #753 add r12, r11 ; #754, #755, #756 adc r13, rbp ; #757, #758, #759 mov rcx, r12 adc r8, rax ; #760, #761, #762 adc r9, rdx ; #745, #746, #747, #763, #764, #765 mov rbp, r13 adc r10, 0 ; #766 sub r12, 18446744073709551615 ; #767, #768 mov rbx, r8 sbb r13, r14 ; #769, #770, #771 sbb r8, 0 ; #772, #773, #774 mov rdx, r9 sbb r9, r15 ; #775, #776, #777 sbb r10, 0 ; #778, #779, #780 cmovb r12, rcx ; #781 cmovb r13, rbp ; #782 mov QWORD PTR [rdi], r12 cmovb r8, rbx ; #783 mov QWORD PTR [rdi + 0x08 * 1], r13 cmovb r9, rdx ; #784 mov QWORD PTR [rdi + 0x08 * 2], r8 mov QWORD PTR [rdi + 0x08 * 3], r9 mov r15, QWORD PTR [rsp] mov r14, QWORD PTR [rsp + 0x08 * 1] mov r13, QWORD PTR [rsp + 0x08 * 2] mov r12, QWORD PTR [rsp + 0x08 * 3] mov rbx, QWORD PTR [rsp + 0x08 * 4] mov rbp, QWORD PTR [rsp + 0x08 * 5] ;lea rsp,[rsp+0x30] ret Equivalence checking error: Unable to unify: In environment: (*symbolic_state*) {| dag_state := (*dag*)[ (*0*) (old 64 0, []); (*build_inputs*) (*1*) (old 64 1, []); (*build_inputs*) (*2*) (old 64 2, []); (*build_inputs*) (*3*) (old 64 3, []); (*build_inputs*) (*4*) (old 64 4, []); (*build_inputs*) (*5*) (old 64 5, []); (*build_inputs*) (*6*) (old 64 6, []); (*build_inputs*) (*7*) (old 64 7, []); (*build_inputs*) (*8*) (const 0, []); (*9*) (const 18446744073709551616, []); (*10*) (const 64, []); (*11*) (mulZ, [3, 4]); (*12*) (mul 64, [3, 4]); (*13*) (shrZ, [11, 10]); (*14*) (shr 64, [11, 10]); (*15*) (mulZ, [3, 5]); (*16*) (mul 64, [3, 5]); (*17*) (shrZ, [15, 10]); (*18*) (shr 64, [15, 10]); (*19*) (mulZ, [3, 6]); (*20*) (mul 64, [3, 6]); (*21*) (shrZ, [19, 10]); (*22*) (shr 64, [19, 10]); (*23*) (mulZ, [3, 7]); (*24*) (mul 64, [3, 7]); (*25*) (shrZ, [23, 10]); (*26*) (shr 64, [23, 10]); (*27*) (add 64, [20, 26]); (*28*) (addcarryZ 64, [26, 20]); (*29*) (addcarry 64, [20, 26]); (*30*) (add 64, [16, 22, 29]); (*31*) (addcarryZ 64, [29, 22, 16]); (*32*) (addcarry 64, [16, 22, 29]); (*33*) (add 64, [12, 18, 32]); (*34*) (addcarryZ 64, [32, 18, 12]); (*35*) (addcarry 64, [12, 18, 32]); (*36*) (addZ, [35, 14]); (*37*) (add 64, [14, 35]); (*38*) (const 18446744069414584321, []); (*39*) (mulZ, [24, 38]); (*40*) (mul 64, [3, 7, 38]); (*41*) (shrZ, [39, 10]); (*42*) (shr 64, [39, 10]); (*43*) (const 4294967295, []); (*44*) (mulZ, [24, 43]); (*45*) (mul 64, [3, 7, 43]); (*46*) (shrZ, [44, 10]); (*47*) (shr 64, [44, 10]); (*48*) (const 18446744073709551615, []); (*49*) (mulZ, [24, 48]); (*50*) (mul 64, [3, 7, 48]); (*51*) (shrZ, [49, 10]); (*52*) (shr 64, [49, 10]); (*53*) (add 64, [45, 52]); (*54*) (addcarryZ 64, [52, 45]); (*55*) (addcarry 64, [45, 52]); (*56*) (addZ, [55, 47]); (*57*) (add 64, [47, 55]); (*58*) (mul 64, [3, 7, 8]); (*59*) (add 64, [58]); (*60*) (addcarryZ 64, [24, 50]); (*61*) (addcarry 64, [24, 50]); (*62*) (add 64, [20, 26, 45, 52, 61]); (*63*) (addcarryZ 64, [61, 27, 53]); (*64*) (addcarry 64, [27, 53, 61]); (*65*) (add 64, [16, 22, 29, 47, 55, 64]); (*66*) (addcarryZ 64, [64, 30, 57]); (*67*) (addcarry 64, [30, 57, 64]); (*68*) (add 64, [12, 18, 32, 40, 67]); (*69*) (addcarryZ 64, [67, 33, 40]); (*70*) (addcarry 64, [33, 40, 67]); (*71*) (add 64, [14, 35, 42, 70]); (*72*) (addcarryZ 64, [70, 37, 42]); (*73*) (addcarry 64, [37, 42, 70]); (*74*) (mulZ, [2, 4]); (*75*) (mul 64, [2, 4]); (*76*) (shrZ, [74, 10]); (*77*) (shr 64, [74, 10]); (*78*) (mulZ, [2, 5]); (*79*) (mul 64, [2, 5]); (*80*) (shrZ, [78, 10]); (*81*) (shr 64, [78, 10]); (*82*) (mulZ, [2, 6]); (*83*) (mul 64, [2, 6]); (*84*) (shrZ, [82, 10]); (*85*) (shr 64, [82, 10]); (*86*) (mulZ, [2, 7]); (*87*) (mul 64, [2, 7]); (*88*) (shrZ, [86, 10]); (*89*) (shr 64, [86, 10]); (*90*) (add 64, [83, 89]); (*91*) (addcarryZ 64, [89, 83]); (*92*) (addcarry 64, [83, 89]); (*93*) (add 64, [79, 85, 92]); (*94*) (addcarryZ 64, [92, 85, 79]); (*95*) (addcarry 64, [79, 85, 92]); (*96*) (add 64, [75, 81, 95]); (*97*) (addcarryZ 64, [95, 81, 75]); (*98*) (addcarry 64, [75, 81, 95]); (*99*) (addZ, [98, 77]); (*100*) (add 64, [77, 98]); (*101*) (add 64, [20, 26, 45, 52, 61, 87]); (*102*) (addcarryZ 64, [62, 87]); (*103*) (addcarry 64, [62, 87]); (*104*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103]); (*105*) (addcarryZ 64, [103, 65, 90]); (*106*) (addcarry 64, [65, 90, 103]); (*107*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106]); (*108*) (addcarryZ 64, [106, 68, 93]); (*109*) (addcarry 64, [68, 93, 106]); (*110*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109]); (*111*) (addcarryZ 64, [109, 71, 96]); (*112*) (addcarry 64, [71, 96, 109]); (*113*) (add 64, [73, 77, 98, 112]); (*114*) (addcarryZ 64, [112, 73, 100]); (*115*) (addcarry 64, [73, 100, 112]); (*116*) (mulZ, [38, 101]); (*117*) (mul 64, [38, 101]); (*118*) (shrZ, [116, 10]); (*119*) (shr 64, [116, 10]); (*120*) (mulZ, [43, 101]); (*121*) (mul 64, [43, 101]); (*122*) (shrZ, [120, 10]); (*123*) (shr 64, [120, 10]); (*124*) (mulZ, [48, 101]); (*125*) (mul 64, [48, 101]); (*126*) (shrZ, [124, 10]); (*127*) (shr 64, [124, 10]); (*128*) (add 64, [121, 127]); (*129*) (addcarryZ 64, [127, 121]); (*130*) (addcarry 64, [121, 127]); (*131*) (addZ, [130, 123]); (*132*) (add 64, [123, 130]); (*133*) (add 64, [20, 26, 45, 52, 61, 87, 125]); (*134*) (addcarryZ 64, [101, 125]); (*135*) (addcarry 64, [101, 125]); (*136*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135]); (*137*) (addcarryZ 64, [135, 104, 128]); (*138*) (addcarry 64, [104, 128, 135]); (*139*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138]); (*140*) (addcarryZ 64, [138, 107, 132]); (*141*) (addcarry 64, [107, 132, 138]); (*142*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141]); (*143*) (addcarryZ 64, [141, 110, 117]); (*144*) (addcarry 64, [110, 117, 141]); (*145*) (add 64, [73, 77, 98, 112, 119, 144]); (*146*) (addcarryZ 64, [144, 113, 119]); (*147*) (addcarry 64, [113, 119, 144]); (*148*) (addZ, [147, 115]); (*149*) (add 64, [115, 147]); (*150*) (mulZ, [1, 4]); (*151*) (mul 64, [1, 4]); (*152*) (shrZ, [150, 10]); (*153*) (shr 64, [150, 10]); (*154*) (mulZ, [1, 5]); (*155*) (mul 64, [1, 5]); (*156*) (shrZ, [154, 10]); (*157*) (shr 64, [154, 10]); (*158*) (mulZ, [1, 6]); (*159*) (mul 64, [1, 6]); (*160*) (shrZ, [158, 10]); (*161*) (shr 64, [158, 10]); (*162*) (mulZ, [1, 7]); (*163*) (mul 64, [1, 7]); (*164*) (shrZ, [162, 10]); (*165*) (shr 64, [162, 10]); (*166*) (add 64, [159, 165]); (*167*) (addcarryZ 64, [165, 159]); (*168*) (addcarry 64, [159, 165]); (*169*) (add 64, [155, 161, 168]); (*170*) (addcarryZ 64, [168, 161, 155]); (*171*) (addcarry 64, [155, 161, 168]); (*172*) (add 64, [151, 157, 171]); (*173*) (addcarryZ 64, [171, 157, 151]); (*174*) (addcarry 64, [151, 157, 171]); (*175*) (addZ, [174, 153]); (*176*) (add 64, [153, 174]); (*177*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135, 163]); (*178*) (addcarryZ 64, [136, 163]); (*179*) (addcarry 64, [136, 163]); (*180*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179]); (*181*) (addcarryZ 64, [179, 139, 166]); (*182*) (addcarry 64, [139, 166, 179]); (*183*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182]); (*184*) (addcarryZ 64, [182, 142, 169]); (*185*) (addcarry 64, [142, 169, 182]); (*186*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185]); (*187*) (addcarryZ 64, [185, 145, 172]); (*188*) (addcarry 64, [145, 172, 185]); (*189*) (add 64, [115, 147, 153, 174, 188]); (*190*) (addcarryZ 64, [188, 149, 176]); (*191*) (addcarry 64, [149, 176, 188]); (*192*) (mulZ, [38, 177]); (*193*) (mul 64, [38, 177]); (*194*) (shrZ, [192, 10]); (*195*) (shr 64, [192, 10]); (*196*) (mulZ, [43, 177]); (*197*) (mul 64, [43, 177]); (*198*) (shrZ, [196, 10]); (*199*) (shr 64, [196, 10]); (*200*) (mulZ, [48, 177]); (*201*) (mul 64, [48, 177]); (*202*) (shrZ, [200, 10]); (*203*) (shr 64, [200, 10]); (*204*) (add 64, [197, 203]); (*205*) (addcarryZ 64, [203, 197]); (*206*) (addcarry 64, [197, 203]); (*207*) (addZ, [206, 199]); (*208*) (add 64, [199, 206]); (*209*) (add 64, [16, 22, 29, 47, 55, 64, 83, 89, 103, 121, 127, 135, 163, 201]); (*210*) (addcarryZ 64, [177, 201]); (*211*) (addcarry 64, [177, 201]); (*212*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211]); (*213*) (addcarryZ 64, [211, 180, 204]); (*214*) (addcarry 64, [180, 204, 211]); (*215*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214]); (*216*) (addcarryZ 64, [214, 183, 208]); (*217*) (addcarry 64, [183, 208, 214]); (*218*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217]); (*219*) (addcarryZ 64, [217, 186, 193]); (*220*) (addcarry 64, [186, 193, 217]); (*221*) (add 64, [115, 147, 153, 174, 188, 195, 220]); (*222*) (addcarryZ 64, [220, 189, 195]); (*223*) (addcarry 64, [189, 195, 220]); (*224*) (addZ, [223, 191]); (*225*) (add 64, [191, 223]); (*226*) (mulZ, [0, 4]); (*227*) (mul 64, [0, 4]); (*228*) (shrZ, [226, 10]); (*229*) (shr 64, [226, 10]); (*230*) (mulZ, [0, 5]); (*231*) (mul 64, [0, 5]); (*232*) (shrZ, [230, 10]); (*233*) (shr 64, [230, 10]); (*234*) (mulZ, [0, 6]); (*235*) (mul 64, [0, 6]); (*236*) (shrZ, [234, 10]); (*237*) (shr 64, [234, 10]); (*238*) (mulZ, [0, 7]); (*239*) (mul 64, [0, 7]); (*240*) (shrZ, [238, 10]); (*241*) (shr 64, [238, 10]); (*242*) (add 64, [235, 241]); (*243*) (addcarryZ 64, [241, 235]); (*244*) (addcarry 64, [235, 241]); (*245*) (add 64, [231, 237, 244]); (*246*) (addcarryZ 64, [244, 237, 231]); (*247*) (addcarry 64, [231, 237, 244]); (*248*) (add 64, [227, 233, 247]); (*249*) (addcarryZ 64, [247, 233, 227]); (*250*) (addcarry 64, [227, 233, 247]); (*251*) (addZ, [250, 229]); (*252*) (add 64, [229, 250]); (*253*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211, 239]); (*254*) (addcarryZ 64, [212, 239]); (*255*) (addcarry 64, [212, 239]); (*256*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255]); (*257*) (addcarryZ 64, [255, 215, 242]); (*258*) (addcarry 64, [215, 242, 255]); (*259*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258]); (*260*) (addcarryZ 64, [258, 218, 245]); (*261*) (addcarry 64, [218, 245, 258]); (*262*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261]); (*263*) (addcarryZ 64, [261, 221, 248]); (*264*) (addcarry 64, [221, 248, 261]); (*265*) (add 64, [191, 223, 229, 250, 264]); (*266*) (addcarryZ 64, [264, 225, 252]); (*267*) (addcarry 64, [225, 252, 264]); (*268*) (mulZ, [38, 253]); (*269*) (mul 64, [38, 253]); (*270*) (shrZ, [268, 10]); (*271*) (shr 64, [268, 10]); (*272*) (mulZ, [43, 253]); (*273*) (mul 64, [43, 253]); (*274*) (shrZ, [272, 10]); (*275*) (shr 64, [272, 10]); (*276*) (mulZ, [48, 253]); (*277*) (mul 64, [48, 253]); (*278*) (shrZ, [276, 10]); (*279*) (shr 64, [276, 10]); (*280*) (add 64, [273, 279]); (*281*) (addcarryZ 64, [279, 273]); (*282*) (addcarry 64, [273, 279]); (*283*) (addZ, [282, 275]); (*284*) (add 64, [275, 282]); (*285*) (add 64, [12, 18, 32, 40, 67, 79, 85, 92, 106, 123, 130, 138, 159, 165, 179, 197, 203, 211, 239, 277]); (*286*) (addcarryZ 64, [253, 277]); (*287*) (addcarry 64, [253, 277]); (*288*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255, 273, 279, 287]); (*289*) (addcarryZ 64, [287, 256, 280]); (*290*) (addcarry 64, [256, 280, 287]); (*291*) (add 64, [73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258, 275, 282, 290]); (*292*) (addcarryZ 64, [290, 259, 284]); (*293*) (addcarry 64, [259, 284, 290]); (*294*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261, 269, 293]); (*295*) (addcarryZ 64, [293, 262, 269]); (*296*) (addcarry 64, [262, 269, 293]); (*297*) (add 64, [191, 223, 229, 250, 264, 271, 296]); (*298*) (addcarryZ 64, [296, 265, 271]); (*299*) (addcarry 64, [265, 271, 296]); (*300*) (addZ, [299, 267]); (*301*) (add 64, [267, 299]); (*302*) (const 1, []); (*303*) (add 64, [14, 35, 42, 70, 75, 81, 95, 109, 117, 141, 155, 161, 168, 182, 199, 206, 214, 235, 241, 255, 273, 279, 287, 302]); (*304*) (subborrowZ 64, [288, 48]); (*305*) (subborrow 64, [288, 48]); (*306*) (neg 64, [305]); (*307*) (add 64, [38, 73, 77, 98, 112, 119, 144, 151, 157, 171, 185, 193, 217, 231, 237, 244, 258, 275, 282, 290, 306]); (*308*) (subborrowZ 64, [291, 43, 305]); (*309*) (subborrow 64, [291, 43, 305]); (*310*) (neg 64, [309]); (*311*) (add 64, [115, 147, 153, 174, 188, 195, 220, 227, 233, 247, 261, 269, 293, 310]); (*312*) (subborrowZ 64, [294, 309]); (*313*) (subborrow 64, [294, 309]); (*314*) (neg 64, [313]); (*315*) (add 64, [43, 191, 223, 229, 250, 264, 271, 296, 314]); (*316*) (subborrowZ 64, [297, 38, 313]); (*317*) (subborrow 64, [297, 38, 313]); (*318*) (neg 64, [317]); (*319*) (add 64, [267, 299, 318]); (*320*) (subborrowZ 64, [301, 317]); (*321*) (subborrow 64, [301, 317]); (*322*) (selectznz, [321, 303, 288]); (*323*) (selectznz, [321, 307, 291]); (*324*) (selectznz, [321, 311, 294]); (*325*) (selectznz, [321, 315, 297]); (*326*) (old 64 326, []); (*init_symbolic_state*) (*327*) (old 64 327, []); (*init_symbolic_state*) (*328*) (old 64 328, []); (*init_symbolic_state*) (*329*) (old 64 329, []); (*init_symbolic_state*) (*330*) (old 64 330, []); (*init_symbolic_state*) (*331*) (old 64 331, []); (*init_symbolic_state*) (*332*) (old 64 332, []); (*init_symbolic_state*) (*333*) (old 64 333, []); (*init_symbolic_state*) (*334*) (old 64 334, []); (*init_symbolic_state*) (*335*) (old 64 335, []); (*init_symbolic_state*) (*336*) (old 64 336, []); (*init_symbolic_state*) (*337*) (old 64 337, []); (*init_symbolic_state*) (*338*) (old 64 338, []); (*init_symbolic_state*) (*339*) (old 64 339, []); (*init_symbolic_state*) (*340*) (old 64 340, []); (*init_symbolic_state*) (*341*) (old 64 341, []); (*init_symbolic_state*) (*342*) (old 64 342, []); (*output_placeholders*) (*343*) (old 64 343, []); (*output_placeholders*) (*344*) (old 64 344, []); (*output_placeholders*) (*345*) (old 64 345, []); (*output_placeholders*) (*346*) (old 64 346, []); (*inputaddrs*) (*347*) (const 8, []); (*inputaddrs*) (*348*) (add 64, [346, 347]); (*inputaddrs*) (*349*) (const 16, []); (*inputaddrs*) (*350*) (add 64, [346, 349]); (*inputaddrs*) (*351*) (const 24, []); (*inputaddrs*) (*352*) (add 64, [346, 351]); (*inputaddrs*) (*353*) (old 64 353, []); (*inputaddrs*) (*354*) (add 64, [347, 353]); (*inputaddrs*) (*355*) (add 64, [349, 353]); (*inputaddrs*) (*356*) (add 64, [351, 353]); (*inputaddrs*) (*357*) (old 64 357, []); (*outputaddrs*) (*358*) (add 64, [347, 357]); (*outputaddrs*) (*359*) (add 64, [349, 357]); (*outputaddrs*) (*360*) (add 64, [351, 357]); (*outputaddrs*) (*361*) (old 64 361, []); (*stack_base*) (*362*) (old 64 362, []); (*stack_base*) (*363*) (old 64 363, []); (*stack_base*) (*364*) (old 64 364, []); (*stack_base*) (*365*) (old 64 365, []); (*stack_base*) (*366*) (old 64 366, []); (*stack_base*) (*367*) (old 64 367, []); (*stack_base*) (*368*) (old 64 368, []); (*stack_base*) (*369*) (old 64 369, []); (*stack_base*) (*370*) (old 64 370, []); (*stack_base*) (*371*) (old 64 371, []); (*stack_base*) (*372*) (old 64 372, []); (*stack_base*) (*373*) (old 64 373, []); (*stack_base*) (*374*) (old 64 374, []); (*stack_base*) (*375*) (old 64 375, []); (*stack_base*) (*376*) (old 64 376, []); (*stack_base*) (*377*) (old 64 377, []); (*stack_base*) (*378*) (old 64 378, []); (*stack_base*) (*379*) (old 64 379, []); (*stack_base*) (*380*) (old 64 380, []); (*stack_base*) (*381*) (old 64 381, []); (*stack_base*) (*382*) (old 64 382, []); (*stack_base*) (*383*) (old 64 383, []); (*stack_base*) (*384*) (old 64 384, []); (*stack_base*) (*385*) (old 64 385, []); (*stack_base*) (*386*) (old 64 386, []); (*stack_base*) (*387*) (old 64 387, []); (*stack_base*) (*388*) (old 64 388, []); (*stack_base*) (*389*) (old 64 389, []); (*stack_base*) (*390*) (old 64 390, []); (*stack_base*) (*391*) (old 64 391, []); (*stack_base*) (*392*) (old 64 392, []); (*stack_base*) (*393*) (old 64 393, []); (*stack_base*) (*394*) (old 64 394, []); (*stack_base*) (*395*) (old 64 395, []); (*stack_base*) (*396*) (old 64 396, []); (*stack_base*) (*397*) (old 64 397, []); (*stack_base*) (*398*) (old 64 398, []); (*stack_base*) (*399*) (old 64 399, []); (*stack_base*) (*400*) (old 64 400, []); (*stack_base*) (*401*) (old 64 401, []); (*stack_base*) (*402*) (old 64 402, []); (*stack_base*) (*403*) (old 64 403, []); (*stack_base*) (*404*) (old 64 404, []); (*stack_base*) (*405*) (old 64 405, []); (*stack_base*) (*406*) (old 64 406, []); (*stack_base*) (*407*) (old 64 407, []); (*stack_base*) (*408*) (old 64 408, []); (*stack_base*) (*409*) (old 64 409, []); (*stack_base*) (*410*) (const 18446744073709551232, []); (*stack_base*) (*411*) (add 64, [409, 410]); (*stack_base*) (*412*) (const 18446744073709551240, []); (*stack_base*) (*413*) (add 64, [409, 412]); (*stack_base*) (*414*) (const 18446744073709551248, []); (*stack_base*) (*415*) (add 64, [409, 414]); (*stack_base*) (*416*) (const 18446744073709551256, []); (*stack_base*) (*417*) (add 64, [409, 416]); (*stack_base*) (*418*) (const 32, []); (*stack_base*) (*419*) (const 18446744073709551264, []); (*stack_base*) (*420*) (add 64, [409, 419]); (*stack_base*) (*421*) (const 40, []); (*stack_base*) (*422*) (const 18446744073709551272, []); (*stack_base*) (*423*) (add 64, [409, 422]); (*stack_base*) (*424*) (const 48, []); (*stack_base*) (*425*) (const 18446744073709551280, []); (*stack_base*) (*426*) (add 64, [409, 425]); (*stack_base*) (*427*) (const 56, []); (*stack_base*) (*428*) (const 18446744073709551288, []); (*stack_base*) (*429*) (add 64, [409, 428]); (*stack_base*) (*430*) (const 18446744073709551296, []); (*stack_base*) (*431*) (add 64, [409, 430]); (*stack_base*) (*432*) (const 72, []); (*stack_base*) (*433*) (const 18446744073709551304, []); (*stack_base*) (*434*) (add 64, [409, 433]); (*stack_base*) (*435*) (const 80, []); (*stack_base*) (*436*) (const 18446744073709551312, []); (*stack_base*) (*437*) (add 64, [409, 436]); (*stack_base*) (*438*) (const 88, []); (*stack_base*) (*439*) (const 18446744073709551320, []); (*stack_base*) (*440*) (add 64, [409, 439]); (*stack_base*) (*441*) (const 96, []); (*stack_base*) (*442*) (const 18446744073709551328, []); (*stack_base*) (*443*) (add 64, [409, 442]); (*stack_base*) (*444*) (const 104, []); (*stack_base*) (*445*) (const 18446744073709551336, []); (*stack_base*) (*446*) (add 64, [409, 445]); (*stack_base*) (*447*) (const 112, []); (*stack_base*) (*448*) (const 18446744073709551344, []); (*stack_base*) (*449*) (add 64, [409, 448]); (*stack_base*) (*450*) (const 120, []); (*stack_base*) (*451*) (const 18446744073709551352, []); (*stack_base*) (*452*) (add 64, [409, 451]); (*stack_base*) (*453*) (const 128, []); (*stack_base*) (*454*) (const 18446744073709551360, []); (*stack_base*) (*455*) (add 64, [409, 454]); (*stack_base*) (*456*) (const 136, []); (*stack_base*) (*457*) (const 18446744073709551368, []); (*stack_base*) (*458*) (add 64, [409, 457]); (*stack_base*) (*459*) (const 144, []); (*stack_base*) (*460*) (const 18446744073709551376, []); (*stack_base*) (*461*) (add 64, [409, 460]); (*stack_base*) (*462*) (const 152, []); (*stack_base*) (*463*) (const 18446744073709551384, []); (*stack_base*) (*464*) (add 64, [409, 463]); (*stack_base*) (*465*) (const 160, []); (*stack_base*) (*466*) (const 18446744073709551392, []); (*stack_base*) (*467*) (add 64, [409, 466]); (*stack_base*) (*468*) (const 168, []); (*stack_base*) (*469*) (const 18446744073709551400, []); (*stack_base*) (*470*) (add 64, [409, 469]); (*stack_base*) (*471*) (const 176, []); (*stack_base*) (*472*) (const 18446744073709551408, []); (*stack_base*) (*473*) (add 64, [409, 472]); (*stack_base*) (*474*) (const 184, []); (*stack_base*) (*475*) (const 18446744073709551416, []); (*stack_base*) (*476*) (add 64, [409, 475]); (*stack_base*) (*477*) (const 192, []); (*stack_base*) (*478*) (const 18446744073709551424, []); (*stack_base*) (*479*) (add 64, [409, 478]); (*stack_base*) (*480*) (const 200, []); (*stack_base*) (*481*) (const 18446744073709551432, []); (*stack_base*) (*482*) (add 64, [409, 481]); (*stack_base*) (*483*) (const 208, []); (*stack_base*) (*484*) (const 18446744073709551440, []); (*stack_base*) (*485*) (add 64, [409, 484]); (*stack_base*) (*486*) (const 216, []); (*stack_base*) (*487*) (const 18446744073709551448, []); (*stack_base*) (*488*) (add 64, [409, 487]); (*stack_base*) (*489*) (const 224, []); (*stack_base*) (*490*) (const 18446744073709551456, []); (*stack_base*) (*491*) (add 64, [409, 490]); (*stack_base*) (*492*) (const 232, []); (*stack_base*) (*493*) (const 18446744073709551464, []); (*stack_base*) (*494*) (add 64, [409, 493]); (*stack_base*) (*495*) (const 240, []); (*stack_base*) (*496*) (const 18446744073709551472, []); (*stack_base*) (*497*) (add 64, [409, 496]); (*stack_base*) (*498*) (const 248, []); (*stack_base*) (*499*) (const 18446744073709551480, []); (*stack_base*) (*500*) (add 64, [409, 499]); (*stack_base*) (*501*) (const 256, []); (*stack_base*) (*502*) (const 18446744073709551488, []); (*stack_base*) (*503*) (add 64, [409, 502]); (*stack_base*) (*504*) (const 264, []); (*stack_base*) (*505*) (const 18446744073709551496, []); (*stack_base*) (*506*) (add 64, [409, 505]); (*stack_base*) (*507*) (const 272, []); (*stack_base*) (*508*) (const 18446744073709551504, []); (*stack_base*) (*509*) (add 64, [409, 508]); (*stack_base*) (*510*) (const 280, []); (*stack_base*) (*511*) (const 18446744073709551512, []); (*stack_base*) (*512*) (add 64, [409, 511]); (*stack_base*) (*513*) (const 288, []); (*stack_base*) (*514*) (const 18446744073709551520, []); (*stack_base*) (*515*) (add 64, [409, 514]); (*stack_base*) (*516*) (const 296, []); (*stack_base*) (*517*) (const 18446744073709551528, []); (*stack_base*) (*518*) (add 64, [409, 517]); (*stack_base*) (*519*) (const 304, []); (*stack_base*) (*520*) (const 18446744073709551536, []); (*stack_base*) (*521*) (add 64, [409, 520]); (*stack_base*) (*522*) (const 312, []); (*stack_base*) (*523*) (const 18446744073709551544, []); (*stack_base*) (*524*) (add 64, [409, 523]); (*stack_base*) (*525*) (const 320, []); (*stack_base*) (*526*) (const 18446744073709551552, []); (*stack_base*) (*527*) (add 64, [409, 526]); (*stack_base*) (*528*) (const 328, []); (*stack_base*) (*529*) (const 18446744073709551560, []); (*stack_base*) (*530*) (add 64, [409, 529]); (*stack_base*) (*531*) (const 336, []); (*stack_base*) (*532*) (const 18446744073709551568, []); (*stack_base*) (*533*) (add 64, [409, 532]); (*stack_base*) (*534*) (const 344, []); (*stack_base*) (*535*) (const 18446744073709551576, []); (*stack_base*) (*536*) (add 64, [409, 535]); (*stack_base*) (*537*) (const 352, []); (*stack_base*) (*538*) (const 18446744073709551584, []); (*stack_base*) (*539*) (add 64, [409, 538]); (*stack_base*) (*540*) (const 360, []); (*stack_base*) (*541*) (const 18446744073709551592, []); (*stack_base*) (*542*) (add 64, [409, 541]); (*stack_base*) (*543*) (const 368, []); (*stack_base*) (*544*) (const 18446744073709551600, []); (*stack_base*) (*545*) (add 64, [409, 544]); (*stack_base*) (*546*) (const 376, []); (*stack_base*) (*547*) (const 18446744073709551608, []); (*stack_base*) (*548*) (add 64, [409, 547]); (*stack_base*) (*549*) (addoverflow 64, [20, 26]); (*550*) (add 64, [22, 29]); (*551*) (addcarry 64, [22, 29]); (*552*) (addoverflow 64, [22, 29]); (*553*) (addcarry 64, [16, 550]); (*554*) (addoverflow 64, [16, 550]); (*555*) (add 64, [18, 553]); (*556*) (addcarry 64, [18, 553]); (*557*) (addoverflow 64, [18, 553]); (*558*) (add 64, [12, 18, 553]); (*559*) (addcarry 64, [12, 555]); (*560*) (addoverflow 64, [12, 555]); (*561*) (add 64, [14, 559]); (*562*) (addcarry 64, [14, 559]); (*563*) (addoverflow 64, [14, 559]); (*564*) (xorZ, [339, 339]); (*565*) (const 63, []); (*566*) (const 4294967296, []); (*567*) (mul 64, [3, 7, 566]); (*568*) (shr 64, [24, 418]); (*569*) (add 64, [20, 26, 567]); (*570*) (addcarry 64, [27, 567]); (*571*) (addoverflow 64, [27, 567]); (*572*) (add 64, [16, 22, 29, 568, 570]); (*573*) (addcarry 64, [30, 568, 570]); (*574*) (addoverflow 64, [30, 568, 570]); (*575*) (add 64, [12, 18, 40, 553, 573]); (*576*) (addcarry 64, [40, 558, 573]); (*577*) (addoverflow 64, [40, 558, 573]); (*578*) (add 64, [14, 42, 559, 576]); (*579*) (addcarry 64, [42, 561, 576]); (*580*) (addoverflow 64, [42, 561, 576]); (*581*) (xorZ, [567, 567]); (*582*) (add 64, [20, 26, 87, 567]); (*583*) (addcarry 64, [87, 569]); (*584*) (addoverflow 64, [87, 569]); (*585*) (add 64, [89, 583]); (*586*) (addcarry 64, [89, 583]); (*587*) (addoverflow 64, [89, 583]); (*588*) (add 64, [16, 22, 29, 89, 568, 570, 583]); (*589*) (addcarry 64, [572, 585]); (*590*) (addoverflow 64, [572, 585]); (*591*) (add 64, [85, 589]); (*592*) (addcarry 64, [85, 589]); (*593*) (addoverflow 64, [85, 589]); (*594*) (add 64, [16, 22, 29, 83, 89, 568, 570, 583]); (*595*) (addcarry 64, [83, 588]); (*596*) (addoverflow 64, [83, 588]); (*597*) (add 64, [85, 589, 595]); (*598*) (addcarry 64, [591, 595]); (*599*) (addoverflow 64, [591, 595]); (*600*) (add 64, [12, 18, 40, 85, 553, 573, 589, 595]); (*601*) (addcarry 64, [575, 597]); (*602*) (addoverflow 64, [575, 597]); (*603*) (add 64, [81, 601]); (*604*) (addcarry 64, [81, 601]); (*605*) (addoverflow 64, [81, 601]); (*606*) (add 64, [12, 18, 40, 79, 85, 553, 573, 589, 595]); (*607*) (addcarry 64, [79, 600]); (*608*) (addoverflow 64, [79, 600]); (*609*) (add 64, [81, 601, 607]); (*610*) (addcarry 64, [603, 607]); (*611*) (addoverflow 64, [603, 607]); (*612*) (add 64, [14, 42, 81, 559, 576, 601, 607]); (*613*) (addcarry 64, [578, 609]); (*614*) (addoverflow 64, [578, 609]); (*615*) (add 64, [77, 613]); (*616*) (addcarry 64, [77, 613]); (*617*) (addoverflow 64, [77, 613]); (*618*) (add 64, [14, 42, 75, 81, 559, 576, 601, 607]); (*619*) (addcarry 64, [75, 612]); (*620*) (addoverflow 64, [75, 612]); (*621*) (add 64, [77, 579, 613, 619]); (*622*) (addcarry 64, [579, 615, 619]); (*623*) (addoverflow 64, [579, 615, 619]); (*624*) (mul 64, [566, 582]); (*625*) (mulZ, [38, 582]); (*626*) (shrZ, [625, 10]); (*627*) (mul 64, [38, 582]); (*628*) (shr 64, [625, 10]); (*629*) (shr 64, [582, 418]); (*630*) (add 64, [16, 22, 29, 83, 89, 568, 570, 583, 624]); (*631*) (addcarry 64, [594, 624]); (*632*) (addoverflow 64, [594, 624]); (*633*) (add 64, [12, 18, 40, 79, 85, 553, 573, 589, 595, 629, 631]); (*634*) (addcarry 64, [606, 629, 631]); (*635*) (addoverflow 64, [606, 629, 631]); (*636*) (add 64, [14, 42, 75, 81, 559, 576, 601, 607, 627, 634]); (*637*) (addcarry 64, [618, 627, 634]); (*638*) (addoverflow 64, [618, 627, 634]); (*639*) (add 64, [77, 579, 613, 619, 628, 637]); (*640*) (addcarry 64, [621, 628, 637]); (*641*) (addoverflow 64, [621, 628, 637]); (*642*) (add 64, [622, 640]); (*643*) (xorZ, [624, 624]); (*644*) (add 64, [16, 22, 29, 83, 89, 163, 568, 570, 583, 624]); (*645*) (addcarry 64, [163, 630]); (*646*) (addoverflow 64, [163, 630]); (*647*) (add 64, [165, 645]); (*648*) (addcarry 64, [165, 645]); (*649*) (addoverflow 64, [165, 645]); (*650*) (add 64, [12, 18, 40, 79, 85, 165, 553, 573, 589, 595, 629, 631, 645]); (*651*) (addcarry 64, [633, 647]); (*652*) (addoverflow 64, [633, 647]); (*653*) (add 64, [161, 651]); (*654*) (addcarry 64, [161, 651]); (*655*) (addoverflow 64, [161, 651]); (*656*) (add 64, [12, 18, 40, 79, 85, 159, 165, 553, 573, 589, 595, 629, 631, 645]); (*657*) (addcarry 64, [159, 650]); (*658*) (addoverflow 64, [159, 650]); (*659*) (add 64, [161, 651, 657]); (*660*) (addcarry 64, [653, 657]); (*661*) (addoverflow 64, [653, 657]); (*662*) (add 64, [14, 42, 75, 81, 161, 559, 576, 601, 607, 627, 634, 651, 657]); (*663*) (addcarry 64, [636, 659]); (*664*) (addoverflow 64, [636, 659]); (*665*) (add 64, [157, 663]); (*666*) (addcarry 64, [157, 663]); (*667*) (addoverflow 64, [157, 663]); (*668*) (add 64, [14, 42, 75, 81, 155, 161, 559, 576, 601, 607, 627, 634, 651, 657]); (*669*) (addcarry 64, [155, 662]); (*670*) (addoverflow 64, [155, 662]); (*671*) (add 64, [157, 663, 669]); (*672*) (addcarry 64, [665, 669]); (*673*) (addoverflow 64, [665, 669]); (*674*) (add 64, [77, 157, 579, 613, 619, 628, 637, 663, 669]); (*675*) (addcarry 64, [639, 671]); (*676*) (addoverflow 64, [639, 671]); (*677*) (add 64, [153, 675]); (*678*) (addcarry 64, [153, 675]); (*679*) (addoverflow 64, [153, 675]); (*680*) (add 64, [77, 151, 157, 579, 613, 619, 628, 637, 663, 669]); (*681*) (addcarry 64, [151, 674]); (*682*) (addoverflow 64, [151, 674]); (*683*) (add 64, [153, 622, 640, 675, 681]); (*684*) (addcarry 64, [642, 677, 681]); (*685*) (addoverflow 64, [642, 677, 681]); (*686*) (mul 64, [566, 644]); (*687*) (mulZ, [38, 644]); (*688*) (shrZ, [687, 10]); (*689*) (mul 64, [38, 644]); (*690*) (shr 64, [687, 10]); (*691*) (shr 64, [644, 418]); (*692*) (add 64, [12, 18, 40, 79, 85, 159, 165, 553, 573, 589, 595, 629, 631, 645, 686]); (*693*) (addcarry 64, [656, 686]); (*694*) (addoverflow 64, [656, 686]); (*695*) (add 64, [14, 42, 75, 81, 155, 161, 559, 576, 601, 607, 627, 634, 651, 657, 691, 693]); (*696*) (addcarry 64, [668, 691, 693]); (*697*) (addoverflow 64, [668, 691, 693]); (*698*) (add 64, [77, 151, 157, 579, 613, 619, 628, 637, 663, 669, 689, 696]); (*699*) (addcarry 64, [680, 689, 696]); (*700*) (addoverflow 64, [680, 689, 696]); (*701*) (add 64, [153, 622, 640, 675, 681, 690, 699]); (*702*) (addcarry 64, [683, 690, 699]); (*703*) (addoverflow 64, [683, 690, 699]); (*704*) (add 64, [684, 702]); (*705*) (xorZ, [686, 686]); (*706*) (add 64, [12, 18, 40, 79, 85, 159, 165, 239, 553, 573, 589, 595, 629, 631, 645, 686]); (*707*) (addcarry 64, [239, 692]); (*708*) (addoverflow 64, [239, 692]); (*709*) (add 64, [241, 707]); (*710*) (addcarry 64, [241, 707]); (*711*) (addoverflow 64, [241, 707]); (*712*) (add 64, [14, 42, 75, 81, 155, 161, 241, 559, 576, 601, 607, 627, 634, 651, 657, 691, 693, 707]); (*713*) (addcarry 64, [695, 709]); (*714*) (addoverflow 64, [695, 709]); (*715*) (add 64, [237, 713]); (*716*) (addcarry 64, [237, 713]); (*717*) (addoverflow 64, [237, 713]); (*718*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 559, 576, 601, 607, 627, 634, 651, 657, 691, 693, 707]); (*719*) (addcarry 64, [235, 712]); (*720*) (addoverflow 64, [235, 712]); (*721*) (add 64, [237, 713, 719]); (*722*) (addcarry 64, [715, 719]); (*723*) (addoverflow 64, [715, 719]); (*724*) (add 64, [77, 151, 157, 237, 579, 613, 619, 628, 637, 663, 669, 689, 696, 713, 719]); (*725*) (addcarry 64, [698, 721]); (*726*) (addoverflow 64, [698, 721]); (*727*) (add 64, [233, 725]); (*728*) (addcarry 64, [233, 725]); (*729*) (addoverflow 64, [233, 725]); (*730*) (add 64, [77, 151, 157, 231, 237, 579, 613, 619, 628, 637, 663, 669, 689, 696, 713, 719]); (*731*) (addcarry 64, [231, 724]); (*732*) (addoverflow 64, [231, 724]); (*733*) (add 64, [233, 725, 731]); (*734*) (addcarry 64, [727, 731]); (*735*) (addoverflow 64, [727, 731]); (*736*) (add 64, [153, 233, 622, 640, 675, 681, 690, 699, 725, 731]); (*737*) (addcarry 64, [701, 733]); (*738*) (addoverflow 64, [701, 733]); (*739*) (add 64, [229, 737]); (*740*) (addcarry 64, [229, 737]); (*741*) (addoverflow 64, [229, 737]); (*742*) (add 64, [153, 227, 233, 622, 640, 675, 681, 690, 699, 725, 731]); (*743*) (addcarry 64, [227, 736]); (*744*) (addoverflow 64, [227, 736]); (*745*) (add 64, [229, 684, 702, 737, 743]); (*746*) (addcarry 64, [704, 739, 743]); (*747*) (addoverflow 64, [704, 739, 743]); (*748*) (mul 64, [566, 706]); (*749*) (mulZ, [38, 706]); (*750*) (shrZ, [749, 10]); (*751*) (mul 64, [38, 706]); (*752*) (shr 64, [749, 10]); (*753*) (shr 64, [706, 418]); (*754*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 559, 576, 601, 607, 627, 634, 651, 657, 691, 693, 707, 748]); (*755*) (addcarry 64, [718, 748]); (*756*) (addoverflow 64, [718, 748]); (*757*) (add 64, [77, 151, 157, 231, 237, 579, 613, 619, 628, 637, 663, 669, 689, 696, 713, 719, 753, 755]); (*758*) (addcarry 64, [730, 753, 755]); (*759*) (addoverflow 64, [730, 753, 755]); (*760*) (add 64, [153, 227, 233, 622, 640, 675, 681, 690, 699, 725, 731, 751, 758]); (*761*) (addcarry 64, [742, 751, 758]); (*762*) (addoverflow 64, [742, 751, 758]); (*763*) (add 64, [229, 684, 702, 737, 743, 752, 761]); (*764*) (addcarry 64, [745, 752, 761]); (*765*) (addoverflow 64, [745, 752, 761]); (*766*) (add 64, [746, 764]); (*767*) (add 64, [14, 42, 75, 81, 155, 161, 235, 241, 302, 559, 576, 601, 607, 627, 634, 651, 657, 691, 693, 707, 748]); (*768*) (subborrow 64, [754, 48]); (*769*) (neg 64, [768]); (*770*) (add 64, [38, 77, 151, 157, 231, 237, 579, 613, 619, 628, 637, 663, 669, 689, 696, 713, 719, 753, 755, 769]); (*771*) (subborrow 64, [757, 43, 768]); (*772*) (neg 64, [771]); (*773*) (add 64, [153, 227, 233, 622, 640, 675, 681, 690, 699, 725, 731, 751, 758, 772]); (*774*) (subborrow 64, [760, 771]); (*775*) (neg 64, [774]); (*776*) (add 64, [43, 229, 684, 702, 737, 743, 752, 761, 775]); (*777*) (subborrow 64, [763, 38, 774]); (*778*) (neg 64, [777]); (*779*) (add 64, [746, 764, 778]); (*780*) (subborrow 64, [766, 777]); (*781*) (selectznz, [780, 767, 754]); (*782*) (selectznz, [780, 770, 757]); (*783*) (selectznz, [780, 773, 760]); (*784*) (selectznz, [780, 776, 763]); ] ; symbolic_reg_state := [(rax, 751), (rcx, 754), (rdx, 763), (rbx, 329), (rsp, 533), (rbp, 331), (rsi, 353), (rdi, 357), (r8, 783), (r9, 784), (r10, 779), (r11, 748), (r12, 338), (r13, 339), (r14, 340), (r15, 341)]; symbolic_flag_state := (*flag_state*)(CF=Some 780 PF=None AF=None ZF=None SF=None ZF=None OF=None); symbolic_mem_state := [] ; |} Unable to unify: [inr [781, 782, 783, 784]] == [inr [322, 323, 324, 325]] Could not unify the values at index 0: [#781, #782, #783, #784] ≠ [#322, #323, #324, #325] index 0: #781 ≠ #322 (selectznz, [#780, #767, #754]) ≠ (selectznz, [#321, #303, #288]) index 0: #780 ≠ #321 (subborrow 64, [#766, #777]) ≠ (subborrow 64, [#301, #317]) index 0: #766 ≠ #301 (add 64, [#746, #764]) ≠ (add 64, [#267, #299]) index 0: #746 ≠ #267 (addcarry 64, [#704, #739, #743]) ≠ (addcarry 64, [#225, #252, #264]) index 0: #704 ≠ #225 (add 64, [#684, #702]) ≠ (add 64, [#191, #223]) index 0: #684 ≠ #191 (addcarry 64, [#642, #677, #681]) ≠ (addcarry 64, [#149, #176, #188]) index 0: #642 ≠ #149 (add 64, [#622, #640]) ≠ (add 64, [#115, #147]) index 0: #622 ≠ #115 (addcarry 64, [#579, #615, #619]) ≠ (addcarry 64, [#73, #100, #112]) index 0: #579 ≠ #73 (addcarry 64, [#42, #561, #576]) ≠ (addcarry 64, [#37, #42, #70]) index 1: #561 ≠ #37 (add 64, [#14, #559]) ≠ (add 64, [#14, #35]) index 1: #559 ≠ #35 (addcarry 64, [#12, #555]) ≠ (addcarry 64, [#12, #18, #32]) (addcarry 64, [#555]) ≠ (addcarry 64, [#18, #32]) (addcarry 64, [(add 64, [#18, #553])]) ≠ (addcarry 64, [#18, (addcarry 64, [#16, #22, #29])]) (addcarry 64, [(add 64, [#18, (addcarry 64, [#16, #550])])]) ≠ (addcarry 64, [#18, (addcarry 64, [#16, #22, #29])]) (addcarry 64, [(add 64, [#18, (addcarry 64, [#16, (add 64, [#22, #29])])])]) ≠ (addcarry 64, [#18, (addcarry 64, [#16, #22, #29])]) (addcarry 64, [(add 64, [(shr 64, [#15, #10]), (addcarry 64, [(mul 64, [#3, #5]), (add 64, [(shr 64, [#19, #10]), (addcarry 64, [#20, #26])])])])]) ≠ (addcarry 64, [(shr 64, [#15, #10]), (addcarry 64, [(mul 64, [#3, #5]), (shr 64, [#19, #10]), (addcarry 64, [#20, #26])])]) 3 is a special value no longer present in the symbolic machine state at the end of execution. 5 is a special value no longer present in the symbolic machine state at the end of execution. Fatal error: exception Failure("Synthesis failed") ``` 21 April 2022, 07:05:18 UTC
811bc5c Add PERF_TESTS=1 to call perf record on outputs (#1202) 20 April 2022, 12:50:43 UTC
bb5aca4 Bump haskell/actions from 1 to 2 (#1206) 20 April 2022, 12:03:44 UTC
0533c55 Add more parallelism on windows CI (#1204) 20 April 2022, 07:29:58 UTC
ee8d0eb Fix missing NC coloring 19 April 2022, 22:22:31 UTC
831d611 Ensure that sa rather than stack_addr_size is inferred by typeclass inference (not that it currently matters) 19 April 2022, 14:08:00 UTC
81e998b Move mem_of_reg so it's available in semantics and symbolic 19 April 2022, 14:06:38 UTC
63660ea Add support for WITH_PERF=1 to use ocamloptp (#1200) 19 April 2022, 14:03:28 UTC
011d6e2 Update .gitignore 19 April 2022, 14:02:55 UTC
91c31a0 Add more parallelism to Windows CI 19 April 2022, 14:02:55 UTC
250d9e9 Aggregate test-amd64-files by curve <details><summary>Timing Diff</summary> <p> ``` After | Peak Mem | File Name | Before | Peak Mem || Change || Change (mem) | % Change | % Change (mem) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 108m23.67s | 327548 ko | Total Time / Peak Mem | 284m28.90s | 266332 ko || -176m05.23s || 61216 ko | -61.89% | +22.98% --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 47m12.48s | 327548 ko | fiat-amd64/p434-mul.only-status | N/A | N/A || +47m12.48s || 327548 ko | ∞ | ∞ 44m02.20s | 280664 ko | fiat-amd64/p434-square.only-status | N/A | N/A || +44m02.19s || 280664 ko | ∞ | ∞ N/A | N/A | fiat-amd64/240.21_ratio09423_seed535677244591890_mul_p434.asm.only-status | 18m59.49s | 251748 ko || -18m59.49s || -251748 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/414.00_ratio14010_seed4297472400993309_mul_p434.asm.only-status | 18m43.55s | 234688 ko || -18m43.54s || -234688 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/324.36_ratio10962_seed3664281231704237_mul_p434.asm.only-status | 18m42.58s | 238248 ko || -18m42.57s || -238248 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/394.42_ratio08680_seed2529639215636402_mul_p434.asm.only-status | 18m18.85s | 233860 ko || -18m18.84s || -233860 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/477.13_ratio08443_seed971834780550536_mul_p434.asm.only-status | 18m13.56s | 257396 ko || -18m13.55s || -257396 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/224.60_ratio09379_seed3894390947325035_square_p434.asm.only-status | 17m49.45s | 227108 ko || -17m49.45s || -227108 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/286.27_ratio11637_seed699744043147816_square_p434.asm.only-status | 17m39.07s | 234944 ko || -17m39.06s || -234944 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/392.76_ratio08675_seed3715409675138377_square_p434.asm.only-status | 17m37.75s | 207368 ko || -17m37.75s || -207368 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/390.08_ratio10396_seed2412526886283759_square_p434.asm.only-status | 17m23.27s | 242656 ko || -17m23.26s || -242656 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/421.04_ratio08906_seed3759678552496106_square_p434.asm.only-status | 17m10.51s | 198340 ko || -17m10.50s || -198340 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/486.76_ratio09480_seed2513671278159213_square_p434.asm.only-status | 16m36.86s | 233660 ko || -16m36.86s || -233660 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/321.11_ratio11255_seed1206177160463392_square_p434.asm.only-status | 16m02.88s | 247764 ko || -16m02.87s || -247764 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/488.57_ratio08478_seed412639959625635_mul_p434.asm.only-status | 15m15.27s | 261852 ko || -15m15.26s || -261852 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/658.67_ratio16410_seed2655622732133814_mul_p434.asm.only-status | 14m29.59s | 266332 ko || -14m29.59s || -266332 ko | -100.00% | -100.00% 5m53.26s | 93844 ko | fiat-amd64/p384-mul.only-status | N/A | N/A || +5m53.25s || 93844 ko | ∞ | ∞ 5m14.55s | 84148 ko | fiat-amd64/p384-square.only-status | N/A | N/A || +5m14.55s || 84148 ko | ∞ | ∞ N/A | N/A | fiat-amd64/214.93_ratio08498_seed1525563746357639_mul_p384.asm.only-status | 2m25.60s | 68364 ko || -2m25.59s || -68364 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/213.89_ratio08324_seed2631520366048122_mul_p384.asm.only-status | 2m21.71s | 83844 ko || -2m21.71s || -83844 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/206.96_ratio08479_seed4366091815975477_mul_p384.asm.only-status | 2m13.76s | 68320 ko || -2m13.75s || -68320 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/137.18_ratio08632_seed3764303852282748_mul_p384.asm.only-status | 2m12.34s | 83964 ko || -2m12.34s || -83964 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/211.62_ratio07944_seed2584814796855012_square_p384.asm.only-status | 2m10.77s | 75448 ko || -2m10.77s || -75448 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/191.53_ratio08381_seed1292680342693278_square_p384.asm.only-status | 2m01.57s | 75652 ko || -2m01.56s || -75652 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/225.69_ratio07223_seed2960644640191953_square_p384.asm.only-status | 2m00.55s | 84116 ko || -2m00.54s || -84116 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/273.53_ratio08274_seed2438481381420792_square_p384.asm.only-status | 1m54.43s | 84216 ko || -1m54.43s || -84216 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/136.51_ratio08055_seed4259079871647348_square_p384.asm.only-status | 1m53.75s | 84192 ko || -1m53.75s || -84192 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/235.09_ratio08872_seed718657245800066_square_p384.asm.only-status | 1m51.60s | 68236 ko || -1m51.59s || -68236 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/374.78_ratio06002_seed2764343611261468_mul_p384.asm.only-status | 1m51.00s | 83880 ko || -1m51.00s || -83880 ko | -100.00% | -100.00% 1m45.60s | 50272 ko | fiat-amd64/p448-mul.only-status | N/A | N/A || +1m45.59s || 50272 ko | ∞ | ∞ N/A | N/A | fiat-amd64/289.28_ratio08194_seed629307854069783_mul_p384.asm.only-status | 1m43.68s | 68196 ko || -1m43.68s || -68196 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/306.00_ratio08343_seed1466306520902851_mul_p384.asm.only-status | 1m40.55s | 83920 ko || -1m40.54s || -83920 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/289.17_ratio08237_seed4091147453534096_square_p384.asm.only-status | 1m33.59s | 75276 ko || -1m33.59s || -75276 ko | -100.00% | -100.00% 1m07.48s | 45976 ko | fiat-amd64/p521-mul.only-status | N/A | N/A || +1m07.48s || 45976 ko | ∞ | ∞ 0m44.78s | 42264 ko | fiat-amd64/p448-square.only-status | N/A | N/A || +0m44.78s || 42264 ko | ∞ | ∞ N/A | N/A | fiat-amd64/178.66_ratio06168_seed42736280487937_mul_p448_solinas.asm.only-status | 0m33.32s | 33664 ko || -0m33.32s || -33664 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/15755_eval10of50_ratio06439_seed1785685356_mul_p448_solinas.asm.only-status | 0m29.84s | 34036 ko || -0m29.83s || -34036 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/12771_eval10of50_ratio07967_seed1785685356_mul_p521.asm.only-status | 0m28.89s | 31460 ko || -0m28.89s || -31460 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/196.68_ratio06710_seed3286030842510209_mul_p448_solinas.asm.only-status | 0m28.14s | 32816 ko || -0m28.14s || -32816 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/187.54_ratio07467_seed95742508246954_mul_p448_solinas.asm.only-status | 0m26.79s | 31476 ko || -0m26.78s || -31476 ko | -100.00% | -100.00% 0m26.79s | 37408 ko | fiat-amd64/p224-mul.only-status | N/A | N/A || +0m26.78s || 37408 ko | ∞ | ∞ 0m24.99s | 39140 ko | fiat-amd64/p224-square.only-status | N/A | N/A || +0m24.98s || 39140 ko | ∞ | ∞ N/A | N/A | fiat-amd64/185.66_ratio06892_seed3983286574960897_mul_p448_solinas.asm.only-status | 0m24.26s | 29652 ko || -0m24.26s || -29652 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/327.96_ratio06423_seed3148466208367815_mul_p448_solinas.asm.only-status | 0m23.44s | 31420 ko || -0m23.44s || -31420 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/266.00_ratio09375_seed4172627766484181_mul_p521.asm.only-status | 0m23.25s | 29664 ko || -0m23.25s || -29664 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/243.45_ratio07873_seed2606129114143455_mul_p448_solinas.asm.only-status | 0m23.08s | 29720 ko || -0m23.07s || -29720 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/119.02_ratio09671_seed3926842789276768_mul_p521.asm.only-status | 0m23.06s | 29700 ko || -0m23.05s || -29700 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/217.63_ratio08160_seed2132581807946336_mul_p448_solinas.asm.only-status | 0m22.71s | 29860 ko || -0m22.71s || -29860 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/203.94_ratio09640_seed2833800931993071_mul_p521.asm.only-status | 0m21.33s | 28928 ko || -0m21.32s || -28928 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/145.56_ratio10351_seed3475301888420410_mul_p521.asm.only-status | 0m20.58s | 29564 ko || -0m20.57s || -29564 ko | -100.00% | -100.00% 0m20.43s | 38668 ko | fiat-amd64/secp256k1-mul.only-status | N/A | N/A || +0m20.42s || 38668 ko | ∞ | ∞ 0m18.26s | 36412 ko | fiat-amd64/p521-square.only-status | N/A | N/A || +0m18.26s || 36412 ko | ∞ | ∞ N/A | N/A | fiat-amd64/144.28_ratio10700_seed380019983455042_mul_p521.asm.only-status | 0m17.47s | 29756 ko || -0m17.46s || -29756 ko | -100.00% | -100.00% 0m16.80s | 38776 ko | fiat-amd64/secp256k1-square.only-status | N/A | N/A || +0m16.80s || 38776 ko | ∞ | ∞ N/A | N/A | fiat-amd64/133.57_ratio10625_seed3179949323651885_mul_p521.asm.only-status | 0m16.65s | 29216 ko || -0m16.64s || -29216 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/163.02_ratio13059_seed2414091731930389_mul_p521.asm.only-status | 0m16.31s | 28044 ko || -0m16.30s || -28044 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/17654_eval10of50_ratio05675_seed1785685356_square_p448_solinas.asm.only-status | 0m14.72s | 28212 ko || -0m14.72s || -28212 ko | -100.00% | -100.00% 0m13.57s | 36544 ko | fiat-amd64/p256-mul.only-status | N/A | N/A || +0m13.57s || 36544 ko | ∞ | ∞ N/A | N/A | fiat-amd64/109.09_run500of10000_ratio05166_seed239269960_square_p448_solinas.asm.only-status | 0m13.45s | 27060 ko || -0m13.44s || -27060 ko | -100.00% | -100.00% 0m11.72s | 37960 ko | fiat-amd64/p256-square.only-status | N/A | N/A || +0m11.72s || 37960 ko | ∞ | ∞ N/A | N/A | fiat-amd64/177.17_ratio07019_seed3549696848003676_square_p448_solinas.asm.only-status | 0m10.02s | 25548 ko || -0m10.01s || -25548 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/110.11_ratio07038_seed1926673388220806_square_p448_solinas.asm.only-status | 0m09.97s | 26844 ko || -0m09.97s || -26844 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/108.18_ratio13200_seed1947243449658116_square_secp256k1.asm.only-status | 0m09.87s | 35112 ko || -0m09.86s || -35112 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/106.45_ratio07095_seed2797871388934122_square_p448_solinas.asm.only-status | 0m09.54s | 25720 ko || -0m09.53s || -25720 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/105.50_ratio12370_seed1660769872531946_mul_secp256k1.asm.only-status | 0m09.05s | 35232 ko || -0m09.05s || -35232 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/127.14_ratio07783_seed3468290092887263_square_p448_solinas.asm.only-status | 0m08.92s | 25460 ko || -0m08.92s || -25460 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/96.86_ratio12000_seed3346530064135123_square_p224.asm.only-status | 0m08.61s | 35876 ko || -0m08.60s || -35876 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/75.49_ratio12153_seed3485352012649499_mul_p224.asm.only-status | 0m08.46s | 35008 ko || -0m08.46s || -35008 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/40.60_ratio11121_seed2240937234026075_mul_p224.asm.only-status | 0m08.31s | 33152 ko || -0m08.31s || -33152 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/56.43_ratio12812_seed2553258791112417_mul_p224.asm.only-status | 0m08.27s | 34968 ko || -0m08.26s || -34968 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10099_eval10of50_ratio10087_seed1785685356_square_p521.asm.only-status | 0m08.18s | 23700 ko || -0m08.17s || -23700 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/66.82_ratio12314_seed31939672603401_mul_p224.asm.only-status | 0m08.16s | 35104 ko || -0m08.16s || -35104 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/69.81_ratio12134_seed4097297752174669_mul_p224.asm.only-status | 0m07.81s | 35816 ko || -0m07.80s || -35816 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/109.83_ratio10963_seed1201025027389101_square_secp256k1.asm.only-status | 0m07.78s | 35152 ko || -0m07.78s || -35152 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/94.05_ratio13057_seed3617302645812680_mul_p224.asm.only-status | 0m07.78s | 33080 ko || -0m07.78s || -33080 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/73.94_ratio13149_seed704989933151320_mul_p224.asm.only-status | 0m07.73s | 35108 ko || -0m07.73s || -35108 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/114.99_ratio08834_seed3078291382487252_square_p448_solinas.asm.only-status | 0m07.56s | 24592 ko || -0m07.55s || -24592 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/53.02_ratio11450_seed2312492709004220_mul_secp256k1.asm.only-status | 0m07.53s | 34788 ko || -0m07.53s || -34788 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/65.47_ratio07878_seed3824668340341651_square_p448_solinas.asm.only-status | 0m07.50s | 26444 ko || -0m07.50s || -26444 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/71.88_ratio10859_seed1800767550616553_square_p224.asm.only-status | 0m07.28s | 35020 ko || -0m07.28s || -35020 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/65.35_ratio12744_seed2003353293586321_mul_secp256k1.asm.only-status | 0m07.25s | 30880 ko || -0m07.25s || -30880 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/93.73_ratio11677_seed3777690670788846_square_p224.asm.only-status | 0m07.23s | 34924 ko || -0m07.23s || -34924 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/56.19_ratio11707_seed2109513243355895_square_p224.asm.only-status | 0m07.18s | 34920 ko || -0m07.17s || -34920 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/141.31_ratio10675_seed3277703234885713_square_p521.asm.only-status | 0m07.17s | 23676 ko || -0m07.16s || -23676 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/38.51_ratio12082_seed4032974613556909_square_p224.asm.only-status | 0m07.12s | 31164 ko || -0m07.12s || -31164 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/63.43_ratio11410_seed1853739923678552_square_p224.asm.only-status | 0m07.11s | 33148 ko || -0m07.11s || -33148 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/82.95_ratio11897_seed2924025841174363_mul_secp256k1.asm.only-status | 0m07.07s | 33240 ko || -0m07.07s || -33240 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/84.10_run0of10000_ratio07110_seed145282980_square_p521.asm.only-status | 0m07.01s | 24604 ko || -0m07.00s || -24604 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/74.87_ratio12489_seed4292899296502668_mul_secp256k1.asm.only-status | 0m06.97s | 35284 ko || -0m06.96s || -35284 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/72.32_ratio12743_seed1899281146561256_square_p224.asm.only-status | 0m06.80s | 34968 ko || -0m06.79s || -34968 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/94.05_ratio08319_seed1902570032819100_square_p448_solinas.asm.only-status | 0m06.74s | 25556 ko || -0m06.74s || -25556 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/81.79_ratio13326_seed4161903876788363_mul_secp256k1.asm.only-status | 0m06.67s | 31600 ko || -0m06.67s || -31600 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/63.73_ratio11916_seed3353671286337883_square_secp256k1.asm.only-status | 0m06.40s | 31596 ko || -0m06.40s || -31596 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/74.63_ratio11526_seed3879384365785814_square_secp256k1.asm.only-status | 0m06.29s | 35320 ko || -0m06.29s || -35320 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/72.51_ratio13176_seed2681584295662131_mul_secp256k1.asm.only-status | 0m06.27s | 35124 ko || -0m06.26s || -35124 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/90.10_ratio11854_seed600995032503849_square_p521.asm.only-status | 0m06.24s | 25356 ko || -0m06.24s || -25356 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/81.16_ratio11682_seed4228455700821548_square_secp256k1.asm.only-status | 0m06.19s | 35128 ko || -0m06.19s || -35128 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/45.66_ratio11572_seed523574687610626_square_secp256k1.asm.only-status | 0m06.13s | 35184 ko || -0m06.12s || -35184 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/79.91_ratio12893_seed1129172745277633_square_secp256k1.asm.only-status | 0m06.03s | 35224 ko || -0m06.03s || -35224 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/58.35_ratio12950_seed4109329367978504_square_p521.asm.only-status | 0m05.55s | 24224 ko || -0m05.54s || -24224 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/90.44_ratio11062_seed2001410703584519_square_p521.asm.only-status | 0m05.50s | 24760 ko || -0m05.50s || -24760 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/73.49_ratio15506_seed3258432306148663_square_p521.asm.only-status | 0m05.31s | 23436 ko || -0m05.30s || -23436 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/99.84_ratio13700_seed960968221135369_square_p521.asm.only-status | 0m05.19s | 25280 ko || -0m05.19s || -25280 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/90.50_ratio14944_seed2097618098035895_square_p521.asm.only-status | 0m04.98s | 24324 ko || -0m04.98s || -24324 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/84.14_ratio13808_seed121873771920510_mul_p256.asm.only-status | 0m04.44s | 33020 ko || -0m04.44s || -33020 ko | -100.00% | -100.00% 0m04.32s | 25520 ko | fiat-amd64/curve25519-mul.only-status | N/A | N/A || +0m04.32s || 25520 ko | ∞ | ∞ N/A | N/A | fiat-amd64/73.26_ratio11656_seed1973146713415797_mul_p256.asm.only-status | 0m04.28s | 33084 ko || -0m04.28s || -33084 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/83.10_ratio12735_seed4285393296769624_square_p256.asm.only-status | 0m04.27s | 32976 ko || -0m04.26s || -32976 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/34.46_ratio12577_seed2381330932113131_mul_p256.asm.only-status | 0m04.10s | 32836 ko || -0m04.09s || -32836 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/58.88_ratio13585_seed2274906452028590_mul_p256.asm.only-status | 0m03.99s | 33072 ko || -0m03.99s || -33072 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/60.55_ratio13361_seed202417025616803_mul_p256.asm.only-status | 0m03.91s | 34948 ko || -0m03.91s || -34948 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/63.88_ratio13929_seed3975821006667828_mul_p256.asm.only-status | 0m03.87s | 31080 ko || -0m03.87s || -31080 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/48.18_ratio14453_seed2237712397304101_mul_p256.asm.only-status | 0m03.86s | 34980 ko || -0m03.85s || -34980 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/54.52_ratio13237_seed2165586197121668_square_p256.asm.only-status | 0m03.57s | 33104 ko || -0m03.56s || -33104 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/65.58_ratio11142_seed2396663595229043_square_p256.asm.only-status | 0m03.57s | 32996 ko || -0m03.56s || -32996 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/37.26_ratio11905_seed4276274868767468_square_p256.asm.only-status | 0m03.52s | 33168 ko || -0m03.52s || -33168 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/65.45_ratio13084_seed2567748224150474_square_p256.asm.only-status | 0m03.50s | 35252 ko || -0m03.50s || -35252 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/54.71_ratio11705_seed815469023996179_square_p256.asm.only-status | 0m03.41s | 33060 ko || -0m03.41s || -33060 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/61.46_ratio12062_seed851790244847742_square_p256.asm.only-status | 0m03.41s | 33140 ko || -0m03.41s || -33140 ko | -100.00% | -100.00% 0m03.38s | 25680 ko | fiat-amd64/curve25519-square.only-status | N/A | N/A || +0m03.37s || 25680 ko | ∞ | ∞ N/A | N/A | fiat-amd64/10748_eval10of50_ratio09377_seed1785685356_mul_curve25519.asm.only-status | 0m01.92s | 21500 ko || -0m01.92s || -21500 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/27.26_ratio12379_seed3644061545824544_mul_curve25519.asm.only-status | 0m01.51s | 21016 ko || -0m01.51s || -21016 ko | -100.00% | -100.00% 0m01.51s | 22604 ko | fiat-amd64/poly1305-mul.only-status | N/A | N/A || +0m01.51s || 22604 ko | ∞ | ∞ 0m01.41s | 22404 ko | fiat-amd64/poly1305-square.only-status | N/A | N/A || +0m01.40s || 22404 ko | ∞ | ∞ N/A | N/A | fiat-amd64/58.75_ratio14090_seed775961493504765_mul_curve25519.asm.only-status | 0m01.25s | 21540 ko || -0m01.25s || -21540 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/35.64_ratio12722_seed1894487979817632_mul_curve25519.asm.only-status | 0m01.22s | 21432 ko || -0m01.21s || -21432 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/43.48_ratio11348_seed2293761300508191_mul_curve25519.asm.only-status | 0m01.14s | 21488 ko || -0m01.13s || -21488 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/47.22_ratio11985_seed956956614158782_mul_curve25519.asm.only-status | 0m01.13s | 21016 ko || -0m01.12s || -21016 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/67.75_ratio11130_seed3548740702652650_mul_curve25519.asm.only-status | 0m01.11s | 21076 ko || -0m01.11s || -21076 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/45.42_ratio13690_seed212576899785283_mul_curve25519.asm.only-status | 0m01.09s | 21148 ko || -0m01.09s || -21148 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10643_eval10of50_ratio09374_seed1785685356_square_curve25519.asm.only-status | 0m01.01s | 20484 ko || -0m01.01s || -20484 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/26.66_ratio12526_seed1385492581365969_square_curve25519.asm.only-status | 0m00.98s | 20240 ko || -0m00.98s || -20240 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/9789_ratio10114_seed1785685356_square_curve25519.asm.only-status | 0m00.94s | 20556 ko || -0m00.94s || -20556 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/16.02_ratio12241_seed4460917673401922_square_curve25519.asm.only-status | 0m00.88s | 20784 ko || -0m00.88s || -20784 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/8405_eval500of10000_ratio11908_seed34149503_square_curve25519.asm.only-status | 0m00.88s | 20412 ko || -0m00.88s || -20412 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/36.70_ratio11593_seed257070995500385_square_curve25519.asm.only-status | 0m00.81s | 20052 ko || -0m00.81s || -20052 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/34.61_ratio11891_seed162111320133243_square_curve25519.asm.only-status | 0m00.80s | 20464 ko || -0m00.80s || -20464 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/8531_eval500of10000_ratio11770_seed389709233_square_curve25519.asm.only-status | 0m00.78s | 20004 ko || -0m00.78s || -20004 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/50.55_ratio11585_seed1600379773707829_square_curve25519.asm.only-status | 0m00.76s | 20692 ko || -0m00.76s || -20692 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/36.89_ratio13024_seed1247118595307020_square_curve25519.asm.only-status | 0m00.75s | 20552 ko || -0m00.75s || -20552 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/29.69_ratio12300_seed2886888088419340_square_curve25519.asm.only-status | 0m00.72s | 20516 ko || -0m00.72s || -20516 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/23.09_ratio10796_seed2825755522683576_mul_poly1305.asm.only-status | 0m00.50s | 19452 ko || -0m00.50s || -19452 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/22.66_ratio12159_seed3867572441203858_mul_poly1305.asm.only-status | 0m00.48s | 20096 ko || -0m00.48s || -20096 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10483_eval10of50_ratio09540_seed1785685356_mul_poly1305.asm.only-status | 0m00.46s | 19308 ko || -0m00.46s || -19308 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/16.35_ratio10468_seed202140007933080_mul_poly1305.asm.only-status | 0m00.45s | 19508 ko || -0m00.45s || -19508 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/19.84_run0of10000_ratio08458_seed281000036_mul_poly1305.asm.only-status | 0m00.45s | 19632 ko || -0m00.45s || -19632 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/13.24_ratio11452_seed2385502359727706_mul_poly1305.asm.only-status | 0m00.44s | 19508 ko || -0m00.44s || -19508 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/17.71_ratio10643_seed3175310705764234_mul_poly1305.asm.only-status | 0m00.44s | 19708 ko || -0m00.44s || -19708 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/19.90_ratio09545_seed4133336594047700_square_poly1305.asm.only-status | 0m00.43s | 19424 ko || -0m00.43s || -19424 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/23.11_ratio11086_seed2191923489898950_mul_poly1305.asm.only-status | 0m00.43s | 19504 ko || -0m00.43s || -19504 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/13.88_ratio11342_seed989931496276831_square_poly1305.asm.only-status | 0m00.42s | 19908 ko || -0m00.42s || -19908 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/20.24_ratio10303_seed4854042474810_square_poly1305.asm.only-status | 0m00.42s | 19532 ko || -0m00.42s || -19532 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10541_eval10of50_ratio09504_seed1785685356_square_poly1305.asm.only-status | 0m00.39s | 19556 ko || -0m00.39s || -19556 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10_ratio11074_seed2040113663254706_square_poly1305.asm.only-status | 0m00.38s | 19468 ko || -0m00.38s || -19468 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/20.45_ratio11002_seed1572008938505072_square_poly1305.asm.only-status | 0m00.37s | 19592 ko || -0m00.37s || -19592 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/10.67_ratio11074_seed2040113663254706_square_poly1305.asm.only-status | 0m00.36s | 19568 ko || -0m00.36s || -19568 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/16232_ratio11549_seed1785685356_square_poly1305.asm.only-status | 0m00.36s | 19708 ko || -0m00.36s || -19708 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/33.03_ratio10189_seed2792533714102208_mul_poly1305.asm.only-status | 0m00.35s | 19464 ko || -0m00.35s || -19464 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/23.85_ratio11197_seed3328442630777717_square_poly1305.asm.only-status | 0m00.34s | 19796 ko || -0m00.34s || -19796 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/33.71_ratio16752_seed267833281830466_square_poly1305.asm.only-status | 0m00.27s | 19448 ko || -0m00.27s || -19448 ko | -100.00% | -100.00% N/A | N/A | fiat-amd64/8917_ratio11077_seed3401074160038646_sub_p224.asm.only-status | 0m00.18s | 21552 ko || -0m00.18s || -21552 ko | -100.00% | -100.00% 0m00.14s | 21712 ko | fiat-amd64/p224-sub.only-status | N/A | N/A || +0m00.14s || 21712 ko | ∞ | ∞ ``` </p> </details> 19 April 2022, 14:02:55 UTC
a7e929b Support duplicate functions in --hints-file This allows us to check multiple assembly files without having to resynthesize the PHOAS input, as suggested in https://github.com/mit-plv/fiat-crypto/issues/1170#issuecomment-1076886198. What remains is to update the Makefile generation to take advantage of this. 19 April 2022, 14:02:55 UTC
bb756e4 Add more operations to parsing in the equivalence checker (#1197) We now support parsing `call`, `cmovb`, `cmp`, `db`, `dd`, `dq`, `dw`, `je`, `jmp`, `mul`, `pop`, `push`, `rcr`, and `shrx`, and prefixes like `rep ret`, `repz ret`, `repnz ret`. We also support labels, `align`, and `default rel`. We should probably try to properly support a larger fraction of https://www.nasm.us/xdoc/2.15.05/html/nasmdoc3.html at some point. We now parse instructions (opcodes) in a case-insensitive manner, though many other places are still case-sensitive. The stack is now computed based on push and pop instructions as well as the adjustments to rsp, and supports aggregating multiple constant-sized adjustments to rsp. We don't yet support the `0F3h` syntax alternative for the hex `0xF3`, mostly because I couldn't be bothered to write a parser for it right now. 18 April 2022, 09:48:12 UTC
697c467 Ignore generated .only-status files 17 April 2022, 16:35:04 UTC
2c7369f Work around OOM issues in Windows with -j1 16 April 2022, 11:00:06 UTC
fac48c6 Add support for TIMED=1 in make test-amd64-files (#1196) Also make only-test-amd64-files actually not rebuild/depend on the binaries, and have all of its targets be .PHONY, and make Haskell error messages line up with OCaml ones (always printed to stdout). 16 April 2022, 09:56:58 UTC
49cd997 Work around git security issue https://github.com/actions/checkout/issues/766 / https://github.com/ocaml/setup-ocaml/issues/479 / https://github.com/actions/checkout/issues/767 / https://github.com/actions/checkout/issues/760 16 April 2022, 01:34:22 UTC
be2e5dc Update coq-windows.yml Try *, as per https://github.com/actions/checkout/issues/767#issuecomment-1100107030 15 April 2022, 23:59:38 UTC
8410364 [CI] [Win] Work around new security feature of git Works around https://github.com/actions/checkout/issues/766 15 April 2022, 23:59:38 UTC
3138450 Revert "Work around new security feature of git" This reverts commit b4ef82715e24dce03cf8c06c96a768aaf1d9c219. We only need this on Windows. 15 April 2022, 23:59:38 UTC
c229bbb Work around new security feature of git Works around https://github.com/actions/checkout/issues/766 15 April 2022, 23:59:38 UTC
8f903a4 Add parse_strs_{casefold,case_insensitive} 15 April 2022, 10:50:00 UTC
ac9894e Add mem_of_reg utility function 15 April 2022, 10:50:00 UTC
6d81962 Add some util lemmas and definitions 15 April 2022, 10:50:00 UTC
02f28aa [CI] [Win] Look for bash in the same place every time 14 April 2022, 22:12:38 UTC
78b499b Adapt w.r.t. coq/coq#15434. (#1185) 12 April 2022, 09:40:19 UTC
0ac3d52 Bump actions/setup-java from 3.1.0 to 3.1.1 (#1186) 12 April 2022, 09:40:05 UTC
17ff10f Improve duplicate error message 12 April 2022, 09:40:46 UTC
8a5865b Restore deprecated theorems so that no proofs are admitted 11 April 2022, 20:25:31 UTC
645b702 Enable vm_compute on validate with bedrock2 (#1183) This should fix OOM issues. Requires https://github.com/coq/coq/pull/15886 04 April 2022, 15:11:26 UTC
d4073ee First draft of buf_append revisions. TODO: auxiliary lemmas to make it useful (e.g. memcpy) 01 April 2022, 20:52:56 UTC
570fa91 Fix invalid coq-windows.yml 01 April 2022, 20:50:19 UTC
d7fb415 Bump actions/setup-java from 3.0.0 to 3.1.0 (#1184) 01 April 2022, 19:59:29 UTC
815ea7c Test more versions of Coq on opam 01 April 2022, 00:24:25 UTC
06a7f15 Bump coqprime from `de0c48a` to `12ad864` (#1182) 31 March 2022, 20:13:36 UTC
6327fdd Finish assembly equivalence checker proof The proof is slow and horrible due to my attempts to make it a bit less slow, because there's no systematicness to the chaining of `Forall` and `Forall2` implications, and it's way too slow to use the straightfoward brute force approach. But it's done! It takes 287.14s on my laptop to run this file. <details><summary>Timing Diff</summary> <p> ``` After | Peak Mem | File Name | Before | Peak Mem || Change || Change (mem) | % Change | % Change (mem) --------------------------------------------------------------------------------------------------------------------------------------- 3m12.47s | 2220284 ko | Total Time / Peak Mem | 5m03.18s | 3114444 ko || -1m50.71s || -894160 ko | -36.51% | -28.71% --------------------------------------------------------------------------------------------------------------------------------------- 3m12.48s | 2220284 ko | Assembly/WithBedrock/Proofs.vo | 5m03.19s | 3114444 ko || -1m50.71s || -894160 ko | -36.51% | -28.71% ``` </p> </details> 31 March 2022, 04:51:04 UTC
3f2f541 Bump rupicola and use install_lib target 31 March 2022, 01:06:24 UTC
0da8945 Remove 'About' command for less cluttered build output 30 March 2022, 22:48:07 UTC
b4d9e86 Bump rupicola to move crypto files to this project 30 March 2022, 22:48:07 UTC
5f62da6 Update _CoqProject for added files. Adapt to coq/coq#15754 30 March 2022, 22:48:07 UTC
1a0f59c Add WIP rupicola crypto functions 30 March 2022, 22:48:07 UTC
05f0142 Bump rupicola from `94afa11` to `0b67e4f` (#1180) 30 March 2022, 21:58:15 UTC
0f61b56 Word-by-word Montgomery with new Bedrock2 Synthesis Pipeline (#1113) * "WordByWordMontgomery w/ new Bedrock Pipeline" * "Remove feval_alt from FieldRepresentation" * With _CoqProject * "Minor cosmetic changes" * "with changes to ladder-step" * "generated files updated" 30 March 2022, 20:59:02 UTC
986ebad Add a lemma about filter and Forall (#1177) 30 March 2022, 15:17:18 UTC
eea7a77 unify inv interface 30 March 2022, 11:40:18 UTC
bbfdfcc Bump rupicola for fixed install target 30 March 2022, 02:59:54 UTC
7327a15 Automated Rust Crate Version Bump: Wed Mar 30 00:20:37 UTC 2022 36ef68f05a435723491368ad68131707f529b8f4 30 March 2022, 00:20:37 UTC
36ef68f Add support for SKIP_COQSCRIPTS_INCLUDE=1 29 March 2022, 22:51:08 UTC
894e084 Bump rewriter from `10c6a00` to `2c2d78e` (#1175) 29 March 2022, 20:17:17 UTC
8ab610a Bump rupicola to get fixed install targets 29 March 2022, 18:51:58 UTC
back to top