From 112ccc2cd6dec21fd66e8b7f0878f95005628314 Mon Sep 17 00:00:00 2001 From: "Jan Winkelmann (keks)" Date: Wed, 6 Nov 2024 12:32:44 +0100 Subject: [PATCH] fmt rest of generated code --- libcrux-hacl-rs-krml/src/lib.rs | 36 +- libcrux-hacl-rs/src/bignum.rs | 8 +- libcrux-hacl-rs/src/ed25519_precomptable.rs | 2398 +++++++++++++++---- libcrux-hacl-rs/src/fstar/uint16.rs | 34 +- libcrux-hacl-rs/src/fstar/uint32.rs | 34 +- libcrux-hacl-rs/src/fstar/uint64.rs | 34 +- libcrux-hacl-rs/src/fstar/uint8.rs | 35 +- libcrux-hacl-rs/src/lowstar/endianness.rs | 12 +- 8 files changed, 2022 insertions(+), 569 deletions(-) diff --git a/libcrux-hacl-rs-krml/src/lib.rs b/libcrux-hacl-rs-krml/src/lib.rs index 18f6fe094..30896bf7f 100644 --- a/libcrux-hacl-rs-krml/src/lib.rs +++ b/libcrux-hacl-rs-krml/src/lib.rs @@ -1,16 +1,16 @@ -use proc_macro::{TokenStream,TokenTree,Delimiter}; +use proc_macro::{Delimiter, TokenStream, TokenTree}; -fn skip_comma>(ts: &mut T) { +fn skip_comma>(ts: &mut T) { match ts.next() { - | Some (TokenTree::Punct(p)) => assert_eq!(p.as_char(), ','), - | _ => panic!("Expected comma") + Some(TokenTree::Punct(p)) => assert_eq!(p.as_char(), ','), + _ => panic!("Expected comma"), } } -fn accept_token>(ts: &mut T) -> TokenTree { +fn accept_token>(ts: &mut T) -> TokenTree { match ts.next() { - | Some(t) => t, - | _ => panic!("early end") + Some(t) => t, + _ => panic!("early end"), } } @@ -24,23 +24,23 @@ pub fn unroll_for(ts: TokenStream) -> TokenStream { let n_loops = accept_token(&mut i).to_string().parse::().unwrap(); skip_comma(&mut i); let var = accept_token(&mut i).to_string(); - let var = &var[1..var.len()-1]; + let var = &var[1..var.len() - 1]; skip_comma(&mut i); let start = accept_token(&mut i).to_string(); skip_comma(&mut i); let increment = accept_token(&mut i).to_string(); skip_comma(&mut i); let grouped_body = brace(TokenStream::from_iter(i)); - let chunks = - (0..n_loops).map(|i| { - let chunks = [ - format!("const {}: u32 = {} + {} * {};", var, start, i, increment).parse().unwrap(), - TokenStream::from(grouped_body.clone()), - ";".parse().unwrap() - ]; - TokenStream::from(brace(TokenStream::from_iter(chunks))) - }) - ; + let chunks = (0..n_loops).map(|i| { + let chunks = [ + format!("const {}: u32 = {} + {} * {};", var, start, i, increment) + .parse() + .unwrap(), + TokenStream::from(grouped_body.clone()), + ";".parse().unwrap(), + ]; + TokenStream::from(brace(TokenStream::from_iter(chunks))) + }); TokenStream::from(brace(TokenStream::from_iter(chunks.into_iter().flatten()))) // "{ let i = 0; println!(\"FROM MACRO{}\", i); }".parse().unwrap() } diff --git a/libcrux-hacl-rs/src/bignum.rs b/libcrux-hacl-rs/src/bignum.rs index 2d4a00fb1..18f0a69d6 100644 --- a/libcrux-hacl-rs/src/bignum.rs +++ b/libcrux-hacl-rs/src/bignum.rs @@ -1,12 +1,12 @@ -pub mod bignum_base; pub mod bignum; -pub mod bignum32; -pub mod bignum64; pub mod bignum256; pub mod bignum256_32; +pub mod bignum32; pub mod bignum4096; pub mod bignum4096_32; +pub mod bignum64; +pub mod bignum_base; pub mod test { - // pub mod bignum4096; + // pub mod bignum4096; } diff --git a/libcrux-hacl-rs/src/ed25519_precomptable.rs b/libcrux-hacl-rs/src/ed25519_precomptable.rs index ac344ed73..f0e8def64 100644 --- a/libcrux-hacl-rs/src/ed25519_precomptable.rs +++ b/libcrux-hacl-rs/src/ed25519_precomptable.rs @@ -4,475 +4,1937 @@ #![allow(unused_assignments)] #![allow(unreachable_patterns)] -pub(crate) const precomp_basepoint_table_w4: [u64; 320] = - [0u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 0u64, - 0u64, 0u64, 0u64, 0u64, 1738742601995546u64, 1146398526822698u64, 2070867633025821u64, - 562264141797630u64, 587772402128613u64, 1801439850948184u64, 1351079888211148u64, - 450359962737049u64, 900719925474099u64, 1801439850948198u64, 1u64, 0u64, 0u64, 0u64, 0u64, - 1841354044333475u64, 16398895984059u64, 755974180946558u64, 900171276175154u64, - 1821297809914039u64, 1661154287933054u64, 284530020860578u64, 1390261174866914u64, - 1524110943907984u64, 1045603498418422u64, 928651508580478u64, 1383326941296346u64, - 961937908925785u64, 80455759693706u64, 904734540352947u64, 1507481815385608u64, - 2223447444246085u64, 1083941587175919u64, 2059929906842505u64, 1581435440146976u64, - 782730187692425u64, 9928394897574u64, 1539449519985236u64, 1923587931078510u64, - 552919286076056u64, 376925408065760u64, 447320488831784u64, 1362918338468019u64, - 1470031896696846u64, 2189796996539902u64, 1337552949959847u64, 1762287177775726u64, - 237994495816815u64, 1277840395970544u64, 543972849007241u64, 1224692671618814u64, - 162359533289271u64, 282240927125249u64, 586909166382289u64, 17726488197838u64, - 377014554985659u64, 1433835303052512u64, 702061469493692u64, 1142253108318154u64, - 318297794307551u64, 954362646308543u64, 517363881452320u64, 1868013482130416u64, - 262562472373260u64, 902232853249919u64, 2107343057055746u64, 462368348619024u64, - 1893758677092974u64, 2177729767846389u64, 2168532543559143u64, 443867094639821u64, - 730169342581022u64, 1564589016879755u64, 51218195700649u64, 76684578423745u64, - 560266272480743u64, 922517457707697u64, 2066645939860874u64, 1318277348414638u64, - 1576726809084003u64, 1817337608563665u64, 1874240939237666u64, 754733726333910u64, - 97085310406474u64, 751148364309235u64, 1622159695715187u64, 1444098819684916u64, - 130920805558089u64, 1260449179085308u64, 1860021740768461u64, 110052860348509u64, - 193830891643810u64, 164148413933881u64, 180017794795332u64, 1523506525254651u64, - 465981629225956u64, 559733514964572u64, 1279624874416974u64, 2026642326892306u64, - 1425156829982409u64, 2160936383793147u64, 1061870624975247u64, 2023497043036941u64, - 117942212883190u64, 490339622800774u64, 1729931303146295u64, 422305932971074u64, - 529103152793096u64, 1211973233775992u64, 721364955929681u64, 1497674430438813u64, - 342545521275073u64, 2102107575279372u64, 2108462244669966u64, 1382582406064082u64, - 2206396818383323u64, 2109093268641147u64, 10809845110983u64, 1605176920880099u64, - 744640650753946u64, 1712758897518129u64, 373410811281809u64, 648838265800209u64, - 813058095530999u64, 513987632620169u64, 465516160703329u64, 2136322186126330u64, - 1979645899422932u64, 1197131006470786u64, 1467836664863979u64, 1340751381374628u64, - 1810066212667962u64, 1009933588225499u64, 1106129188080873u64, 1388980405213901u64, - 533719246598044u64, 1169435803073277u64, 198920999285821u64, 487492330629854u64, - 1807093008537778u64, 1540899012923865u64, 2075080271659867u64, 1527990806921523u64, - 1323728742908002u64, 1568595959608205u64, 1388032187497212u64, 2026968840050568u64, - 1396591153295755u64, 820416950170901u64, 520060313205582u64, 2016404325094901u64, - 1584709677868520u64, 272161374469956u64, 1567188603996816u64, 1986160530078221u64, - 553930264324589u64, 1058426729027503u64, 8762762886675u64, 2216098143382988u64, - 1835145266889223u64, 1712936431558441u64, 1017009937844974u64, 585361667812740u64, - 2114711541628181u64, 2238729632971439u64, 121257546253072u64, 847154149018345u64, - 211972965476684u64, 287499084460129u64, 2098247259180197u64, 839070411583329u64, - 339551619574372u64, 1432951287640743u64, 526481249498942u64, 931991661905195u64, - 1884279965674487u64, 200486405604411u64, 364173020594788u64, 518034455936955u64, - 1085564703965501u64, 16030410467927u64, 604865933167613u64, 1695298441093964u64, - 498856548116159u64, 2193030062787034u64, 1706339802964179u64, 1721199073493888u64, - 820740951039755u64, 1216053436896834u64, 23954895815139u64, 1662515208920491u64, - 1705443427511899u64, 1957928899570365u64, 1189636258255725u64, 1795695471103809u64, - 1691191297654118u64, 282402585374360u64, 460405330264832u64, 63765529445733u64, - 469763447404473u64, 733607089694996u64, 685410420186959u64, 1096682630419738u64, - 1162548510542362u64, 1020949526456676u64, 1211660396870573u64, 613126398222696u64, - 1117829165843251u64, 742432540886650u64, 1483755088010658u64, 942392007134474u64, - 1447834130944107u64, 489368274863410u64, 23192985544898u64, 648442406146160u64, - 785438843373876u64, 249464684645238u64, 170494608205618u64, 335112827260550u64, - 1462050123162735u64, 1084803668439016u64, 853459233600325u64, 215777728187495u64, - 1965759433526974u64, 1349482894446537u64, 694163317612871u64, 860536766165036u64, - 1178788094084321u64, 1652739626626996u64, 2115723946388185u64, 1577204379094664u64, - 1083882859023240u64, 1768759143381635u64, 1737180992507258u64, 246054513922239u64, - 577253134087234u64, 356340280578042u64, 1638917769925142u64, 223550348130103u64, - 470592666638765u64, 22663573966996u64, 596552461152400u64, 364143537069499u64, - 3942119457699u64, 107951982889287u64, 1843471406713209u64, 1625773041610986u64, - 1466141092501702u64, 1043024095021271u64, 310429964047508u64, 98559121500372u64, - 152746933782868u64, 259407205078261u64, 828123093322585u64, 1576847274280091u64, - 1170871375757302u64, 1588856194642775u64, 984767822341977u64, 1141497997993760u64, - 809325345150796u64, 1879837728202511u64, 201340910657893u64, 1079157558888483u64, - 1052373448588065u64, 1732036202501778u64, 2105292670328445u64, 679751387312402u64, - 1679682144926229u64, 1695823455818780u64, 498852317075849u64, 1786555067788433u64, - 1670727545779425u64, 117945875433544u64, 407939139781844u64, 854632120023778u64, - 1413383148360437u64, 286030901733673u64, 1207361858071196u64, 461340408181417u64, - 1096919590360164u64, 1837594897475685u64, 533755561544165u64, 1638688042247712u64, - 1431653684793005u64, 1036458538873559u64, 390822120341779u64, 1920929837111618u64, - 543426740024168u64, 645751357799929u64, 2245025632994463u64, 1550778638076452u64, - 223738153459949u64, 1337209385492033u64, 1276967236456531u64, 1463815821063071u64, - 2070620870191473u64, 1199170709413753u64, 273230877394166u64, 1873264887608046u64, - 890877152910775u64]; +pub(crate) const precomp_basepoint_table_w4: [u64; 320] = [ + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1738742601995546u64, + 1146398526822698u64, + 2070867633025821u64, + 562264141797630u64, + 587772402128613u64, + 1801439850948184u64, + 1351079888211148u64, + 450359962737049u64, + 900719925474099u64, + 1801439850948198u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1841354044333475u64, + 16398895984059u64, + 755974180946558u64, + 900171276175154u64, + 1821297809914039u64, + 1661154287933054u64, + 284530020860578u64, + 1390261174866914u64, + 1524110943907984u64, + 1045603498418422u64, + 928651508580478u64, + 1383326941296346u64, + 961937908925785u64, + 80455759693706u64, + 904734540352947u64, + 1507481815385608u64, + 2223447444246085u64, + 1083941587175919u64, + 2059929906842505u64, + 1581435440146976u64, + 782730187692425u64, + 9928394897574u64, + 1539449519985236u64, + 1923587931078510u64, + 552919286076056u64, + 376925408065760u64, + 447320488831784u64, + 1362918338468019u64, + 1470031896696846u64, + 2189796996539902u64, + 1337552949959847u64, + 1762287177775726u64, + 237994495816815u64, + 1277840395970544u64, + 543972849007241u64, + 1224692671618814u64, + 162359533289271u64, + 282240927125249u64, + 586909166382289u64, + 17726488197838u64, + 377014554985659u64, + 1433835303052512u64, + 702061469493692u64, + 1142253108318154u64, + 318297794307551u64, + 954362646308543u64, + 517363881452320u64, + 1868013482130416u64, + 262562472373260u64, + 902232853249919u64, + 2107343057055746u64, + 462368348619024u64, + 1893758677092974u64, + 2177729767846389u64, + 2168532543559143u64, + 443867094639821u64, + 730169342581022u64, + 1564589016879755u64, + 51218195700649u64, + 76684578423745u64, + 560266272480743u64, + 922517457707697u64, + 2066645939860874u64, + 1318277348414638u64, + 1576726809084003u64, + 1817337608563665u64, + 1874240939237666u64, + 754733726333910u64, + 97085310406474u64, + 751148364309235u64, + 1622159695715187u64, + 1444098819684916u64, + 130920805558089u64, + 1260449179085308u64, + 1860021740768461u64, + 110052860348509u64, + 193830891643810u64, + 164148413933881u64, + 180017794795332u64, + 1523506525254651u64, + 465981629225956u64, + 559733514964572u64, + 1279624874416974u64, + 2026642326892306u64, + 1425156829982409u64, + 2160936383793147u64, + 1061870624975247u64, + 2023497043036941u64, + 117942212883190u64, + 490339622800774u64, + 1729931303146295u64, + 422305932971074u64, + 529103152793096u64, + 1211973233775992u64, + 721364955929681u64, + 1497674430438813u64, + 342545521275073u64, + 2102107575279372u64, + 2108462244669966u64, + 1382582406064082u64, + 2206396818383323u64, + 2109093268641147u64, + 10809845110983u64, + 1605176920880099u64, + 744640650753946u64, + 1712758897518129u64, + 373410811281809u64, + 648838265800209u64, + 813058095530999u64, + 513987632620169u64, + 465516160703329u64, + 2136322186126330u64, + 1979645899422932u64, + 1197131006470786u64, + 1467836664863979u64, + 1340751381374628u64, + 1810066212667962u64, + 1009933588225499u64, + 1106129188080873u64, + 1388980405213901u64, + 533719246598044u64, + 1169435803073277u64, + 198920999285821u64, + 487492330629854u64, + 1807093008537778u64, + 1540899012923865u64, + 2075080271659867u64, + 1527990806921523u64, + 1323728742908002u64, + 1568595959608205u64, + 1388032187497212u64, + 2026968840050568u64, + 1396591153295755u64, + 820416950170901u64, + 520060313205582u64, + 2016404325094901u64, + 1584709677868520u64, + 272161374469956u64, + 1567188603996816u64, + 1986160530078221u64, + 553930264324589u64, + 1058426729027503u64, + 8762762886675u64, + 2216098143382988u64, + 1835145266889223u64, + 1712936431558441u64, + 1017009937844974u64, + 585361667812740u64, + 2114711541628181u64, + 2238729632971439u64, + 121257546253072u64, + 847154149018345u64, + 211972965476684u64, + 287499084460129u64, + 2098247259180197u64, + 839070411583329u64, + 339551619574372u64, + 1432951287640743u64, + 526481249498942u64, + 931991661905195u64, + 1884279965674487u64, + 200486405604411u64, + 364173020594788u64, + 518034455936955u64, + 1085564703965501u64, + 16030410467927u64, + 604865933167613u64, + 1695298441093964u64, + 498856548116159u64, + 2193030062787034u64, + 1706339802964179u64, + 1721199073493888u64, + 820740951039755u64, + 1216053436896834u64, + 23954895815139u64, + 1662515208920491u64, + 1705443427511899u64, + 1957928899570365u64, + 1189636258255725u64, + 1795695471103809u64, + 1691191297654118u64, + 282402585374360u64, + 460405330264832u64, + 63765529445733u64, + 469763447404473u64, + 733607089694996u64, + 685410420186959u64, + 1096682630419738u64, + 1162548510542362u64, + 1020949526456676u64, + 1211660396870573u64, + 613126398222696u64, + 1117829165843251u64, + 742432540886650u64, + 1483755088010658u64, + 942392007134474u64, + 1447834130944107u64, + 489368274863410u64, + 23192985544898u64, + 648442406146160u64, + 785438843373876u64, + 249464684645238u64, + 170494608205618u64, + 335112827260550u64, + 1462050123162735u64, + 1084803668439016u64, + 853459233600325u64, + 215777728187495u64, + 1965759433526974u64, + 1349482894446537u64, + 694163317612871u64, + 860536766165036u64, + 1178788094084321u64, + 1652739626626996u64, + 2115723946388185u64, + 1577204379094664u64, + 1083882859023240u64, + 1768759143381635u64, + 1737180992507258u64, + 246054513922239u64, + 577253134087234u64, + 356340280578042u64, + 1638917769925142u64, + 223550348130103u64, + 470592666638765u64, + 22663573966996u64, + 596552461152400u64, + 364143537069499u64, + 3942119457699u64, + 107951982889287u64, + 1843471406713209u64, + 1625773041610986u64, + 1466141092501702u64, + 1043024095021271u64, + 310429964047508u64, + 98559121500372u64, + 152746933782868u64, + 259407205078261u64, + 828123093322585u64, + 1576847274280091u64, + 1170871375757302u64, + 1588856194642775u64, + 984767822341977u64, + 1141497997993760u64, + 809325345150796u64, + 1879837728202511u64, + 201340910657893u64, + 1079157558888483u64, + 1052373448588065u64, + 1732036202501778u64, + 2105292670328445u64, + 679751387312402u64, + 1679682144926229u64, + 1695823455818780u64, + 498852317075849u64, + 1786555067788433u64, + 1670727545779425u64, + 117945875433544u64, + 407939139781844u64, + 854632120023778u64, + 1413383148360437u64, + 286030901733673u64, + 1207361858071196u64, + 461340408181417u64, + 1096919590360164u64, + 1837594897475685u64, + 533755561544165u64, + 1638688042247712u64, + 1431653684793005u64, + 1036458538873559u64, + 390822120341779u64, + 1920929837111618u64, + 543426740024168u64, + 645751357799929u64, + 2245025632994463u64, + 1550778638076452u64, + 223738153459949u64, + 1337209385492033u64, + 1276967236456531u64, + 1463815821063071u64, + 2070620870191473u64, + 1199170709413753u64, + 273230877394166u64, + 1873264887608046u64, + 890877152910775u64, +]; -pub(crate) const precomp_g_pow2_64_table_w4: [u64; 320] = - [0u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 0u64, - 0u64, 0u64, 0u64, 0u64, 13559344787725u64, 2051621493703448u64, 1947659315640708u64, - 626856790370168u64, 1592804284034836u64, 1781728767459187u64, 278818420518009u64, - 2038030359908351u64, 910625973862690u64, 471887343142239u64, 1298543306606048u64, - 794147365642417u64, 129968992326749u64, 523140861678572u64, 1166419653909231u64, - 2009637196928390u64, 1288020222395193u64, 1007046974985829u64, 208981102651386u64, - 2074009315253380u64, 1564056062071967u64, 276822668750618u64, 206621292512572u64, - 470304361809269u64, 895215438398493u64, 1527859053868686u64, 1624967223409369u64, - 811821865979736u64, 350450534838340u64, 219143807921807u64, 507994540371254u64, - 986513794574720u64, 1142661369967121u64, 621278293399257u64, 556189161519781u64, - 351964007865066u64, 2011573453777822u64, 1367125527151537u64, 1691316722438196u64, - 731328817345164u64, 1284781192709232u64, 478439299539269u64, 204842178076429u64, - 2085125369913651u64, 1980773492792985u64, 1480264409524940u64, 688389585376233u64, - 612962643526972u64, 165595382536676u64, 1850300069212263u64, 1176357203491551u64, - 1880164984292321u64, 10786153104736u64, 1242293560510203u64, 1358399951884084u64, - 1901358796610357u64, 1385092558795806u64, 1734893785311348u64, 2046201851951191u64, - 1233811309557352u64, 1531160168656129u64, 1543287181303358u64, 516121446374119u64, - 723422668089935u64, 1228176774959679u64, 1598014722726267u64, 1630810326658412u64, - 1343833067463760u64, 1024397964362099u64, 1157142161346781u64, 56422174971792u64, - 544901687297092u64, 1291559028869009u64, 1336918672345120u64, 1390874603281353u64, - 1127199512010904u64, 992644979940964u64, 1035213479783573u64, 36043651196100u64, - 1220961519321221u64, 1348190007756977u64, 579420200329088u64, 1703819961008985u64, - 1993919213460047u64, 2225080008232251u64, 392785893702372u64, 464312521482632u64, - 1224525362116057u64, 810394248933036u64, 932513521649107u64, 592314953488703u64, - 586334603791548u64, 1310888126096549u64, 650842674074281u64, 1596447001791059u64, - 2086767406328284u64, 1866377645879940u64, 1721604362642743u64, 738502322566890u64, - 1851901097729689u64, 1158347571686914u64, 2023626733470827u64, 329625404653699u64, - 563555875598551u64, 516554588079177u64, 1134688306104598u64, 186301198420809u64, - 1339952213563300u64, 643605614625891u64, 1947505332718043u64, 1722071694852824u64, - 601679570440694u64, 1821275721236351u64, 1808307842870389u64, 1654165204015635u64, - 1457334100715245u64, 217784948678349u64, 1820622417674817u64, 1946121178444661u64, - 597980757799332u64, 1745271227710764u64, 2010952890941980u64, 339811849696648u64, - 1066120666993872u64, 261276166508990u64, 323098645774553u64, 207454744271283u64, - 941448672977675u64, 71890920544375u64, 840849789313357u64, 1223996070717926u64, - 196832550853408u64, 115986818309231u64, 1586171527267675u64, 1666169080973450u64, - 1456454731176365u64, 44467854369003u64, 2149656190691480u64, 283446383597589u64, - 2040542647729974u64, 305705593840224u64, 475315822269791u64, 648133452550632u64, - 169218658835720u64, 24960052338251u64, 938907951346766u64, 425970950490510u64, - 1037622011013183u64, 1026882082708180u64, 1635699409504916u64, 1644776942870488u64, - 2151820331175914u64, 824120674069819u64, 835744976610113u64, 1991271032313190u64, - 96507354724855u64, 400645405133260u64, 343728076650825u64, 1151585441385566u64, - 1403339955333520u64, 230186314139774u64, 1736248861506714u64, 1010804378904572u64, - 1394932289845636u64, 1901351256960852u64, 2187471430089807u64, 1003853262342670u64, - 1327743396767461u64, 1465160415991740u64, 366625359144534u64, 1534791405247604u64, - 1790905930250187u64, 1255484115292738u64, 2223291365520443u64, 210967717407408u64, - 26722916813442u64, 1919574361907910u64, 468825088280256u64, 2230011775946070u64, - 1628365642214479u64, 568871869234932u64, 1066987968780488u64, 1692242903745558u64, - 1678903997328589u64, 214262165888021u64, 1929686748607204u64, 1790138967989670u64, - 1790261616022076u64, 1559824537553112u64, 1230364591311358u64, 147531939886346u64, - 1528207085815487u64, 477957922927292u64, 285670243881618u64, 264430080123332u64, - 1163108160028611u64, 373201522147371u64, 34903775270979u64, 1750870048600662u64, - 1319328308741084u64, 1547548634278984u64, 1691259592202927u64, 2247758037259814u64, - 329611399953677u64, 1385555496268877u64, 2242438354031066u64, 1329523854843632u64, - 399895373846055u64, 678005703193452u64, 1496357700997771u64, 71909969781942u64, - 1515391418612349u64, 470110837888178u64, 1981307309417466u64, 1259888737412276u64, - 669991710228712u64, 1048546834514303u64, 1678323291295512u64, 2172033978088071u64, - 1529278455500556u64, 901984601941894u64, 780867622403807u64, 550105677282793u64, - 975860231176136u64, 525188281689178u64, 49966114807992u64, 1776449263836645u64, - 267851776380338u64, 2225969494054620u64, 2016794225789822u64, 1186108678266608u64, - 1023083271408882u64, 1119289418565906u64, 1248185897348801u64, 1846081539082697u64, - 23756429626075u64, 1441999021105403u64, 724497586552825u64, 1287761623605379u64, - 685303359654224u64, 2217156930690570u64, 163769288918347u64, 1098423278284094u64, - 1391470723006008u64, 570700152353516u64, 744804507262556u64, 2200464788609495u64, - 624141899161992u64, 2249570166275684u64, 378706441983561u64, 122486379999375u64, - 430741162798924u64, 113847463452574u64, 266250457840685u64, 2120743625072743u64, - 222186221043927u64, 1964290018305582u64, 1435278008132477u64, 1670867456663734u64, - 2009989552599079u64, 1348024113448744u64, 1158423886300455u64, 1356467152691569u64, - 306943042363674u64, 926879628664255u64, 1349295689598324u64, 725558330071205u64, - 536569987519948u64, 116436990335366u64, 1551888573800376u64, 2044698345945451u64, - 104279940291311u64, 251526570943220u64, 754735828122925u64, 33448073576361u64, - 994605876754543u64, 546007584022006u64, 2217332798409487u64, 706477052561591u64, - 131174619428653u64, 2148698284087243u64, 239290486205186u64, 2161325796952184u64, - 1713452845607994u64, 1297861562938913u64, 1779539876828514u64, 1926559018603871u64, - 296485747893968u64, 1859208206640686u64, 538513979002718u64, 103998826506137u64, - 2025375396538469u64, 1370680785701206u64, 1698557311253840u64, 1411096399076595u64, - 2132580530813677u64, 2071564345845035u64, 498581428556735u64, 1136010486691371u64, - 1927619356993146u64]; +pub(crate) const precomp_g_pow2_64_table_w4: [u64; 320] = [ + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 13559344787725u64, + 2051621493703448u64, + 1947659315640708u64, + 626856790370168u64, + 1592804284034836u64, + 1781728767459187u64, + 278818420518009u64, + 2038030359908351u64, + 910625973862690u64, + 471887343142239u64, + 1298543306606048u64, + 794147365642417u64, + 129968992326749u64, + 523140861678572u64, + 1166419653909231u64, + 2009637196928390u64, + 1288020222395193u64, + 1007046974985829u64, + 208981102651386u64, + 2074009315253380u64, + 1564056062071967u64, + 276822668750618u64, + 206621292512572u64, + 470304361809269u64, + 895215438398493u64, + 1527859053868686u64, + 1624967223409369u64, + 811821865979736u64, + 350450534838340u64, + 219143807921807u64, + 507994540371254u64, + 986513794574720u64, + 1142661369967121u64, + 621278293399257u64, + 556189161519781u64, + 351964007865066u64, + 2011573453777822u64, + 1367125527151537u64, + 1691316722438196u64, + 731328817345164u64, + 1284781192709232u64, + 478439299539269u64, + 204842178076429u64, + 2085125369913651u64, + 1980773492792985u64, + 1480264409524940u64, + 688389585376233u64, + 612962643526972u64, + 165595382536676u64, + 1850300069212263u64, + 1176357203491551u64, + 1880164984292321u64, + 10786153104736u64, + 1242293560510203u64, + 1358399951884084u64, + 1901358796610357u64, + 1385092558795806u64, + 1734893785311348u64, + 2046201851951191u64, + 1233811309557352u64, + 1531160168656129u64, + 1543287181303358u64, + 516121446374119u64, + 723422668089935u64, + 1228176774959679u64, + 1598014722726267u64, + 1630810326658412u64, + 1343833067463760u64, + 1024397964362099u64, + 1157142161346781u64, + 56422174971792u64, + 544901687297092u64, + 1291559028869009u64, + 1336918672345120u64, + 1390874603281353u64, + 1127199512010904u64, + 992644979940964u64, + 1035213479783573u64, + 36043651196100u64, + 1220961519321221u64, + 1348190007756977u64, + 579420200329088u64, + 1703819961008985u64, + 1993919213460047u64, + 2225080008232251u64, + 392785893702372u64, + 464312521482632u64, + 1224525362116057u64, + 810394248933036u64, + 932513521649107u64, + 592314953488703u64, + 586334603791548u64, + 1310888126096549u64, + 650842674074281u64, + 1596447001791059u64, + 2086767406328284u64, + 1866377645879940u64, + 1721604362642743u64, + 738502322566890u64, + 1851901097729689u64, + 1158347571686914u64, + 2023626733470827u64, + 329625404653699u64, + 563555875598551u64, + 516554588079177u64, + 1134688306104598u64, + 186301198420809u64, + 1339952213563300u64, + 643605614625891u64, + 1947505332718043u64, + 1722071694852824u64, + 601679570440694u64, + 1821275721236351u64, + 1808307842870389u64, + 1654165204015635u64, + 1457334100715245u64, + 217784948678349u64, + 1820622417674817u64, + 1946121178444661u64, + 597980757799332u64, + 1745271227710764u64, + 2010952890941980u64, + 339811849696648u64, + 1066120666993872u64, + 261276166508990u64, + 323098645774553u64, + 207454744271283u64, + 941448672977675u64, + 71890920544375u64, + 840849789313357u64, + 1223996070717926u64, + 196832550853408u64, + 115986818309231u64, + 1586171527267675u64, + 1666169080973450u64, + 1456454731176365u64, + 44467854369003u64, + 2149656190691480u64, + 283446383597589u64, + 2040542647729974u64, + 305705593840224u64, + 475315822269791u64, + 648133452550632u64, + 169218658835720u64, + 24960052338251u64, + 938907951346766u64, + 425970950490510u64, + 1037622011013183u64, + 1026882082708180u64, + 1635699409504916u64, + 1644776942870488u64, + 2151820331175914u64, + 824120674069819u64, + 835744976610113u64, + 1991271032313190u64, + 96507354724855u64, + 400645405133260u64, + 343728076650825u64, + 1151585441385566u64, + 1403339955333520u64, + 230186314139774u64, + 1736248861506714u64, + 1010804378904572u64, + 1394932289845636u64, + 1901351256960852u64, + 2187471430089807u64, + 1003853262342670u64, + 1327743396767461u64, + 1465160415991740u64, + 366625359144534u64, + 1534791405247604u64, + 1790905930250187u64, + 1255484115292738u64, + 2223291365520443u64, + 210967717407408u64, + 26722916813442u64, + 1919574361907910u64, + 468825088280256u64, + 2230011775946070u64, + 1628365642214479u64, + 568871869234932u64, + 1066987968780488u64, + 1692242903745558u64, + 1678903997328589u64, + 214262165888021u64, + 1929686748607204u64, + 1790138967989670u64, + 1790261616022076u64, + 1559824537553112u64, + 1230364591311358u64, + 147531939886346u64, + 1528207085815487u64, + 477957922927292u64, + 285670243881618u64, + 264430080123332u64, + 1163108160028611u64, + 373201522147371u64, + 34903775270979u64, + 1750870048600662u64, + 1319328308741084u64, + 1547548634278984u64, + 1691259592202927u64, + 2247758037259814u64, + 329611399953677u64, + 1385555496268877u64, + 2242438354031066u64, + 1329523854843632u64, + 399895373846055u64, + 678005703193452u64, + 1496357700997771u64, + 71909969781942u64, + 1515391418612349u64, + 470110837888178u64, + 1981307309417466u64, + 1259888737412276u64, + 669991710228712u64, + 1048546834514303u64, + 1678323291295512u64, + 2172033978088071u64, + 1529278455500556u64, + 901984601941894u64, + 780867622403807u64, + 550105677282793u64, + 975860231176136u64, + 525188281689178u64, + 49966114807992u64, + 1776449263836645u64, + 267851776380338u64, + 2225969494054620u64, + 2016794225789822u64, + 1186108678266608u64, + 1023083271408882u64, + 1119289418565906u64, + 1248185897348801u64, + 1846081539082697u64, + 23756429626075u64, + 1441999021105403u64, + 724497586552825u64, + 1287761623605379u64, + 685303359654224u64, + 2217156930690570u64, + 163769288918347u64, + 1098423278284094u64, + 1391470723006008u64, + 570700152353516u64, + 744804507262556u64, + 2200464788609495u64, + 624141899161992u64, + 2249570166275684u64, + 378706441983561u64, + 122486379999375u64, + 430741162798924u64, + 113847463452574u64, + 266250457840685u64, + 2120743625072743u64, + 222186221043927u64, + 1964290018305582u64, + 1435278008132477u64, + 1670867456663734u64, + 2009989552599079u64, + 1348024113448744u64, + 1158423886300455u64, + 1356467152691569u64, + 306943042363674u64, + 926879628664255u64, + 1349295689598324u64, + 725558330071205u64, + 536569987519948u64, + 116436990335366u64, + 1551888573800376u64, + 2044698345945451u64, + 104279940291311u64, + 251526570943220u64, + 754735828122925u64, + 33448073576361u64, + 994605876754543u64, + 546007584022006u64, + 2217332798409487u64, + 706477052561591u64, + 131174619428653u64, + 2148698284087243u64, + 239290486205186u64, + 2161325796952184u64, + 1713452845607994u64, + 1297861562938913u64, + 1779539876828514u64, + 1926559018603871u64, + 296485747893968u64, + 1859208206640686u64, + 538513979002718u64, + 103998826506137u64, + 2025375396538469u64, + 1370680785701206u64, + 1698557311253840u64, + 1411096399076595u64, + 2132580530813677u64, + 2071564345845035u64, + 498581428556735u64, + 1136010486691371u64, + 1927619356993146u64, +]; -pub(crate) const precomp_g_pow2_128_table_w4: [u64; 320] = - [0u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 0u64, - 0u64, 0u64, 0u64, 0u64, 557549315715710u64, 196756086293855u64, 846062225082495u64, - 1865068224838092u64, 991112090754908u64, 522916421512828u64, 2098523346722375u64, - 1135633221747012u64, 858420432114866u64, 186358544306082u64, 1044420411868480u64, - 2080052304349321u64, 557301814716724u64, 1305130257814057u64, 2126012765451197u64, - 1441004402875101u64, 353948968859203u64, 470765987164835u64, 1507675957683570u64, - 1086650358745097u64, 1911913434398388u64, 66086091117182u64, 1137511952425971u64, - 36958263512141u64, 2193310025325256u64, 1085191426269045u64, 1232148267909446u64, - 1449894406170117u64, 1241416717139557u64, 1940876999212868u64, 829758415918121u64, - 309608450373449u64, 2228398547683851u64, 1580623271960188u64, 1675601502456740u64, - 1360363115493548u64, 1098397313096815u64, 1809255384359797u64, 1458261916834384u64, - 210682545649705u64, 1606836641068115u64, 1230478270405318u64, 1843192771547802u64, - 1794596343564051u64, 229060710252162u64, 2169742775467181u64, 701467067318072u64, - 696018499035555u64, 521051885339807u64, 158329567901874u64, 740426481832143u64, - 1369811177301441u64, 503351589084015u64, 1781114827942261u64, 1650493549693035u64, - 2174562418345156u64, 456517194809244u64, 2052761522121179u64, 2233342271123682u64, - 1445872925177435u64, 1131882576902813u64, 220765848055241u64, 1280259961403769u64, - 1581497080160712u64, 1477441080108824u64, 218428165202767u64, 1970598141278907u64, - 643366736173069u64, 2167909426804014u64, 834993711408259u64, 1922437166463212u64, - 1900036281472252u64, 513794844386304u64, 1297904164900114u64, 1147626295373268u64, - 1910101606251299u64, 182933838633381u64, 806229530787362u64, 155511666433200u64, - 290522463375462u64, 534373523491751u64, 1302938814480515u64, 1664979184120445u64, - 304235649499423u64, 339284524318609u64, 1881717946973483u64, 1670802286833842u64, - 2223637120675737u64, 135818919485814u64, 1144856572842792u64, 2234981613434386u64, - 963917024969826u64, 402275378284993u64, 141532417412170u64, 921537468739387u64, - 963905069722607u64, 1405442890733358u64, 1567763927164655u64, 1664776329195930u64, - 2095924165508507u64, 994243110271379u64, 1243925610609353u64, 1029845815569727u64, - 1001968867985629u64, 170368934002484u64, 1100906131583801u64, 1825190326449569u64, - 1462285121182096u64, 1545240767016377u64, 797859025652273u64, 1062758326657530u64, - 1125600735118266u64, 739325756774527u64, 1420144485966996u64, 1915492743426702u64, - 752968196344993u64, 882156396938351u64, 1909097048763227u64, 849058590685611u64, - 840754951388500u64, 1832926948808323u64, 2023317100075297u64, 322382745442827u64, - 1569741341737601u64, 1678986113194987u64, 757598994581938u64, 29678659580705u64, - 1239680935977986u64, 1509239427168474u64, 1055981929287006u64, 1894085471158693u64, - 916486225488490u64, 642168890366120u64, 300453362620010u64, 1858797242721481u64, - 2077989823177130u64, 510228455273334u64, 1473284798689270u64, 5173934574301u64, - 765285232030050u64, 1007154707631065u64, 1862128712885972u64, 168873464821340u64, - 1967853269759318u64, 1489896018263031u64, 592451806166369u64, 1242298565603883u64, - 1838918921339058u64, 697532763910695u64, 294335466239059u64, 135687058387449u64, - 2133734403874176u64, 2121911143127699u64, 20222476737364u64, 1200824626476747u64, - 1397731736540791u64, 702378430231418u64, 59059527640068u64, 460992547183981u64, - 1016125857842765u64, 1273530839608957u64, 96724128829301u64, 1313433042425233u64, - 3543822857227u64, 761975685357118u64, 110417360745248u64, 1079634164577663u64, - 2044574510020457u64, 338709058603120u64, 94541336042799u64, 127963233585039u64, - 94427896272258u64, 1143501979342182u64, 1217958006212230u64, 2153887831492134u64, - 1519219513255575u64, 251793195454181u64, 392517349345200u64, 1507033011868881u64, - 2208494254670752u64, 1364389582694359u64, 2214069430728063u64, 1272814257105752u64, - 741450148906352u64, 1105776675555685u64, 824447222014984u64, 528745219306376u64, - 589427609121575u64, 1501786838809155u64, 379067373073147u64, 184909476589356u64, - 1346887560616185u64, 1932023742314082u64, 1633302311869264u64, 1685314821133069u64, - 1836610282047884u64, 1595571594397150u64, 615441688872198u64, 1926435616702564u64, - 235632180396480u64, 1051918343571810u64, 2150570051687050u64, 879198845408738u64, - 1443966275205464u64, 481362545245088u64, 512807443532642u64, 641147578283480u64, - 1594276116945596u64, 1844812743300602u64, 2044559316019485u64, 202620777969020u64, - 852992984136302u64, 1500869642692910u64, 1085216217052457u64, 1736294372259758u64, - 2009666354486552u64, 1262389020715248u64, 1166527705256867u64, 1409917450806036u64, - 1705819160057637u64, 1116901782584378u64, 1278460472285473u64, 257879811360157u64, - 40314007176886u64, 701309846749639u64, 1380457676672777u64, 631519782380272u64, - 1196339573466793u64, 955537708940017u64, 532725633381530u64, 641190593731833u64, - 7214357153807u64, 481922072107983u64, 1634886189207352u64, 1247659758261633u64, - 1655809614786430u64, 43105797900223u64, 76205809912607u64, 1936575107455823u64, - 1107927314642236u64, 2199986333469333u64, 802974829322510u64, 718173128143482u64, - 539385184235615u64, 2075693785611221u64, 953281147333690u64, 1623571637172587u64, - 655274535022250u64, 1568078078819021u64, 101142125049712u64, 1488441673350881u64, - 1457969561944515u64, 1492622544287712u64, 2041460689280803u64, 1961848091392887u64, - 461003520846938u64, 934728060399807u64, 117723291519705u64, 1027773762863526u64, - 56765304991567u64, 2184028379550479u64, 1768767711894030u64, 1304432068983172u64, - 498080974452325u64, 2134905654858163u64, 1446137427202647u64, 551613831549590u64, - 680288767054205u64, 1278113339140386u64, 378149431842614u64, 80520494426960u64, - 2080985256348782u64, 673432591799820u64, 739189463724560u64, 1847191452197509u64, - 527737312871602u64, 477609358840073u64, 1891633072677946u64, 1841456828278466u64, - 2242502936489002u64, 524791829362709u64, 276648168514036u64, 991706903257619u64, - 512580228297906u64, 1216855104975946u64, 67030930303149u64, 769593945208213u64, - 2048873385103577u64, 455635274123107u64, 2077404927176696u64, 1803539634652306u64, - 1837579953843417u64, 1564240068662828u64, 1964310918970435u64, 832822906252492u64, - 1516044634195010u64, 770571447506889u64, 602215152486818u64, 1760828333136947u64, - 730156776030376u64]; +pub(crate) const precomp_g_pow2_128_table_w4: [u64; 320] = [ + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 557549315715710u64, + 196756086293855u64, + 846062225082495u64, + 1865068224838092u64, + 991112090754908u64, + 522916421512828u64, + 2098523346722375u64, + 1135633221747012u64, + 858420432114866u64, + 186358544306082u64, + 1044420411868480u64, + 2080052304349321u64, + 557301814716724u64, + 1305130257814057u64, + 2126012765451197u64, + 1441004402875101u64, + 353948968859203u64, + 470765987164835u64, + 1507675957683570u64, + 1086650358745097u64, + 1911913434398388u64, + 66086091117182u64, + 1137511952425971u64, + 36958263512141u64, + 2193310025325256u64, + 1085191426269045u64, + 1232148267909446u64, + 1449894406170117u64, + 1241416717139557u64, + 1940876999212868u64, + 829758415918121u64, + 309608450373449u64, + 2228398547683851u64, + 1580623271960188u64, + 1675601502456740u64, + 1360363115493548u64, + 1098397313096815u64, + 1809255384359797u64, + 1458261916834384u64, + 210682545649705u64, + 1606836641068115u64, + 1230478270405318u64, + 1843192771547802u64, + 1794596343564051u64, + 229060710252162u64, + 2169742775467181u64, + 701467067318072u64, + 696018499035555u64, + 521051885339807u64, + 158329567901874u64, + 740426481832143u64, + 1369811177301441u64, + 503351589084015u64, + 1781114827942261u64, + 1650493549693035u64, + 2174562418345156u64, + 456517194809244u64, + 2052761522121179u64, + 2233342271123682u64, + 1445872925177435u64, + 1131882576902813u64, + 220765848055241u64, + 1280259961403769u64, + 1581497080160712u64, + 1477441080108824u64, + 218428165202767u64, + 1970598141278907u64, + 643366736173069u64, + 2167909426804014u64, + 834993711408259u64, + 1922437166463212u64, + 1900036281472252u64, + 513794844386304u64, + 1297904164900114u64, + 1147626295373268u64, + 1910101606251299u64, + 182933838633381u64, + 806229530787362u64, + 155511666433200u64, + 290522463375462u64, + 534373523491751u64, + 1302938814480515u64, + 1664979184120445u64, + 304235649499423u64, + 339284524318609u64, + 1881717946973483u64, + 1670802286833842u64, + 2223637120675737u64, + 135818919485814u64, + 1144856572842792u64, + 2234981613434386u64, + 963917024969826u64, + 402275378284993u64, + 141532417412170u64, + 921537468739387u64, + 963905069722607u64, + 1405442890733358u64, + 1567763927164655u64, + 1664776329195930u64, + 2095924165508507u64, + 994243110271379u64, + 1243925610609353u64, + 1029845815569727u64, + 1001968867985629u64, + 170368934002484u64, + 1100906131583801u64, + 1825190326449569u64, + 1462285121182096u64, + 1545240767016377u64, + 797859025652273u64, + 1062758326657530u64, + 1125600735118266u64, + 739325756774527u64, + 1420144485966996u64, + 1915492743426702u64, + 752968196344993u64, + 882156396938351u64, + 1909097048763227u64, + 849058590685611u64, + 840754951388500u64, + 1832926948808323u64, + 2023317100075297u64, + 322382745442827u64, + 1569741341737601u64, + 1678986113194987u64, + 757598994581938u64, + 29678659580705u64, + 1239680935977986u64, + 1509239427168474u64, + 1055981929287006u64, + 1894085471158693u64, + 916486225488490u64, + 642168890366120u64, + 300453362620010u64, + 1858797242721481u64, + 2077989823177130u64, + 510228455273334u64, + 1473284798689270u64, + 5173934574301u64, + 765285232030050u64, + 1007154707631065u64, + 1862128712885972u64, + 168873464821340u64, + 1967853269759318u64, + 1489896018263031u64, + 592451806166369u64, + 1242298565603883u64, + 1838918921339058u64, + 697532763910695u64, + 294335466239059u64, + 135687058387449u64, + 2133734403874176u64, + 2121911143127699u64, + 20222476737364u64, + 1200824626476747u64, + 1397731736540791u64, + 702378430231418u64, + 59059527640068u64, + 460992547183981u64, + 1016125857842765u64, + 1273530839608957u64, + 96724128829301u64, + 1313433042425233u64, + 3543822857227u64, + 761975685357118u64, + 110417360745248u64, + 1079634164577663u64, + 2044574510020457u64, + 338709058603120u64, + 94541336042799u64, + 127963233585039u64, + 94427896272258u64, + 1143501979342182u64, + 1217958006212230u64, + 2153887831492134u64, + 1519219513255575u64, + 251793195454181u64, + 392517349345200u64, + 1507033011868881u64, + 2208494254670752u64, + 1364389582694359u64, + 2214069430728063u64, + 1272814257105752u64, + 741450148906352u64, + 1105776675555685u64, + 824447222014984u64, + 528745219306376u64, + 589427609121575u64, + 1501786838809155u64, + 379067373073147u64, + 184909476589356u64, + 1346887560616185u64, + 1932023742314082u64, + 1633302311869264u64, + 1685314821133069u64, + 1836610282047884u64, + 1595571594397150u64, + 615441688872198u64, + 1926435616702564u64, + 235632180396480u64, + 1051918343571810u64, + 2150570051687050u64, + 879198845408738u64, + 1443966275205464u64, + 481362545245088u64, + 512807443532642u64, + 641147578283480u64, + 1594276116945596u64, + 1844812743300602u64, + 2044559316019485u64, + 202620777969020u64, + 852992984136302u64, + 1500869642692910u64, + 1085216217052457u64, + 1736294372259758u64, + 2009666354486552u64, + 1262389020715248u64, + 1166527705256867u64, + 1409917450806036u64, + 1705819160057637u64, + 1116901782584378u64, + 1278460472285473u64, + 257879811360157u64, + 40314007176886u64, + 701309846749639u64, + 1380457676672777u64, + 631519782380272u64, + 1196339573466793u64, + 955537708940017u64, + 532725633381530u64, + 641190593731833u64, + 7214357153807u64, + 481922072107983u64, + 1634886189207352u64, + 1247659758261633u64, + 1655809614786430u64, + 43105797900223u64, + 76205809912607u64, + 1936575107455823u64, + 1107927314642236u64, + 2199986333469333u64, + 802974829322510u64, + 718173128143482u64, + 539385184235615u64, + 2075693785611221u64, + 953281147333690u64, + 1623571637172587u64, + 655274535022250u64, + 1568078078819021u64, + 101142125049712u64, + 1488441673350881u64, + 1457969561944515u64, + 1492622544287712u64, + 2041460689280803u64, + 1961848091392887u64, + 461003520846938u64, + 934728060399807u64, + 117723291519705u64, + 1027773762863526u64, + 56765304991567u64, + 2184028379550479u64, + 1768767711894030u64, + 1304432068983172u64, + 498080974452325u64, + 2134905654858163u64, + 1446137427202647u64, + 551613831549590u64, + 680288767054205u64, + 1278113339140386u64, + 378149431842614u64, + 80520494426960u64, + 2080985256348782u64, + 673432591799820u64, + 739189463724560u64, + 1847191452197509u64, + 527737312871602u64, + 477609358840073u64, + 1891633072677946u64, + 1841456828278466u64, + 2242502936489002u64, + 524791829362709u64, + 276648168514036u64, + 991706903257619u64, + 512580228297906u64, + 1216855104975946u64, + 67030930303149u64, + 769593945208213u64, + 2048873385103577u64, + 455635274123107u64, + 2077404927176696u64, + 1803539634652306u64, + 1837579953843417u64, + 1564240068662828u64, + 1964310918970435u64, + 832822906252492u64, + 1516044634195010u64, + 770571447506889u64, + 602215152486818u64, + 1760828333136947u64, + 730156776030376u64, +]; -pub(crate) const precomp_g_pow2_192_table_w4: [u64; 320] = - [0u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 0u64, - 0u64, 0u64, 0u64, 0u64, 1129953239743101u64, 1240339163956160u64, 61002583352401u64, - 2017604552196030u64, 1576867829229863u64, 1508654942849389u64, 270111619664077u64, - 1253097517254054u64, 721798270973250u64, 161923365415298u64, 828530877526011u64, - 1494851059386763u64, 662034171193976u64, 1315349646974670u64, 2199229517308806u64, - 497078277852673u64, 1310507715989956u64, 1881315714002105u64, 2214039404983803u64, - 1331036420272667u64, 296286697520787u64, 1179367922639127u64, 25348441419697u64, - 2200984961703188u64, 150893128908291u64, 1978614888570852u64, 1539657347172046u64, - 553810196523619u64, 246017573977646u64, 1440448985385485u64, 346049108099981u64, - 601166606218546u64, 855822004151713u64, 1957521326383188u64, 1114240380430887u64, - 1349639675122048u64, 957375954499040u64, 111551795360136u64, 618586733648988u64, - 490708840688866u64, 1267002049697314u64, 1130723224930028u64, 215603029480828u64, - 1277138555414710u64, 1556750324971322u64, 1407903521793741u64, 1836836546590749u64, - 576500297444199u64, 2074707599091135u64, 1826239864380012u64, 1935365705983312u64, - 239501825683682u64, 1594236669034980u64, 1283078975055301u64, 856745636255925u64, - 1342128647959981u64, 945216428379689u64, 938746202496410u64, 105775123333919u64, - 1379852610117266u64, 1770216827500275u64, 1016017267535704u64, 1902885522469532u64, - 994184703730489u64, 2227487538793763u64, 53155967096055u64, 1264120808114350u64, - 1334928769376729u64, 393911808079997u64, 826229239481845u64, 1827903006733192u64, - 1449283706008465u64, 1258040415217849u64, 1641484112868370u64, 1140150841968176u64, - 391113338021313u64, 162138667815833u64, 742204396566060u64, 110709233440557u64, - 90179377432917u64, 530511949644489u64, 911568635552279u64, 135869304780166u64, - 617719999563692u64, 1802525001631319u64, 1836394639510490u64, 1862739456475085u64, - 1378284444664288u64, 1617882529391756u64, 876124429891172u64, 1147654641445091u64, - 1476943370400542u64, 688601222759067u64, 2120281968990205u64, 1387113236912611u64, - 2125245820685788u64, 1030674016350092u64, 1594684598654247u64, 1165939511879820u64, - 271499323244173u64, 546587254515484u64, 945603425742936u64, 1242252568170226u64, - 561598728058142u64, 604827091794712u64, 19869753585186u64, 565367744708915u64, - 536755754533603u64, 1767258313589487u64, 907952975936127u64, 292851652613937u64, - 163573546237963u64, 837601408384564u64, 591996990118301u64, 2126051747693057u64, - 182247548824566u64, 908369044122868u64, 1335442699947273u64, 2234292296528612u64, - 689537529333034u64, 2174778663790714u64, 1011407643592667u64, 1856130618715473u64, - 1557437221651741u64, 2250285407006102u64, 1412384213410827u64, 1428042038612456u64, - 962709733973660u64, 313995703125919u64, 1844969155869325u64, 787716782673657u64, - 622504542173478u64, 930119043384654u64, 2128870043952488u64, 537781531479523u64, - 1556666269904940u64, 417333635741346u64, 1986743846438415u64, 877620478041197u64, - 2205624582983829u64, 595260668884488u64, 2025159350373157u64, 2091659716088235u64, - 1423634716596391u64, 653686638634080u64, 1972388399989956u64, 795575741798014u64, - 889240107997846u64, 1446156876910732u64, 1028507012221776u64, 1071697574586478u64, - 1689630411899691u64, 604092816502174u64, 1909917373896122u64, 1602544877643837u64, - 1227177032923867u64, 62684197535630u64, 186146290753883u64, 414449055316766u64, - 1560555880866750u64, 157579947096755u64, 230526795502384u64, 1197673369665894u64, - 593779215869037u64, 214638834474097u64, 1796344443484478u64, 493550548257317u64, - 1628442824033694u64, 1410811655893495u64, 1009361960995171u64, 604736219740352u64, - 392445928555351u64, 1254295770295706u64, 1958074535046128u64, 508699942241019u64, - 739405911261325u64, 1678760393882409u64, 517763708545996u64, 640040257898722u64, - 384966810872913u64, 407454748380128u64, 152604679407451u64, 185102854927662u64, - 1448175503649595u64, 100328519208674u64, 1153263667012830u64, 1643926437586490u64, - 609632142834154u64, 980984004749261u64, 855290732258779u64, 2186022163021506u64, - 1254052618626070u64, 1850030517182611u64, 162348933090207u64, 1948712273679932u64, - 1331832516262191u64, 1219400369175863u64, 89689036937483u64, 1554886057235815u64, - 1520047528432789u64, 81263957652811u64, 146612464257008u64, 2207945627164163u64, - 919846660682546u64, 1925694087906686u64, 2102027292388012u64, 887992003198635u64, - 1817924871537027u64, 746660005584342u64, 753757153275525u64, 91394270908699u64, - 511837226544151u64, 736341543649373u64, 1256371121466367u64, 1977778299551813u64, - 817915174462263u64, 1602323381418035u64, 190035164572930u64, 603796401391181u64, - 2152666873671669u64, 1813900316324112u64, 1292622433358041u64, 888439870199892u64, - 978918155071994u64, 534184417909805u64, 466460084317313u64, 1275223140288685u64, - 786407043883517u64, 1620520623925754u64, 1753625021290269u64, 751937175104525u64, - 905301961820613u64, 697059847245437u64, 584919033981144u64, 1272165506533156u64, - 1532180021450866u64, 1901407354005301u64, 1421319720492586u64, 2179081609765456u64, - 2193253156667632u64, 1080248329608584u64, 2158422436462066u64, 759167597017850u64, - 545759071151285u64, 641600428493698u64, 943791424499848u64, 469571542427864u64, - 951117845222467u64, 1780538594373407u64, 614611122040309u64, 1354826131886963u64, - 221898131992340u64, 1145699723916219u64, 798735379961769u64, 1843560518208287u64, - 1424523160161545u64, 205549016574779u64, 2239491587362749u64, 1918363582399888u64, - 1292183072788455u64, 1783513123192567u64, 1584027954317205u64, 1890421443925740u64, - 1718459319874929u64, 1522091040748809u64, 399467600667219u64, 1870973059066576u64, - 287514433150348u64, 1397845311152885u64, 1880440629872863u64, 709302939340341u64, - 1813571361109209u64, 86598795876860u64, 1146964554310612u64, 1590956584862432u64, - 2097004628155559u64, 656227622102390u64, 1808500445541891u64, 958336726523135u64, - 2007604569465975u64, 313504950390997u64, 1399686004953620u64, 1759732788465234u64, - 1562539721055836u64, 1575722765016293u64, 793318366641259u64, 443876859384887u64, - 547308921989704u64, 636698687503328u64, 2179175835287340u64, 498333551718258u64, - 932248760026176u64, 1612395686304653u64, 2179774103745626u64, 1359658123541018u64, - 171488501802442u64, 1625034951791350u64, 520196922773633u64, 1873787546341877u64, - 303457823885368u64]; +pub(crate) const precomp_g_pow2_192_table_w4: [u64; 320] = [ + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1129953239743101u64, + 1240339163956160u64, + 61002583352401u64, + 2017604552196030u64, + 1576867829229863u64, + 1508654942849389u64, + 270111619664077u64, + 1253097517254054u64, + 721798270973250u64, + 161923365415298u64, + 828530877526011u64, + 1494851059386763u64, + 662034171193976u64, + 1315349646974670u64, + 2199229517308806u64, + 497078277852673u64, + 1310507715989956u64, + 1881315714002105u64, + 2214039404983803u64, + 1331036420272667u64, + 296286697520787u64, + 1179367922639127u64, + 25348441419697u64, + 2200984961703188u64, + 150893128908291u64, + 1978614888570852u64, + 1539657347172046u64, + 553810196523619u64, + 246017573977646u64, + 1440448985385485u64, + 346049108099981u64, + 601166606218546u64, + 855822004151713u64, + 1957521326383188u64, + 1114240380430887u64, + 1349639675122048u64, + 957375954499040u64, + 111551795360136u64, + 618586733648988u64, + 490708840688866u64, + 1267002049697314u64, + 1130723224930028u64, + 215603029480828u64, + 1277138555414710u64, + 1556750324971322u64, + 1407903521793741u64, + 1836836546590749u64, + 576500297444199u64, + 2074707599091135u64, + 1826239864380012u64, + 1935365705983312u64, + 239501825683682u64, + 1594236669034980u64, + 1283078975055301u64, + 856745636255925u64, + 1342128647959981u64, + 945216428379689u64, + 938746202496410u64, + 105775123333919u64, + 1379852610117266u64, + 1770216827500275u64, + 1016017267535704u64, + 1902885522469532u64, + 994184703730489u64, + 2227487538793763u64, + 53155967096055u64, + 1264120808114350u64, + 1334928769376729u64, + 393911808079997u64, + 826229239481845u64, + 1827903006733192u64, + 1449283706008465u64, + 1258040415217849u64, + 1641484112868370u64, + 1140150841968176u64, + 391113338021313u64, + 162138667815833u64, + 742204396566060u64, + 110709233440557u64, + 90179377432917u64, + 530511949644489u64, + 911568635552279u64, + 135869304780166u64, + 617719999563692u64, + 1802525001631319u64, + 1836394639510490u64, + 1862739456475085u64, + 1378284444664288u64, + 1617882529391756u64, + 876124429891172u64, + 1147654641445091u64, + 1476943370400542u64, + 688601222759067u64, + 2120281968990205u64, + 1387113236912611u64, + 2125245820685788u64, + 1030674016350092u64, + 1594684598654247u64, + 1165939511879820u64, + 271499323244173u64, + 546587254515484u64, + 945603425742936u64, + 1242252568170226u64, + 561598728058142u64, + 604827091794712u64, + 19869753585186u64, + 565367744708915u64, + 536755754533603u64, + 1767258313589487u64, + 907952975936127u64, + 292851652613937u64, + 163573546237963u64, + 837601408384564u64, + 591996990118301u64, + 2126051747693057u64, + 182247548824566u64, + 908369044122868u64, + 1335442699947273u64, + 2234292296528612u64, + 689537529333034u64, + 2174778663790714u64, + 1011407643592667u64, + 1856130618715473u64, + 1557437221651741u64, + 2250285407006102u64, + 1412384213410827u64, + 1428042038612456u64, + 962709733973660u64, + 313995703125919u64, + 1844969155869325u64, + 787716782673657u64, + 622504542173478u64, + 930119043384654u64, + 2128870043952488u64, + 537781531479523u64, + 1556666269904940u64, + 417333635741346u64, + 1986743846438415u64, + 877620478041197u64, + 2205624582983829u64, + 595260668884488u64, + 2025159350373157u64, + 2091659716088235u64, + 1423634716596391u64, + 653686638634080u64, + 1972388399989956u64, + 795575741798014u64, + 889240107997846u64, + 1446156876910732u64, + 1028507012221776u64, + 1071697574586478u64, + 1689630411899691u64, + 604092816502174u64, + 1909917373896122u64, + 1602544877643837u64, + 1227177032923867u64, + 62684197535630u64, + 186146290753883u64, + 414449055316766u64, + 1560555880866750u64, + 157579947096755u64, + 230526795502384u64, + 1197673369665894u64, + 593779215869037u64, + 214638834474097u64, + 1796344443484478u64, + 493550548257317u64, + 1628442824033694u64, + 1410811655893495u64, + 1009361960995171u64, + 604736219740352u64, + 392445928555351u64, + 1254295770295706u64, + 1958074535046128u64, + 508699942241019u64, + 739405911261325u64, + 1678760393882409u64, + 517763708545996u64, + 640040257898722u64, + 384966810872913u64, + 407454748380128u64, + 152604679407451u64, + 185102854927662u64, + 1448175503649595u64, + 100328519208674u64, + 1153263667012830u64, + 1643926437586490u64, + 609632142834154u64, + 980984004749261u64, + 855290732258779u64, + 2186022163021506u64, + 1254052618626070u64, + 1850030517182611u64, + 162348933090207u64, + 1948712273679932u64, + 1331832516262191u64, + 1219400369175863u64, + 89689036937483u64, + 1554886057235815u64, + 1520047528432789u64, + 81263957652811u64, + 146612464257008u64, + 2207945627164163u64, + 919846660682546u64, + 1925694087906686u64, + 2102027292388012u64, + 887992003198635u64, + 1817924871537027u64, + 746660005584342u64, + 753757153275525u64, + 91394270908699u64, + 511837226544151u64, + 736341543649373u64, + 1256371121466367u64, + 1977778299551813u64, + 817915174462263u64, + 1602323381418035u64, + 190035164572930u64, + 603796401391181u64, + 2152666873671669u64, + 1813900316324112u64, + 1292622433358041u64, + 888439870199892u64, + 978918155071994u64, + 534184417909805u64, + 466460084317313u64, + 1275223140288685u64, + 786407043883517u64, + 1620520623925754u64, + 1753625021290269u64, + 751937175104525u64, + 905301961820613u64, + 697059847245437u64, + 584919033981144u64, + 1272165506533156u64, + 1532180021450866u64, + 1901407354005301u64, + 1421319720492586u64, + 2179081609765456u64, + 2193253156667632u64, + 1080248329608584u64, + 2158422436462066u64, + 759167597017850u64, + 545759071151285u64, + 641600428493698u64, + 943791424499848u64, + 469571542427864u64, + 951117845222467u64, + 1780538594373407u64, + 614611122040309u64, + 1354826131886963u64, + 221898131992340u64, + 1145699723916219u64, + 798735379961769u64, + 1843560518208287u64, + 1424523160161545u64, + 205549016574779u64, + 2239491587362749u64, + 1918363582399888u64, + 1292183072788455u64, + 1783513123192567u64, + 1584027954317205u64, + 1890421443925740u64, + 1718459319874929u64, + 1522091040748809u64, + 399467600667219u64, + 1870973059066576u64, + 287514433150348u64, + 1397845311152885u64, + 1880440629872863u64, + 709302939340341u64, + 1813571361109209u64, + 86598795876860u64, + 1146964554310612u64, + 1590956584862432u64, + 2097004628155559u64, + 656227622102390u64, + 1808500445541891u64, + 958336726523135u64, + 2007604569465975u64, + 313504950390997u64, + 1399686004953620u64, + 1759732788465234u64, + 1562539721055836u64, + 1575722765016293u64, + 793318366641259u64, + 443876859384887u64, + 547308921989704u64, + 636698687503328u64, + 2179175835287340u64, + 498333551718258u64, + 932248760026176u64, + 1612395686304653u64, + 2179774103745626u64, + 1359658123541018u64, + 171488501802442u64, + 1625034951791350u64, + 520196922773633u64, + 1873787546341877u64, + 303457823885368u64, +]; -pub(crate) const precomp_basepoint_table_w5: [u64; 640] = - [0u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 1u64, 0u64, 0u64, 0u64, 0u64, 0u64, - 0u64, 0u64, 0u64, 0u64, 1738742601995546u64, 1146398526822698u64, 2070867633025821u64, - 562264141797630u64, 587772402128613u64, 1801439850948184u64, 1351079888211148u64, - 450359962737049u64, 900719925474099u64, 1801439850948198u64, 1u64, 0u64, 0u64, 0u64, 0u64, - 1841354044333475u64, 16398895984059u64, 755974180946558u64, 900171276175154u64, - 1821297809914039u64, 1661154287933054u64, 284530020860578u64, 1390261174866914u64, - 1524110943907984u64, 1045603498418422u64, 928651508580478u64, 1383326941296346u64, - 961937908925785u64, 80455759693706u64, 904734540352947u64, 1507481815385608u64, - 2223447444246085u64, 1083941587175919u64, 2059929906842505u64, 1581435440146976u64, - 782730187692425u64, 9928394897574u64, 1539449519985236u64, 1923587931078510u64, - 552919286076056u64, 376925408065760u64, 447320488831784u64, 1362918338468019u64, - 1470031896696846u64, 2189796996539902u64, 1337552949959847u64, 1762287177775726u64, - 237994495816815u64, 1277840395970544u64, 543972849007241u64, 1224692671618814u64, - 162359533289271u64, 282240927125249u64, 586909166382289u64, 17726488197838u64, - 377014554985659u64, 1433835303052512u64, 702061469493692u64, 1142253108318154u64, - 318297794307551u64, 954362646308543u64, 517363881452320u64, 1868013482130416u64, - 262562472373260u64, 902232853249919u64, 2107343057055746u64, 462368348619024u64, - 1893758677092974u64, 2177729767846389u64, 2168532543559143u64, 443867094639821u64, - 730169342581022u64, 1564589016879755u64, 51218195700649u64, 76684578423745u64, - 560266272480743u64, 922517457707697u64, 2066645939860874u64, 1318277348414638u64, - 1576726809084003u64, 1817337608563665u64, 1874240939237666u64, 754733726333910u64, - 97085310406474u64, 751148364309235u64, 1622159695715187u64, 1444098819684916u64, - 130920805558089u64, 1260449179085308u64, 1860021740768461u64, 110052860348509u64, - 193830891643810u64, 164148413933881u64, 180017794795332u64, 1523506525254651u64, - 465981629225956u64, 559733514964572u64, 1279624874416974u64, 2026642326892306u64, - 1425156829982409u64, 2160936383793147u64, 1061870624975247u64, 2023497043036941u64, - 117942212883190u64, 490339622800774u64, 1729931303146295u64, 422305932971074u64, - 529103152793096u64, 1211973233775992u64, 721364955929681u64, 1497674430438813u64, - 342545521275073u64, 2102107575279372u64, 2108462244669966u64, 1382582406064082u64, - 2206396818383323u64, 2109093268641147u64, 10809845110983u64, 1605176920880099u64, - 744640650753946u64, 1712758897518129u64, 373410811281809u64, 648838265800209u64, - 813058095530999u64, 513987632620169u64, 465516160703329u64, 2136322186126330u64, - 1979645899422932u64, 1197131006470786u64, 1467836664863979u64, 1340751381374628u64, - 1810066212667962u64, 1009933588225499u64, 1106129188080873u64, 1388980405213901u64, - 533719246598044u64, 1169435803073277u64, 198920999285821u64, 487492330629854u64, - 1807093008537778u64, 1540899012923865u64, 2075080271659867u64, 1527990806921523u64, - 1323728742908002u64, 1568595959608205u64, 1388032187497212u64, 2026968840050568u64, - 1396591153295755u64, 820416950170901u64, 520060313205582u64, 2016404325094901u64, - 1584709677868520u64, 272161374469956u64, 1567188603996816u64, 1986160530078221u64, - 553930264324589u64, 1058426729027503u64, 8762762886675u64, 2216098143382988u64, - 1835145266889223u64, 1712936431558441u64, 1017009937844974u64, 585361667812740u64, - 2114711541628181u64, 2238729632971439u64, 121257546253072u64, 847154149018345u64, - 211972965476684u64, 287499084460129u64, 2098247259180197u64, 839070411583329u64, - 339551619574372u64, 1432951287640743u64, 526481249498942u64, 931991661905195u64, - 1884279965674487u64, 200486405604411u64, 364173020594788u64, 518034455936955u64, - 1085564703965501u64, 16030410467927u64, 604865933167613u64, 1695298441093964u64, - 498856548116159u64, 2193030062787034u64, 1706339802964179u64, 1721199073493888u64, - 820740951039755u64, 1216053436896834u64, 23954895815139u64, 1662515208920491u64, - 1705443427511899u64, 1957928899570365u64, 1189636258255725u64, 1795695471103809u64, - 1691191297654118u64, 282402585374360u64, 460405330264832u64, 63765529445733u64, - 469763447404473u64, 733607089694996u64, 685410420186959u64, 1096682630419738u64, - 1162548510542362u64, 1020949526456676u64, 1211660396870573u64, 613126398222696u64, - 1117829165843251u64, 742432540886650u64, 1483755088010658u64, 942392007134474u64, - 1447834130944107u64, 489368274863410u64, 23192985544898u64, 648442406146160u64, - 785438843373876u64, 249464684645238u64, 170494608205618u64, 335112827260550u64, - 1462050123162735u64, 1084803668439016u64, 853459233600325u64, 215777728187495u64, - 1965759433526974u64, 1349482894446537u64, 694163317612871u64, 860536766165036u64, - 1178788094084321u64, 1652739626626996u64, 2115723946388185u64, 1577204379094664u64, - 1083882859023240u64, 1768759143381635u64, 1737180992507258u64, 246054513922239u64, - 577253134087234u64, 356340280578042u64, 1638917769925142u64, 223550348130103u64, - 470592666638765u64, 22663573966996u64, 596552461152400u64, 364143537069499u64, - 3942119457699u64, 107951982889287u64, 1843471406713209u64, 1625773041610986u64, - 1466141092501702u64, 1043024095021271u64, 310429964047508u64, 98559121500372u64, - 152746933782868u64, 259407205078261u64, 828123093322585u64, 1576847274280091u64, - 1170871375757302u64, 1588856194642775u64, 984767822341977u64, 1141497997993760u64, - 809325345150796u64, 1879837728202511u64, 201340910657893u64, 1079157558888483u64, - 1052373448588065u64, 1732036202501778u64, 2105292670328445u64, 679751387312402u64, - 1679682144926229u64, 1695823455818780u64, 498852317075849u64, 1786555067788433u64, - 1670727545779425u64, 117945875433544u64, 407939139781844u64, 854632120023778u64, - 1413383148360437u64, 286030901733673u64, 1207361858071196u64, 461340408181417u64, - 1096919590360164u64, 1837594897475685u64, 533755561544165u64, 1638688042247712u64, - 1431653684793005u64, 1036458538873559u64, 390822120341779u64, 1920929837111618u64, - 543426740024168u64, 645751357799929u64, 2245025632994463u64, 1550778638076452u64, - 223738153459949u64, 1337209385492033u64, 1276967236456531u64, 1463815821063071u64, - 2070620870191473u64, 1199170709413753u64, 273230877394166u64, 1873264887608046u64, - 890877152910775u64, 983226445635730u64, 44873798519521u64, 697147127512130u64, - 961631038239304u64, 709966160696826u64, 1706677689540366u64, 502782733796035u64, - 812545535346033u64, 1693622521296452u64, 1955813093002510u64, 1259937612881362u64, - 1873032503803559u64, 1140330566016428u64, 1675726082440190u64, 60029928909786u64, - 170335608866763u64, 766444312315022u64, 2025049511434113u64, 2200845622430647u64, - 1201269851450408u64, 590071752404907u64, 1400995030286946u64, 2152637413853822u64, - 2108495473841983u64, 3855406710349u64, 1726137673168580u64, 51004317200100u64, - 1749082328586939u64, 1704088976144558u64, 1977318954775118u64, 2062602253162400u64, - 948062503217479u64, 361953965048030u64, 1528264887238440u64, 62582552172290u64, - 2241602163389280u64, 156385388121765u64, 2124100319761492u64, 388928050571382u64, - 1556123596922727u64, 979310669812384u64, 113043855206104u64, 2023223924825469u64, - 643651703263034u64, 2234446903655540u64, 1577241261424997u64, 860253174523845u64, - 1691026473082448u64, 1091672764933872u64, 1957463109756365u64, 530699502660193u64, - 349587141723569u64, 674661681919563u64, 1633727303856240u64, 708909037922144u64, - 2160722508518119u64, 1302188051602540u64, 976114603845777u64, 120004758721939u64, - 1681630708873780u64, 622274095069244u64, 1822346309016698u64, 1100921177951904u64, - 2216952659181677u64, 1844020550362490u64, 1976451368365774u64, 1321101422068822u64, - 1189859436282668u64, 2008801879735257u64, 2219413454333565u64, 424288774231098u64, - 359793146977912u64, 270293357948703u64, 587226003677000u64, 1482071926139945u64, - 1419630774650359u64, 1104739070570175u64, 1662129023224130u64, 1609203612533411u64, - 1250932720691980u64, 95215711818495u64, 498746909028150u64, 158151296991874u64, - 1201379988527734u64, 561599945143989u64, 2211577425617888u64, 2166577612206324u64, - 1057590354233512u64, 1968123280416769u64, 1316586165401313u64, 762728164447634u64, - 2045395244316047u64, 1531796898725716u64, 315385971670425u64, 1109421039396756u64, - 2183635256408562u64, 1896751252659461u64, 840236037179080u64, 796245792277211u64, - 508345890111193u64, 1275386465287222u64, 513560822858784u64, 1784735733120313u64, - 1346467478899695u64, 601125231208417u64, 701076661112726u64, 1841998436455089u64, - 1156768600940434u64, 1967853462343221u64, 2178318463061452u64, 481885520752741u64, - 675262828640945u64, 1033539418596582u64, 1743329872635846u64, 159322641251283u64, - 1573076470127113u64, 954827619308195u64, 778834750662635u64, 619912782122617u64, - 515681498488209u64, 1675866144246843u64, 811716020969981u64, 1125515272217398u64, - 1398917918287342u64, 1301680949183175u64, 726474739583734u64, 587246193475200u64, - 1096581582611864u64, 1469911826213486u64, 1990099711206364u64, 1256496099816508u64, - 2019924615195672u64, 1251232456707555u64, 2042971196009755u64, 214061878479265u64, - 115385726395472u64, 1677875239524132u64, 756888883383540u64, 1153862117756233u64, - 503391530851096u64, 946070017477513u64, 1878319040542579u64, 1101349418586920u64, - 793245696431613u64, 397920495357645u64, 2174023872951112u64, 1517867915189593u64, - 1829855041462995u64, 1046709983503619u64, 424081940711857u64, 2112438073094647u64, - 1504338467349861u64, 2244574127374532u64, 2136937537441911u64, 1741150838990304u64, - 25894628400571u64, 512213526781178u64, 1168384260796379u64, 1424607682379833u64, - 938677789731564u64, 872882241891896u64, 1713199397007700u64, 1410496326218359u64, - 854379752407031u64, 465141611727634u64, 315176937037857u64, 1020115054571233u64, - 1856290111077229u64, 2028366269898204u64, 1432980880307543u64, 469932710425448u64, - 581165267592247u64, 496399148156603u64, 2063435226705903u64, 2116841086237705u64, - 498272567217048u64, 1829438076967906u64, 1573925801278491u64, 460763576329867u64, - 1705264723728225u64, 999514866082412u64, 29635061779362u64, 1884233592281020u64, - 1449755591461338u64, 42579292783222u64, 1869504355369200u64, 495506004805251u64, - 264073104888427u64, 2088880861028612u64, 104646456386576u64, 1258445191399967u64, - 1348736801545799u64, 2068276361286613u64, 884897216646374u64, 922387476801376u64, - 1043886580402805u64, 1240883498470831u64, 1601554651937110u64, 804382935289482u64, - 512379564477239u64, 1466384519077032u64, 1280698500238386u64, 211303836685749u64, - 2081725624793803u64, 545247644516879u64, 215313359330384u64, 286479751145614u64, - 2213650281751636u64, 2164927945999874u64, 2072162991540882u64, 1443769115444779u64, - 1581473274363095u64, 434633875922699u64, 340456055781599u64, 373043091080189u64, - 839476566531776u64, 1856706858509978u64, 931616224909153u64, 1888181317414065u64, - 213654322650262u64, 1161078103416244u64, 1822042328851513u64, 915817709028812u64, - 1828297056698188u64, 1212017130909403u64, 60258343247333u64, 342085800008230u64, - 930240559508270u64, 1549884999174952u64, 809895264249462u64, 184726257947682u64, - 1157065433504828u64, 1209999630381477u64, 999920399374391u64, 1714770150788163u64, - 2026130985413228u64, 506776632883140u64, 1349042668246528u64, 1937232292976967u64, - 942302637530730u64, 160211904766226u64, 1042724500438571u64, 212454865139142u64, - 244104425172642u64, 1376990622387496u64, 76126752421227u64, 1027540886376422u64, - 1912210655133026u64, 13410411589575u64, 1475856708587773u64, 615563352691682u64, - 1446629324872644u64, 1683670301784014u64, 1049873327197127u64, 1826401704084838u64, - 2032577048760775u64, 1922203607878853u64, 836708788764806u64, 2193084654695012u64, - 1342923183256659u64, 849356986294271u64, 1228863973965618u64, 94886161081867u64, - 1423288430204892u64, 2016167528707016u64, 1633187660972877u64, 1550621242301752u64, - 340630244512994u64, 2103577710806901u64, 221625016538931u64, 421544147350960u64, - 580428704555156u64, 1479831381265617u64, 518057926544698u64, 955027348790630u64, - 1326749172561598u64, 1118304625755967u64, 1994005916095176u64, 1799757332780663u64, - 751343129396941u64, 1468672898746144u64, 1451689964451386u64, 755070293921171u64, - 904857405877052u64, 1276087530766984u64, 403986562858511u64, 1530661255035337u64, - 1644972908910502u64, 1370170080438957u64, 139839536695744u64, 909930462436512u64, - 1899999215356933u64, 635992381064566u64, 788740975837654u64, 224241231493695u64, - 1267090030199302u64, 998908061660139u64, 1784537499699278u64, 859195370018706u64, - 1953966091439379u64, 2189271820076010u64, 2039067059943978u64, 1526694380855202u64, - 2040321513194941u64, 329922071218689u64, 1953032256401326u64, 989631424403521u64, - 328825014934242u64, 9407151397696u64, 63551373671268u64, 1624728632895792u64, - 1608324920739262u64, 1178239350351945u64, 1198077399579702u64, 277620088676229u64, - 1775359437312528u64, 1653558177737477u64, 1652066043408850u64, 1063359889686622u64, - 1975063804860653u64]; +pub(crate) const precomp_basepoint_table_w5: [u64; 640] = [ + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1738742601995546u64, + 1146398526822698u64, + 2070867633025821u64, + 562264141797630u64, + 587772402128613u64, + 1801439850948184u64, + 1351079888211148u64, + 450359962737049u64, + 900719925474099u64, + 1801439850948198u64, + 1u64, + 0u64, + 0u64, + 0u64, + 0u64, + 1841354044333475u64, + 16398895984059u64, + 755974180946558u64, + 900171276175154u64, + 1821297809914039u64, + 1661154287933054u64, + 284530020860578u64, + 1390261174866914u64, + 1524110943907984u64, + 1045603498418422u64, + 928651508580478u64, + 1383326941296346u64, + 961937908925785u64, + 80455759693706u64, + 904734540352947u64, + 1507481815385608u64, + 2223447444246085u64, + 1083941587175919u64, + 2059929906842505u64, + 1581435440146976u64, + 782730187692425u64, + 9928394897574u64, + 1539449519985236u64, + 1923587931078510u64, + 552919286076056u64, + 376925408065760u64, + 447320488831784u64, + 1362918338468019u64, + 1470031896696846u64, + 2189796996539902u64, + 1337552949959847u64, + 1762287177775726u64, + 237994495816815u64, + 1277840395970544u64, + 543972849007241u64, + 1224692671618814u64, + 162359533289271u64, + 282240927125249u64, + 586909166382289u64, + 17726488197838u64, + 377014554985659u64, + 1433835303052512u64, + 702061469493692u64, + 1142253108318154u64, + 318297794307551u64, + 954362646308543u64, + 517363881452320u64, + 1868013482130416u64, + 262562472373260u64, + 902232853249919u64, + 2107343057055746u64, + 462368348619024u64, + 1893758677092974u64, + 2177729767846389u64, + 2168532543559143u64, + 443867094639821u64, + 730169342581022u64, + 1564589016879755u64, + 51218195700649u64, + 76684578423745u64, + 560266272480743u64, + 922517457707697u64, + 2066645939860874u64, + 1318277348414638u64, + 1576726809084003u64, + 1817337608563665u64, + 1874240939237666u64, + 754733726333910u64, + 97085310406474u64, + 751148364309235u64, + 1622159695715187u64, + 1444098819684916u64, + 130920805558089u64, + 1260449179085308u64, + 1860021740768461u64, + 110052860348509u64, + 193830891643810u64, + 164148413933881u64, + 180017794795332u64, + 1523506525254651u64, + 465981629225956u64, + 559733514964572u64, + 1279624874416974u64, + 2026642326892306u64, + 1425156829982409u64, + 2160936383793147u64, + 1061870624975247u64, + 2023497043036941u64, + 117942212883190u64, + 490339622800774u64, + 1729931303146295u64, + 422305932971074u64, + 529103152793096u64, + 1211973233775992u64, + 721364955929681u64, + 1497674430438813u64, + 342545521275073u64, + 2102107575279372u64, + 2108462244669966u64, + 1382582406064082u64, + 2206396818383323u64, + 2109093268641147u64, + 10809845110983u64, + 1605176920880099u64, + 744640650753946u64, + 1712758897518129u64, + 373410811281809u64, + 648838265800209u64, + 813058095530999u64, + 513987632620169u64, + 465516160703329u64, + 2136322186126330u64, + 1979645899422932u64, + 1197131006470786u64, + 1467836664863979u64, + 1340751381374628u64, + 1810066212667962u64, + 1009933588225499u64, + 1106129188080873u64, + 1388980405213901u64, + 533719246598044u64, + 1169435803073277u64, + 198920999285821u64, + 487492330629854u64, + 1807093008537778u64, + 1540899012923865u64, + 2075080271659867u64, + 1527990806921523u64, + 1323728742908002u64, + 1568595959608205u64, + 1388032187497212u64, + 2026968840050568u64, + 1396591153295755u64, + 820416950170901u64, + 520060313205582u64, + 2016404325094901u64, + 1584709677868520u64, + 272161374469956u64, + 1567188603996816u64, + 1986160530078221u64, + 553930264324589u64, + 1058426729027503u64, + 8762762886675u64, + 2216098143382988u64, + 1835145266889223u64, + 1712936431558441u64, + 1017009937844974u64, + 585361667812740u64, + 2114711541628181u64, + 2238729632971439u64, + 121257546253072u64, + 847154149018345u64, + 211972965476684u64, + 287499084460129u64, + 2098247259180197u64, + 839070411583329u64, + 339551619574372u64, + 1432951287640743u64, + 526481249498942u64, + 931991661905195u64, + 1884279965674487u64, + 200486405604411u64, + 364173020594788u64, + 518034455936955u64, + 1085564703965501u64, + 16030410467927u64, + 604865933167613u64, + 1695298441093964u64, + 498856548116159u64, + 2193030062787034u64, + 1706339802964179u64, + 1721199073493888u64, + 820740951039755u64, + 1216053436896834u64, + 23954895815139u64, + 1662515208920491u64, + 1705443427511899u64, + 1957928899570365u64, + 1189636258255725u64, + 1795695471103809u64, + 1691191297654118u64, + 282402585374360u64, + 460405330264832u64, + 63765529445733u64, + 469763447404473u64, + 733607089694996u64, + 685410420186959u64, + 1096682630419738u64, + 1162548510542362u64, + 1020949526456676u64, + 1211660396870573u64, + 613126398222696u64, + 1117829165843251u64, + 742432540886650u64, + 1483755088010658u64, + 942392007134474u64, + 1447834130944107u64, + 489368274863410u64, + 23192985544898u64, + 648442406146160u64, + 785438843373876u64, + 249464684645238u64, + 170494608205618u64, + 335112827260550u64, + 1462050123162735u64, + 1084803668439016u64, + 853459233600325u64, + 215777728187495u64, + 1965759433526974u64, + 1349482894446537u64, + 694163317612871u64, + 860536766165036u64, + 1178788094084321u64, + 1652739626626996u64, + 2115723946388185u64, + 1577204379094664u64, + 1083882859023240u64, + 1768759143381635u64, + 1737180992507258u64, + 246054513922239u64, + 577253134087234u64, + 356340280578042u64, + 1638917769925142u64, + 223550348130103u64, + 470592666638765u64, + 22663573966996u64, + 596552461152400u64, + 364143537069499u64, + 3942119457699u64, + 107951982889287u64, + 1843471406713209u64, + 1625773041610986u64, + 1466141092501702u64, + 1043024095021271u64, + 310429964047508u64, + 98559121500372u64, + 152746933782868u64, + 259407205078261u64, + 828123093322585u64, + 1576847274280091u64, + 1170871375757302u64, + 1588856194642775u64, + 984767822341977u64, + 1141497997993760u64, + 809325345150796u64, + 1879837728202511u64, + 201340910657893u64, + 1079157558888483u64, + 1052373448588065u64, + 1732036202501778u64, + 2105292670328445u64, + 679751387312402u64, + 1679682144926229u64, + 1695823455818780u64, + 498852317075849u64, + 1786555067788433u64, + 1670727545779425u64, + 117945875433544u64, + 407939139781844u64, + 854632120023778u64, + 1413383148360437u64, + 286030901733673u64, + 1207361858071196u64, + 461340408181417u64, + 1096919590360164u64, + 1837594897475685u64, + 533755561544165u64, + 1638688042247712u64, + 1431653684793005u64, + 1036458538873559u64, + 390822120341779u64, + 1920929837111618u64, + 543426740024168u64, + 645751357799929u64, + 2245025632994463u64, + 1550778638076452u64, + 223738153459949u64, + 1337209385492033u64, + 1276967236456531u64, + 1463815821063071u64, + 2070620870191473u64, + 1199170709413753u64, + 273230877394166u64, + 1873264887608046u64, + 890877152910775u64, + 983226445635730u64, + 44873798519521u64, + 697147127512130u64, + 961631038239304u64, + 709966160696826u64, + 1706677689540366u64, + 502782733796035u64, + 812545535346033u64, + 1693622521296452u64, + 1955813093002510u64, + 1259937612881362u64, + 1873032503803559u64, + 1140330566016428u64, + 1675726082440190u64, + 60029928909786u64, + 170335608866763u64, + 766444312315022u64, + 2025049511434113u64, + 2200845622430647u64, + 1201269851450408u64, + 590071752404907u64, + 1400995030286946u64, + 2152637413853822u64, + 2108495473841983u64, + 3855406710349u64, + 1726137673168580u64, + 51004317200100u64, + 1749082328586939u64, + 1704088976144558u64, + 1977318954775118u64, + 2062602253162400u64, + 948062503217479u64, + 361953965048030u64, + 1528264887238440u64, + 62582552172290u64, + 2241602163389280u64, + 156385388121765u64, + 2124100319761492u64, + 388928050571382u64, + 1556123596922727u64, + 979310669812384u64, + 113043855206104u64, + 2023223924825469u64, + 643651703263034u64, + 2234446903655540u64, + 1577241261424997u64, + 860253174523845u64, + 1691026473082448u64, + 1091672764933872u64, + 1957463109756365u64, + 530699502660193u64, + 349587141723569u64, + 674661681919563u64, + 1633727303856240u64, + 708909037922144u64, + 2160722508518119u64, + 1302188051602540u64, + 976114603845777u64, + 120004758721939u64, + 1681630708873780u64, + 622274095069244u64, + 1822346309016698u64, + 1100921177951904u64, + 2216952659181677u64, + 1844020550362490u64, + 1976451368365774u64, + 1321101422068822u64, + 1189859436282668u64, + 2008801879735257u64, + 2219413454333565u64, + 424288774231098u64, + 359793146977912u64, + 270293357948703u64, + 587226003677000u64, + 1482071926139945u64, + 1419630774650359u64, + 1104739070570175u64, + 1662129023224130u64, + 1609203612533411u64, + 1250932720691980u64, + 95215711818495u64, + 498746909028150u64, + 158151296991874u64, + 1201379988527734u64, + 561599945143989u64, + 2211577425617888u64, + 2166577612206324u64, + 1057590354233512u64, + 1968123280416769u64, + 1316586165401313u64, + 762728164447634u64, + 2045395244316047u64, + 1531796898725716u64, + 315385971670425u64, + 1109421039396756u64, + 2183635256408562u64, + 1896751252659461u64, + 840236037179080u64, + 796245792277211u64, + 508345890111193u64, + 1275386465287222u64, + 513560822858784u64, + 1784735733120313u64, + 1346467478899695u64, + 601125231208417u64, + 701076661112726u64, + 1841998436455089u64, + 1156768600940434u64, + 1967853462343221u64, + 2178318463061452u64, + 481885520752741u64, + 675262828640945u64, + 1033539418596582u64, + 1743329872635846u64, + 159322641251283u64, + 1573076470127113u64, + 954827619308195u64, + 778834750662635u64, + 619912782122617u64, + 515681498488209u64, + 1675866144246843u64, + 811716020969981u64, + 1125515272217398u64, + 1398917918287342u64, + 1301680949183175u64, + 726474739583734u64, + 587246193475200u64, + 1096581582611864u64, + 1469911826213486u64, + 1990099711206364u64, + 1256496099816508u64, + 2019924615195672u64, + 1251232456707555u64, + 2042971196009755u64, + 214061878479265u64, + 115385726395472u64, + 1677875239524132u64, + 756888883383540u64, + 1153862117756233u64, + 503391530851096u64, + 946070017477513u64, + 1878319040542579u64, + 1101349418586920u64, + 793245696431613u64, + 397920495357645u64, + 2174023872951112u64, + 1517867915189593u64, + 1829855041462995u64, + 1046709983503619u64, + 424081940711857u64, + 2112438073094647u64, + 1504338467349861u64, + 2244574127374532u64, + 2136937537441911u64, + 1741150838990304u64, + 25894628400571u64, + 512213526781178u64, + 1168384260796379u64, + 1424607682379833u64, + 938677789731564u64, + 872882241891896u64, + 1713199397007700u64, + 1410496326218359u64, + 854379752407031u64, + 465141611727634u64, + 315176937037857u64, + 1020115054571233u64, + 1856290111077229u64, + 2028366269898204u64, + 1432980880307543u64, + 469932710425448u64, + 581165267592247u64, + 496399148156603u64, + 2063435226705903u64, + 2116841086237705u64, + 498272567217048u64, + 1829438076967906u64, + 1573925801278491u64, + 460763576329867u64, + 1705264723728225u64, + 999514866082412u64, + 29635061779362u64, + 1884233592281020u64, + 1449755591461338u64, + 42579292783222u64, + 1869504355369200u64, + 495506004805251u64, + 264073104888427u64, + 2088880861028612u64, + 104646456386576u64, + 1258445191399967u64, + 1348736801545799u64, + 2068276361286613u64, + 884897216646374u64, + 922387476801376u64, + 1043886580402805u64, + 1240883498470831u64, + 1601554651937110u64, + 804382935289482u64, + 512379564477239u64, + 1466384519077032u64, + 1280698500238386u64, + 211303836685749u64, + 2081725624793803u64, + 545247644516879u64, + 215313359330384u64, + 286479751145614u64, + 2213650281751636u64, + 2164927945999874u64, + 2072162991540882u64, + 1443769115444779u64, + 1581473274363095u64, + 434633875922699u64, + 340456055781599u64, + 373043091080189u64, + 839476566531776u64, + 1856706858509978u64, + 931616224909153u64, + 1888181317414065u64, + 213654322650262u64, + 1161078103416244u64, + 1822042328851513u64, + 915817709028812u64, + 1828297056698188u64, + 1212017130909403u64, + 60258343247333u64, + 342085800008230u64, + 930240559508270u64, + 1549884999174952u64, + 809895264249462u64, + 184726257947682u64, + 1157065433504828u64, + 1209999630381477u64, + 999920399374391u64, + 1714770150788163u64, + 2026130985413228u64, + 506776632883140u64, + 1349042668246528u64, + 1937232292976967u64, + 942302637530730u64, + 160211904766226u64, + 1042724500438571u64, + 212454865139142u64, + 244104425172642u64, + 1376990622387496u64, + 76126752421227u64, + 1027540886376422u64, + 1912210655133026u64, + 13410411589575u64, + 1475856708587773u64, + 615563352691682u64, + 1446629324872644u64, + 1683670301784014u64, + 1049873327197127u64, + 1826401704084838u64, + 2032577048760775u64, + 1922203607878853u64, + 836708788764806u64, + 2193084654695012u64, + 1342923183256659u64, + 849356986294271u64, + 1228863973965618u64, + 94886161081867u64, + 1423288430204892u64, + 2016167528707016u64, + 1633187660972877u64, + 1550621242301752u64, + 340630244512994u64, + 2103577710806901u64, + 221625016538931u64, + 421544147350960u64, + 580428704555156u64, + 1479831381265617u64, + 518057926544698u64, + 955027348790630u64, + 1326749172561598u64, + 1118304625755967u64, + 1994005916095176u64, + 1799757332780663u64, + 751343129396941u64, + 1468672898746144u64, + 1451689964451386u64, + 755070293921171u64, + 904857405877052u64, + 1276087530766984u64, + 403986562858511u64, + 1530661255035337u64, + 1644972908910502u64, + 1370170080438957u64, + 139839536695744u64, + 909930462436512u64, + 1899999215356933u64, + 635992381064566u64, + 788740975837654u64, + 224241231493695u64, + 1267090030199302u64, + 998908061660139u64, + 1784537499699278u64, + 859195370018706u64, + 1953966091439379u64, + 2189271820076010u64, + 2039067059943978u64, + 1526694380855202u64, + 2040321513194941u64, + 329922071218689u64, + 1953032256401326u64, + 989631424403521u64, + 328825014934242u64, + 9407151397696u64, + 63551373671268u64, + 1624728632895792u64, + 1608324920739262u64, + 1178239350351945u64, + 1198077399579702u64, + 277620088676229u64, + 1775359437312528u64, + 1653558177737477u64, + 1652066043408850u64, + 1063359889686622u64, + 1975063804860653u64, +]; diff --git a/libcrux-hacl-rs/src/fstar/uint16.rs b/libcrux-hacl-rs/src/fstar/uint16.rs index 138e938f7..42f429efc 100644 --- a/libcrux-hacl-rs/src/fstar/uint16.rs +++ b/libcrux-hacl-rs/src/fstar/uint16.rs @@ -1,21 +1,19 @@ -pub fn eq_mask(a: u16, b: u16) -> u16 -{ - let x = a ^ b; - let minus_x = (!x).wrapping_add(1u16); - let x_or_minus_x = x | minus_x; - let xnx = x_or_minus_x.wrapping_shr(15); - xnx.wrapping_sub(1u16) +pub fn eq_mask(a: u16, b: u16) -> u16 { + let x = a ^ b; + let minus_x = (!x).wrapping_add(1u16); + let x_or_minus_x = x | minus_x; + let xnx = x_or_minus_x.wrapping_shr(15); + xnx.wrapping_sub(1u16) } -pub fn gte_mask(a: u16, b: u16) -> u16 -{ - let x = a; - let y = b; - let x_xor_y = x ^ y; - let x_sub_y = x.wrapping_sub(y); - let x_sub_y_xor_y = x_sub_y ^ y; - let q = x_xor_y | x_sub_y_xor_y; - let x_xor_q = x ^ q; - let x_xor_q_ = x_xor_q.wrapping_shr(15); - x_xor_q_.wrapping_sub(1u16) +pub fn gte_mask(a: u16, b: u16) -> u16 { + let x = a; + let y = b; + let x_xor_y = x ^ y; + let x_sub_y = x.wrapping_sub(y); + let x_sub_y_xor_y = x_sub_y ^ y; + let q = x_xor_y | x_sub_y_xor_y; + let x_xor_q = x ^ q; + let x_xor_q_ = x_xor_q.wrapping_shr(15); + x_xor_q_.wrapping_sub(1u16) } diff --git a/libcrux-hacl-rs/src/fstar/uint32.rs b/libcrux-hacl-rs/src/fstar/uint32.rs index 95520a4fd..9ea3a652f 100644 --- a/libcrux-hacl-rs/src/fstar/uint32.rs +++ b/libcrux-hacl-rs/src/fstar/uint32.rs @@ -1,21 +1,19 @@ -pub fn eq_mask(a: u32, b: u32) -> u32 -{ - let x = a ^ b; - let minus_x = (!x).wrapping_add(1u32); - let x_or_minus_x = x | minus_x; - let xnx = x_or_minus_x.wrapping_shr(31); - xnx.wrapping_sub(1u32) +pub fn eq_mask(a: u32, b: u32) -> u32 { + let x = a ^ b; + let minus_x = (!x).wrapping_add(1u32); + let x_or_minus_x = x | minus_x; + let xnx = x_or_minus_x.wrapping_shr(31); + xnx.wrapping_sub(1u32) } -pub fn gte_mask(a: u32, b: u32) -> u32 -{ - let x = a; - let y = b; - let x_xor_y = x ^ y; - let x_sub_y = x.wrapping_sub(y); - let x_sub_y_xor_y = x_sub_y ^ y; - let q = x_xor_y | x_sub_y_xor_y; - let x_xor_q = x ^ q; - let x_xor_q_ = x_xor_q.wrapping_shr(31); - x_xor_q_.wrapping_sub(1u32) +pub fn gte_mask(a: u32, b: u32) -> u32 { + let x = a; + let y = b; + let x_xor_y = x ^ y; + let x_sub_y = x.wrapping_sub(y); + let x_sub_y_xor_y = x_sub_y ^ y; + let q = x_xor_y | x_sub_y_xor_y; + let x_xor_q = x ^ q; + let x_xor_q_ = x_xor_q.wrapping_shr(31); + x_xor_q_.wrapping_sub(1u32) } diff --git a/libcrux-hacl-rs/src/fstar/uint64.rs b/libcrux-hacl-rs/src/fstar/uint64.rs index 0c7d45896..4f48d9d4d 100644 --- a/libcrux-hacl-rs/src/fstar/uint64.rs +++ b/libcrux-hacl-rs/src/fstar/uint64.rs @@ -1,21 +1,19 @@ -pub fn eq_mask(a: u64, b: u64) -> u64 -{ - let x = a ^ b; - let minus_x = (!x).wrapping_add(1u64); - let x_or_minus_x = x | minus_x; - let xnx = x_or_minus_x.wrapping_shr(63); - xnx.wrapping_sub(1u64) +pub fn eq_mask(a: u64, b: u64) -> u64 { + let x = a ^ b; + let minus_x = (!x).wrapping_add(1u64); + let x_or_minus_x = x | minus_x; + let xnx = x_or_minus_x.wrapping_shr(63); + xnx.wrapping_sub(1u64) } -pub fn gte_mask(a: u64, b: u64) -> u64 -{ - let x = a; - let y = b; - let x_xor_y = x ^ y; - let x_sub_y = x.wrapping_sub(y); - let x_sub_y_xor_y = x_sub_y ^ y; - let q = x_xor_y | x_sub_y_xor_y; - let x_xor_q = x ^ q; - let x_xor_q_ = x_xor_q.wrapping_shr(63); - x_xor_q_.wrapping_sub(1u64) +pub fn gte_mask(a: u64, b: u64) -> u64 { + let x = a; + let y = b; + let x_xor_y = x ^ y; + let x_sub_y = x.wrapping_sub(y); + let x_sub_y_xor_y = x_sub_y ^ y; + let q = x_xor_y | x_sub_y_xor_y; + let x_xor_q = x ^ q; + let x_xor_q_ = x_xor_q.wrapping_shr(63); + x_xor_q_.wrapping_sub(1u64) } diff --git a/libcrux-hacl-rs/src/fstar/uint8.rs b/libcrux-hacl-rs/src/fstar/uint8.rs index 0c80314d8..196e153bc 100644 --- a/libcrux-hacl-rs/src/fstar/uint8.rs +++ b/libcrux-hacl-rs/src/fstar/uint8.rs @@ -1,22 +1,19 @@ -pub fn eq_mask(a: u8, b: u8) -> u8 -{ - let x = a ^ b; - let minus_x = (!x).wrapping_add(1u8); - let x_or_minus_x = x | minus_x; - let xnx = x_or_minus_x.wrapping_shr(7); - xnx.wrapping_sub(1u8) +pub fn eq_mask(a: u8, b: u8) -> u8 { + let x = a ^ b; + let minus_x = (!x).wrapping_add(1u8); + let x_or_minus_x = x | minus_x; + let xnx = x_or_minus_x.wrapping_shr(7); + xnx.wrapping_sub(1u8) } -pub fn gte_mask(a: u8, b: u8) -> u8 -{ - let x = a; - let y = b; - let x_xor_y = x ^ y; - let x_sub_y = x.wrapping_sub(y); - let x_sub_y_xor_y = x_sub_y ^ y; - let q = x_xor_y | x_sub_y_xor_y; - let x_xor_q = x ^ q; - let x_xor_q_ = x_xor_q.wrapping_shr(7); - x_xor_q_.wrapping_sub(1u8) +pub fn gte_mask(a: u8, b: u8) -> u8 { + let x = a; + let y = b; + let x_xor_y = x ^ y; + let x_sub_y = x.wrapping_sub(y); + let x_sub_y_xor_y = x_sub_y ^ y; + let q = x_xor_y | x_sub_y_xor_y; + let x_xor_q = x ^ q; + let x_xor_q_ = x_xor_q.wrapping_shr(7); + x_xor_q_.wrapping_sub(1u8) } - diff --git a/libcrux-hacl-rs/src/lowstar/endianness.rs b/libcrux-hacl-rs/src/lowstar/endianness.rs index 00d3ea9c5..27e227900 100644 --- a/libcrux-hacl-rs/src/lowstar/endianness.rs +++ b/libcrux-hacl-rs/src/lowstar/endianness.rs @@ -6,7 +6,7 @@ pub fn load16_le(bytes: &[u8]) -> u16 { u16::from_le_bytes(bytes[0..2].try_into().unwrap()) } -pub fn store16_le(bytes: &mut[u8], x: u16) { +pub fn store16_le(bytes: &mut [u8], x: u16) { bytes[0..2].copy_from_slice(&u16::to_le_bytes(x)) } @@ -14,7 +14,7 @@ pub fn load32_le(bytes: &[u8]) -> u32 { u32::from_le_bytes(bytes[0..4].try_into().unwrap()) } -pub fn store32_le(bytes: &mut[u8], x: u32) { +pub fn store32_le(bytes: &mut [u8], x: u32) { bytes[0..4].copy_from_slice(&u32::to_le_bytes(x)) } @@ -22,7 +22,7 @@ pub fn load64_le(bytes: &[u8]) -> u64 { u64::from_le_bytes(bytes[0..8].try_into().unwrap()) } -pub fn store64_le(bytes: &mut[u8], x: u64) { +pub fn store64_le(bytes: &mut [u8], x: u64) { bytes[0..8].copy_from_slice(&u64::to_le_bytes(x)) } @@ -32,7 +32,7 @@ pub fn load32_be(bytes: &[u8]) -> u32 { u32::from_be_bytes(bytes[0..4].try_into().unwrap()) } -pub fn store32_be(bytes: &mut[u8], x: u32) { +pub fn store32_be(bytes: &mut [u8], x: u32) { bytes[0..4].copy_from_slice(&u32::to_be_bytes(x)) } @@ -40,7 +40,7 @@ pub fn load64_be(bytes: &[u8]) -> u64 { u64::from_be_bytes(bytes[0..8].try_into().unwrap()) } -pub fn store64_be(bytes: &mut[u8], x: u64) { +pub fn store64_be(bytes: &mut [u8], x: u64) { bytes[0..8].copy_from_slice(&u64::to_be_bytes(x)) } @@ -48,6 +48,6 @@ pub fn load128_be(bytes: &[u8]) -> u128 { u128::from_be_bytes(bytes[0..16].try_into().unwrap()) } -pub fn store128_be(bytes: &mut[u8], x: u128) { +pub fn store128_be(bytes: &mut [u8], x: u128) { bytes[0..16].copy_from_slice(&u128::to_be_bytes(x)) }