module Crypto::AES

Defined in:

crypto/cipher/aes/aes.cr

Constant Summary

BLOCK_SIZE = 16
EXPANDED_KEY_SIZE = 60
RCON = StaticArray[16777216_u32, 33554432_u32, 67108864_u32, 134217728_u32, 268435456_u32, 536870912_u32, 1073741824_u32, 2147483648_u32, 452984832_u32, 905969664_u32]
SBOX = StaticArray[StaticArray[99_u32, 124_u32, 119_u32, 123_u32, 242_u32, 107_u32, 111_u32, 197_u32, 48_u32, 1_u32, 103_u32, 43_u32, 254_u32, 215_u32, 171_u32, 118_u32], StaticArray[202_u32, 130_u32, 201_u32, 125_u32, 250_u32, 89_u32, 71_u32, 240_u32, 173_u32, 212_u32, 162_u32, 175_u32, 156_u32, 164_u32, 114_u32, 192_u32], StaticArray[183_u32, 253_u32, 147_u32, 38_u32, 54_u32, 63_u32, 247_u32, 204_u32, 52_u32, 165_u32, 229_u32, 241_u32, 113_u32, 216_u32, 49_u32, 21_u32], StaticArray[4_u32, 199_u32, 35_u32, 195_u32, 24_u32, 150_u32, 5_u32, 154_u32, 7_u32, 18_u32, 128_u32, 226_u32, 235_u32, 39_u32, 178_u32, 117_u32], StaticArray[9_u32, 131_u32, 44_u32, 26_u32, 27_u32, 110_u32, 90_u32, 160_u32, 82_u32, 59_u32, 214_u32, 179_u32, 41_u32, 227_u32, 47_u32, 132_u32], StaticArray[83_u32, 209_u32, 0_u32, 237_u32, 32_u32, 252_u32, 177_u32, 91_u32, 106_u32, 203_u32, 190_u32, 57_u32, 74_u32, 76_u32, 88_u32, 207_u32], StaticArray[208_u32, 239_u32, 170_u32, 251_u32, 67_u32, 77_u32, 51_u32, 133_u32, 69_u32, 249_u32, 2_u32, 127_u32, 80_u32, 60_u32, 159_u32, 168_u32], StaticArray[81_u32, 163_u32, 64_u32, 143_u32, 146_u32, 157_u32, 56_u32, 245_u32, 188_u32, 182_u32, 218_u32, 33_u32, 16_u32, 255_u32, 243_u32, 210_u32], StaticArray[205_u32, 12_u32, 19_u32, 236_u32, 95_u32, 151_u32, 68_u32, 23_u32, 196_u32, 167_u32, 126_u32, 61_u32, 100_u32, 93_u32, 25_u32, 115_u32], StaticArray[96_u32, 129_u32, 79_u32, 220_u32, 34_u32, 42_u32, 144_u32, 136_u32, 70_u32, 238_u32, 184_u32, 20_u32, 222_u32, 94_u32, 11_u32, 219_u32], StaticArray[224_u32, 50_u32, 58_u32, 10_u32, 73_u32, 6_u32, 36_u32, 92_u32, 194_u32, 211_u32, 172_u32, 98_u32, 145_u32, 149_u32, 228_u32, 121_u32], StaticArray[231_u32, 200_u32, 55_u32, 109_u32, 141_u32, 213_u32, 78_u32, 169_u32, 108_u32, 86_u32, 244_u32, 234_u32, 101_u32, 122_u32, 174_u32, 8_u32], StaticArray[186_u32, 120_u32, 37_u32, 46_u32, 28_u32, 166_u32, 180_u32, 198_u32, 232_u32, 221_u32, 116_u32, 31_u32, 75_u32, 189_u32, 139_u32, 138_u32], StaticArray[112_u32, 62_u32, 181_u32, 102_u32, 72_u32, 3_u32, 246_u32, 14_u32, 97_u32, 53_u32, 87_u32, 185_u32, 134_u32, 193_u32, 29_u32, 158_u32], StaticArray[225_u32, 248_u32, 152_u32, 17_u32, 105_u32, 217_u32, 142_u32, 148_u32, 155_u32, 30_u32, 135_u32, 233_u32, 206_u32, 85_u32, 40_u32, 223_u32], StaticArray[140_u32, 161_u32, 137_u32, 13_u32, 191_u32, 230_u32, 66_u32, 104_u32, 65_u32, 153_u32, 45_u32, 15_u32, 176_u32, 84_u32, 187_u32, 22_u32]]
Td0 = StaticArray[1374988112_u32, 2118214995_u32, 437757123_u32, 975658646_u32, 1001089995_u32, 530400753_u32, 2902087851_u32, 1273168787_u32, 540080725_u32, 2910219766_u32, 2295101073_u32, 4110568485_u32, 1340463100_u32, 3307916247_u32, 641025152_u32, 3043140495_u32, 3736164937_u32, 632953703_u32, 1172967064_u32, 1576976609_u32, 3274667266_u32, 2169303058_u32, 2370213795_u32, 1809054150_u32, 59727847_u32, 361929877_u32, 3211623147_u32, 2505202138_u32, 3569255213_u32, 1484005843_u32, 1239443753_u32, 2395588676_u32, 1975683434_u32, 4102977912_u32, 2572697195_u32, 666464733_u32, 3202437046_u32, 4035489047_u32, 3374361702_u32, 2110667444_u32, 1675577880_u32, 3843699074_u32, 2538681184_u32, 1649639237_u32, 2976151520_u32, 3144396420_u32, 4269907996_u32, 4178062228_u32, 1883793496_u32, 2403728665_u32, 2497604743_u32, 1383856311_u32, 2876494627_u32, 1917518562_u32, 3810496343_u32, 1716890410_u32, 3001755655_u32, 800440835_u32, 2261089178_u32, 3543599269_u32, 807962610_u32, 599762354_u32, 33778362_u32, 3977675356_u32, 2328828971_u32, 2809771154_u32, 4077384432_u32, 1315562145_u32, 1708848333_u32, 101039829_u32, 3509871135_u32, 3299278474_u32, 875451293_u32, 2733856160_u32, 92987698_u32, 2767645557_u32, 193195065_u32, 1080094634_u32, 1584504582_u32, 3178106961_u32, 1042385657_u32, 2531067453_u32, 3711829422_u32, 1306967366_u32, 2438237621_u32, 1908694277_u32, 67556463_u32, 1615861247_u32, 429456164_u32, 3602770327_u32, 2302690252_u32, 1742315127_u32, 2968011453_u32, 126454664_u32, 3877198648_u32, 2043211483_u32, 2709260871_u32, 2084704233_u32, 4169408201_u32, 0_u32, 159417987_u32, 841739592_u32, 504459436_u32, 1817866830_u32, 4245618683_u32, 260388950_u32, 1034867998_u32, 908933415_u32, 168810852_u32, 1750902305_u32, 2606453969_u32, 607530554_u32, 202008497_u32, 2472011535_u32, 3035535058_u32, 463180190_u32, 2160117071_u32, 1641816226_u32, 1517767529_u32, 470948374_u32, 3801332234_u32, 3231722213_u32, 1008918595_u32, 303765277_u32, 235474187_u32, 4069246893_u32, 766945465_u32, 337553864_u32, 1475418501_u32, 2943682380_u32, 4003061179_u32, 2743034109_u32, 4144047775_u32, 1551037884_u32, 1147550661_u32, 1543208500_u32, 2336434550_u32, 3408119516_u32, 3069049960_u32, 3102011747_u32, 3610369226_u32, 1113818384_u32, 328671808_u32, 2227573024_u32, 2236228733_u32, 3535486456_u32, 2935566865_u32, 3341394285_u32, 496906059_u32, 3702665459_u32, 226906860_u32, 2009195472_u32, 733156972_u32, 2842737049_u32, 294930682_u32, 1206477858_u32, 2835123396_u32, 2700099354_u32, 1451044056_u32, 573804783_u32, 2269728455_u32, 3644379585_u32, 2362090238_u32, 2564033334_u32, 2801107407_u32, 2776292904_u32, 3669462566_u32, 1068351396_u32, 742039012_u32, 1350078989_u32, 1784663195_u32, 1417561698_u32, 4136440770_u32, 2430122216_u32, 775550814_u32, 2193862645_u32, 2673705150_u32, 1775276924_u32, 1876241833_u32, 3475313331_u32, 3366754619_u32, 270040487_u32, 3902563182_u32, 3678124923_u32, 3441850377_u32, 1851332852_u32, 3969562369_u32, 2203032232_u32, 3868552805_u32, 2868897406_u32, 566021896_u32, 4011190502_u32, 3135740889_u32, 1248802510_u32, 3936291284_u32, 699432150_u32, 832877231_u32, 708780849_u32, 3332740144_u32, 899835584_u32, 1951317047_u32, 4236429990_u32, 3767586992_u32, 866637845_u32, 4043610186_u32, 1106041591_u32, 2144161806_u32, 395441711_u32, 1984812685_u32, 1139781709_u32, 3433712980_u32, 3835036895_u32, 2664543715_u32, 1282050075_u32, 3240894392_u32, 1181045119_u32, 2640243204_u32, 25965917_u32, 4203181171_u32, 4211818798_u32, 3009879386_u32, 2463879762_u32, 3910161971_u32, 1842759443_u32, 2597806476_u32, 933301370_u32, 1509430414_u32, 3943906441_u32, 3467192302_u32, 3076639029_u32, 3776767469_u32, 2051518780_u32, 2631065433_u32, 1441952575_u32, 404016761_u32, 1942435775_u32, 1408749034_u32, 1610459739_u32, 3745345300_u32, 2017778566_u32, 3400528769_u32, 3110650942_u32, 941896748_u32, 3265478751_u32, 371049330_u32, 3168937228_u32, 675039627_u32, 4279080257_u32, 967311729_u32, 135050206_u32, 3635733660_u32, 1683407248_u32, 2076935265_u32, 3576870512_u32, 1215061108_u32, 3501741890_u32]
Td1 = StaticArray[1347548327_u32, 1400783205_u32, 3273267108_u32, 2520393566_u32, 3409685355_u32, 4045380933_u32, 2880240216_u32, 2471224067_u32, 1428173050_u32, 4138563181_u32, 2441661558_u32, 636813900_u32, 4233094615_u32, 3620022987_u32, 2149987652_u32, 2411029155_u32, 1239331162_u32, 1730525723_u32, 2554718734_u32, 3781033664_u32, 46346101_u32, 310463728_u32, 2743944855_u32, 3328955385_u32, 3875770207_u32, 2501218972_u32, 3955191162_u32, 3667219033_u32, 768917123_u32, 3545789473_u32, 692707433_u32, 1150208456_u32, 1786102409_u32, 2029293177_u32, 1805211710_u32, 3710368113_u32, 3065962831_u32, 401639597_u32, 1724457132_u32, 3028143674_u32, 409198410_u32, 2196052529_u32, 1620529459_u32, 1164071807_u32, 3769721975_u32, 2226875310_u32, 486441376_u32, 2499348523_u32, 1483753576_u32, 428819965_u32, 2274680428_u32, 3075636216_u32, 598438867_u32, 3799141122_u32, 1474502543_u32, 711349675_u32, 129166120_u32, 53458370_u32, 2592523643_u32, 2782082824_u32, 4063242375_u32, 2988687269_u32, 3120694122_u32, 1559041666_u32, 730517276_u32, 2460449204_u32, 4042459122_u32, 2706270690_u32, 3446004468_u32, 3573941694_u32, 533804130_u32, 2328143614_u32, 2637442643_u32, 2695033685_u32, 839224033_u32, 1973745387_u32, 957055980_u32, 2856345839_u32, 106852767_u32, 1371368976_u32, 4181598602_u32, 1033297158_u32, 2933734917_u32, 1179510461_u32, 3046200461_u32, 91341917_u32, 1862534868_u32, 4284502037_u32, 605657339_u32, 2547432937_u32, 3431546947_u32, 2003294622_u32, 3182487618_u32, 2282195339_u32, 954669403_u32, 3682191598_u32, 1201765386_u32, 3917234703_u32, 3388507166_u32, 0_u32, 2198438022_u32, 1211247597_u32, 2887651696_u32, 1315723890_u32, 4227665663_u32, 1443857720_u32, 507358933_u32, 657861945_u32, 1678381017_u32, 560487590_u32, 3516619604_u32, 975451694_u32, 2970356327_u32, 261314535_u32, 3535072918_u32, 2652609425_u32, 1333838021_u32, 2724322336_u32, 1767536459_u32, 370938394_u32, 182621114_u32, 3854606378_u32, 1128014560_u32, 487725847_u32, 185469197_u32, 2918353863_u32, 3106780840_u32, 3356761769_u32, 2237133081_u32, 1286567175_u32, 3152976349_u32, 4255350624_u32, 2683765030_u32, 3160175349_u32, 3309594171_u32, 878443390_u32, 1988838185_u32, 3704300486_u32, 1756818940_u32, 1673061617_u32, 3403100636_u32, 272786309_u32, 1075025698_u32, 545572369_u32, 2105887268_u32, 4174560061_u32, 296679730_u32, 1841768865_u32, 1260232239_u32, 4091327024_u32, 3960309330_u32, 3497509347_u32, 1814803222_u32, 2578018489_u32, 4195456072_u32, 575138148_u32, 3299409036_u32, 446754879_u32, 3629546796_u32, 4011996048_u32, 3347532110_u32, 3252238545_u32, 4270639778_u32, 915985419_u32, 3483825537_u32, 681933534_u32, 651868046_u32, 2755636671_u32, 3828103837_u32, 223377554_u32, 2607439820_u32, 1649704518_u32, 3270937875_u32, 3901806776_u32, 1580087799_u32, 4118987695_u32, 3198115200_u32, 2087309459_u32, 2842678573_u32, 3016697106_u32, 1003007129_u32, 2802849917_u32, 1860738147_u32, 2077965243_u32, 164439672_u32, 4100872472_u32, 32283319_u32, 2827177882_u32, 1709610350_u32, 2125135846_u32, 136428751_u32, 3874428392_u32, 3652904859_u32, 3460984630_u32, 3572145929_u32, 3593056380_u32, 2939266226_u32, 824852259_u32, 818324884_u32, 3224740454_u32, 930369212_u32, 2801566410_u32, 2967507152_u32, 355706840_u32, 1257309336_u32, 4148292826_u32, 243256656_u32, 790073846_u32, 2373340630_u32, 1296297904_u32, 1422699085_u32, 3756299780_u32, 3818836405_u32, 457992840_u32, 3099667487_u32, 2135319889_u32, 77422314_u32, 1560382517_u32, 1945798516_u32, 788204353_u32, 1521706781_u32, 1385356242_u32, 870912086_u32, 325965383_u32, 2358957921_u32, 2050466060_u32, 2388260884_u32, 2313884476_u32, 4006521127_u32, 901210569_u32, 3990953189_u32, 1014646705_u32, 1503449823_u32, 1062597235_u32, 2031621326_u32, 3212035895_u32, 3931371469_u32, 1533017514_u32, 350174575_u32, 2256028891_u32, 2177544179_u32, 1052338372_u32, 741876788_u32, 1606591296_u32, 1914052035_u32, 213705253_u32, 2334669897_u32, 1107234197_u32, 1899603969_u32, 3725069491_u32, 2631447780_u32, 2422494913_u32, 1635502980_u32, 1893020342_u32, 1950903388_u32, 1120974935_u32]
Td2 = StaticArray[2807058932_u32, 1699970625_u32, 2764249623_u32, 1586903591_u32, 1808481195_u32, 1173430173_u32, 1487645946_u32, 59984867_u32, 4199882800_u32, 1844882806_u32, 1989249228_u32, 1277555970_u32, 3623636965_u32, 3419915562_u32, 1149249077_u32, 2744104290_u32, 1514790577_u32, 459744698_u32, 244860394_u32, 3235995134_u32, 1963115311_u32, 4027744588_u32, 2544078150_u32, 4190530515_u32, 1608975247_u32, 2627016082_u32, 2062270317_u32, 1507497298_u32, 2200818878_u32, 567498868_u32, 1764313568_u32, 3359936201_u32, 2305455554_u32, 2037970062_u32, 1047239000_u32, 1910319033_u32, 1337376481_u32, 2904027272_u32, 2892417312_u32, 984907214_u32, 1243112415_u32, 830661914_u32, 861968209_u32, 2135253587_u32, 2011214180_u32, 2927934315_u32, 2686254721_u32, 731183368_u32, 1750626376_u32, 4246310725_u32, 1820824798_u32, 4172763771_u32, 3542330227_u32, 48394827_u32, 2404901663_u32, 2871682645_u32, 671593195_u32, 3254988725_u32, 2073724613_u32, 145085239_u32, 2280796200_u32, 2779915199_u32, 1790575107_u32, 2187128086_u32, 472615631_u32, 3029510009_u32, 4075877127_u32, 3802222185_u32, 4107101658_u32, 3201631749_u32, 1646252340_u32, 4270507174_u32, 1402811438_u32, 1436590835_u32, 3778151818_u32, 3950355702_u32, 3963161475_u32, 4020912224_u32, 2667994737_u32, 273792366_u32, 2331590177_u32, 104699613_u32, 95345982_u32, 3175501286_u32, 2377486676_u32, 1560637892_u32, 3564045318_u32, 369057872_u32, 4213447064_u32, 3919042237_u32, 1137477952_u32, 2658625497_u32, 1119727848_u32, 2340947849_u32, 1530455833_u32, 4007360968_u32, 172466556_u32, 266959938_u32, 516552836_u32, 0_u32, 2256734592_u32, 3980931627_u32, 1890328081_u32, 1917742170_u32, 4294704398_u32, 945164165_u32, 3575528878_u32, 958871085_u32, 3647212047_u32, 2787207260_u32, 1423022939_u32, 775562294_u32, 1739656202_u32, 3876557655_u32, 2530391278_u32, 2443058075_u32, 3310321856_u32, 547512796_u32, 1265195639_u32, 437656594_u32, 3121275539_u32, 719700128_u32, 3762502690_u32, 387781147_u32, 218828297_u32, 3350065803_u32, 2830708150_u32, 2848461854_u32, 428169201_u32, 122466165_u32, 3720081049_u32, 1627235199_u32, 648017665_u32, 4122762354_u32, 1002783846_u32, 2117360635_u32, 695634755_u32, 3336358691_u32, 4234721005_u32, 4049844452_u32, 3704280881_u32, 2232435299_u32, 574624663_u32, 287343814_u32, 612205898_u32, 1039717051_u32, 840019705_u32, 2708326185_u32, 793451934_u32, 821288114_u32, 1391201670_u32, 3822090177_u32, 376187827_u32, 3113855344_u32, 1224348052_u32, 1679968233_u32, 2361698556_u32, 1058709744_u32, 752375421_u32, 2431590963_u32, 1321699145_u32, 3519142200_u32, 2734591178_u32, 188127444_u32, 2177869557_u32, 3727205754_u32, 2384911031_u32, 3215212461_u32, 2648976442_u32, 2450346104_u32, 3432737375_u32, 1180849278_u32, 331544205_u32, 3102249176_u32, 4150144569_u32, 2952102595_u32, 2159976285_u32, 2474404304_u32, 766078933_u32, 313773861_u32, 2570832044_u32, 2108100632_u32, 1668212892_u32, 3145456443_u32, 2013908262_u32, 418672217_u32, 3070356634_u32, 2594734927_u32, 1852171925_u32, 3867060991_u32, 3473416636_u32, 3907448597_u32, 2614737639_u32, 919489135_u32, 164948639_u32, 2094410160_u32, 2997825956_u32, 590424639_u32, 2486224549_u32, 1723872674_u32, 3157750862_u32, 3399941250_u32, 3501252752_u32, 3625268135_u32, 2555048196_u32, 3673637356_u32, 1343127501_u32, 4130281361_u32, 3599595085_u32, 2957853679_u32, 1297403050_u32, 81781910_u32, 3051593425_u32, 2283490410_u32, 532201772_u32, 1367295589_u32, 3926170974_u32, 895287692_u32, 1953757831_u32, 1093597963_u32, 492483431_u32, 3528626907_u32, 1446242576_u32, 1192455638_u32, 1636604631_u32, 209336225_u32, 344873464_u32, 1015671571_u32, 669961897_u32, 3375740769_u32, 3857572124_u32, 2973530695_u32, 3747192018_u32, 1933530610_u32, 3464042516_u32, 935293895_u32, 3454686199_u32, 2858115069_u32, 1863638845_u32, 3683022916_u32, 4085369519_u32, 3292445032_u32, 875313188_u32, 1080017571_u32, 3279033885_u32, 621591778_u32, 1233856572_u32, 2504130317_u32, 24197544_u32, 3017672716_u32, 3835484340_u32, 3247465558_u32, 2220981195_u32, 3060847922_u32, 1551124588_u32, 1463996600_u32]
Td3 = StaticArray[4104605777_u32, 1097159550_u32, 396673818_u32, 660510266_u32, 2875968315_u32, 2638606623_u32, 4200115116_u32, 3808662347_u32, 821712160_u32, 1986918061_u32, 3430322568_u32, 38544885_u32, 3856137295_u32, 718002117_u32, 893681702_u32, 1654886325_u32, 2975484382_u32, 3122358053_u32, 3926825029_u32, 4274053469_u32, 796197571_u32, 1290801793_u32, 1184342925_u32, 3556361835_u32, 2405426947_u32, 2459735317_u32, 1836772287_u32, 1381620373_u32, 3196267988_u32, 1948373848_u32, 3764988233_u32, 3385345166_u32, 3263785589_u32, 2390325492_u32, 1480485785_u32, 3111247143_u32, 3780097726_u32, 2293045232_u32, 548169417_u32, 3459953789_u32, 3746175075_u32, 439452389_u32, 1362321559_u32, 1400849762_u32, 1685577905_u32, 1806599355_u32, 2174754046_u32, 137073913_u32, 1214797936_u32, 1174215055_u32, 3731654548_u32, 2079897426_u32, 1943217067_u32, 1258480242_u32, 529487843_u32, 1437280870_u32, 3945269170_u32, 3049390895_u32, 3313212038_u32, 923313619_u32, 679998000_u32, 3215307299_u32, 57326082_u32, 377642221_u32, 3474729866_u32, 2041877159_u32, 133361907_u32, 1776460110_u32, 3673476453_u32, 96392454_u32, 878845905_u32, 2801699524_u32, 777231668_u32, 4082475170_u32, 2330014213_u32, 4142626212_u32, 2213296395_u32, 1626319424_u32, 1906247262_u32, 1846563261_u32, 562755902_u32, 3708173718_u32, 1040559837_u32, 3871163981_u32, 1418573201_u32, 3294430577_u32, 114585348_u32, 1343618912_u32, 2566595609_u32, 3186202582_u32, 1078185097_u32, 3651041127_u32, 3896688048_u32, 2307622919_u32, 425408743_u32, 3371096953_u32, 2081048481_u32, 1108339068_u32, 2216610296_u32, 0_u32, 2156299017_u32, 736970802_u32, 292596766_u32, 1517440620_u32, 251657213_u32, 2235061775_u32, 2933202493_u32, 758720310_u32, 265905162_u32, 1554391400_u32, 1532285339_u32, 908999204_u32, 174567692_u32, 1474760595_u32, 4002861748_u32, 2610011675_u32, 3234156416_u32, 3693126241_u32, 2001430874_u32, 303699484_u32, 2478443234_u32, 2687165888_u32, 585122620_u32, 454499602_u32, 151849742_u32, 2345119218_u32, 3064510765_u32, 514443284_u32, 4044981591_u32, 1963412655_u32, 2581445614_u32, 2137062819_u32, 19308535_u32, 1928707164_u32, 1715193156_u32, 4219352155_u32, 1126790795_u32, 600235211_u32, 3992742070_u32, 3841024952_u32, 836553431_u32, 1669664834_u32, 2535604243_u32, 3323011204_u32, 1243905413_u32, 3141400786_u32, 4180808110_u32, 698445255_u32, 2653899549_u32, 2989552604_u32, 2253581325_u32, 3252932727_u32, 3004591147_u32, 1891211689_u32, 2487810577_u32, 3915653703_u32, 4237083816_u32, 4030667424_u32, 2100090966_u32, 865136418_u32, 1229899655_u32, 953270745_u32, 3399679628_u32, 3557504664_u32, 4118925222_u32, 2061379749_u32, 3079546586_u32, 2915017791_u32, 983426092_u32, 2022837584_u32, 1607244650_u32, 2118541908_u32, 2366882550_u32, 3635996816_u32, 972512814_u32, 3283088770_u32, 1568718495_u32, 3499326569_u32, 3576539503_u32, 621982671_u32, 2895723464_u32, 410887952_u32, 2623762152_u32, 1002142683_u32, 645401037_u32, 1494807662_u32, 2595684844_u32, 1335535747_u32, 2507040230_u32, 4293295786_u32, 3167684641_u32, 367585007_u32, 3885750714_u32, 1865862730_u32, 2668221674_u32, 2960971305_u32, 2763173681_u32, 1059270954_u32, 2777952454_u32, 2724642869_u32, 1320957812_u32, 2194319100_u32, 2429595872_u32, 2815956275_u32, 77089521_u32, 3973773121_u32, 3444575871_u32, 2448830231_u32, 1305906550_u32, 4021308739_u32, 2857194700_u32, 2516901860_u32, 3518358430_u32, 1787304780_u32, 740276417_u32, 1699839814_u32, 1592394909_u32, 2352307457_u32, 2272556026_u32, 188821243_u32, 1729977011_u32, 3687994002_u32, 274084841_u32, 3594982253_u32, 3613494426_u32, 2701949495_u32, 4162096729_u32, 322734571_u32, 2837966542_u32, 1640576439_u32, 484830689_u32, 1202797690_u32, 3537852828_u32, 4067639125_u32, 349075736_u32, 3342319475_u32, 4157467219_u32, 4255800159_u32, 1030690015_u32, 1155237496_u32, 2951971274_u32, 1757691577_u32, 607398968_u32, 2738905026_u32, 499347990_u32, 3794078908_u32, 1011452712_u32, 227885567_u32, 2818666809_u32, 213114376_u32, 3034881240_u32, 1455525988_u32, 3414450555_u32, 850817237_u32, 1817998408_u32, 3092726480_u32]
Td4 = StaticArray[82_u32, 9_u32, 106_u32, 213_u32, 48_u32, 54_u32, 165_u32, 56_u32, 191_u32, 64_u32, 163_u32, 158_u32, 129_u32, 243_u32, 215_u32, 251_u32, 124_u32, 227_u32, 57_u32, 130_u32, 155_u32, 47_u32, 255_u32, 135_u32, 52_u32, 142_u32, 67_u32, 68_u32, 196_u32, 222_u32, 233_u32, 203_u32, 84_u32, 123_u32, 148_u32, 50_u32, 166_u32, 194_u32, 35_u32, 61_u32, 238_u32, 76_u32, 149_u32, 11_u32, 66_u32, 250_u32, 195_u32, 78_u32, 8_u32, 46_u32, 161_u32, 102_u32, 40_u32, 217_u32, 36_u32, 178_u32, 118_u32, 91_u32, 162_u32, 73_u32, 109_u32, 139_u32, 209_u32, 37_u32, 114_u32, 248_u32, 246_u32, 100_u32, 134_u32, 104_u32, 152_u32, 22_u32, 212_u32, 164_u32, 92_u32, 204_u32, 93_u32, 101_u32, 182_u32, 146_u32, 108_u32, 112_u32, 72_u32, 80_u32, 253_u32, 237_u32, 185_u32, 218_u32, 94_u32, 21_u32, 70_u32, 87_u32, 167_u32, 141_u32, 157_u32, 132_u32, 144_u32, 216_u32, 171_u32, 0_u32, 140_u32, 188_u32, 211_u32, 10_u32, 247_u32, 228_u32, 88_u32, 5_u32, 184_u32, 179_u32, 69_u32, 6_u32, 208_u32, 44_u32, 30_u32, 143_u32, 202_u32, 63_u32, 15_u32, 2_u32, 193_u32, 175_u32, 189_u32, 3_u32, 1_u32, 19_u32, 138_u32, 107_u32, 58_u32, 145_u32, 17_u32, 65_u32, 79_u32, 103_u32, 220_u32, 234_u32, 151_u32, 242_u32, 207_u32, 206_u32, 240_u32, 180_u32, 230_u32, 115_u32, 150_u32, 172_u32, 116_u32, 34_u32, 231_u32, 173_u32, 53_u32, 133_u32, 226_u32, 249_u32, 55_u32, 232_u32, 28_u32, 117_u32, 223_u32, 110_u32, 71_u32, 241_u32, 26_u32, 113_u32, 29_u32, 41_u32, 197_u32, 137_u32, 111_u32, 183_u32, 98_u32, 14_u32, 170_u32, 24_u32, 190_u32, 27_u32, 252_u32, 86_u32, 62_u32, 75_u32, 198_u32, 210_u32, 121_u32, 32_u32, 154_u32, 219_u32, 192_u32, 254_u32, 120_u32, 205_u32, 90_u32, 244_u32, 31_u32, 221_u32, 168_u32, 51_u32, 136_u32, 7_u32, 199_u32, 49_u32, 177_u32, 18_u32, 16_u32, 89_u32, 39_u32, 128_u32, 236_u32, 95_u32, 96_u32, 81_u32, 127_u32, 169_u32, 25_u32, 181_u32, 74_u32, 13_u32, 45_u32, 229_u32, 122_u32, 159_u32, 147_u32, 201_u32, 156_u32, 239_u32, 160_u32, 224_u32, 59_u32, 77_u32, 174_u32, 42_u32, 245_u32, 176_u32, 200_u32, 235_u32, 187_u32, 60_u32, 131_u32, 83_u32, 153_u32, 97_u32, 23_u32, 43_u32, 4_u32, 126_u32, 186_u32, 119_u32, 214_u32, 38_u32, 225_u32, 105_u32, 20_u32, 99_u32, 85_u32, 33_u32, 12_u32, 125_u32]
Te0 = StaticArray[3328402341_u32, 4168907908_u32, 4000806809_u32, 4135287693_u32, 4294111757_u32, 3597364157_u32, 3731845041_u32, 2445657428_u32, 1613770832_u32, 33620227_u32, 3462883241_u32, 1445669757_u32, 3892248089_u32, 3050821474_u32, 1303096294_u32, 3967186586_u32, 2412431941_u32, 528646813_u32, 2311702848_u32, 4202528135_u32, 4026202645_u32, 2992200171_u32, 2387036105_u32, 4226871307_u32, 1101901292_u32, 3017069671_u32, 1604494077_u32, 1169141738_u32, 597466303_u32, 1403299063_u32, 3832705686_u32, 2613100635_u32, 1974974402_u32, 3791519004_u32, 1033081774_u32, 1277568618_u32, 1815492186_u32, 2118074177_u32, 4126668546_u32, 2211236943_u32, 1748251740_u32, 1369810420_u32, 3521504564_u32, 4193382664_u32, 3799085459_u32, 2883115123_u32, 1647391059_u32, 706024767_u32, 134480908_u32, 2512897874_u32, 1176707941_u32, 2646852446_u32, 806885416_u32, 932615841_u32, 168101135_u32, 798661301_u32, 235341577_u32, 605164086_u32, 461406363_u32, 3756188221_u32, 3454790438_u32, 1311188841_u32, 2142417613_u32, 3933566367_u32, 302582043_u32, 495158174_u32, 1479289972_u32, 874125870_u32, 907746093_u32, 3698224818_u32, 3025820398_u32, 1537253627_u32, 2756858614_u32, 1983593293_u32, 3084310113_u32, 2108928974_u32, 1378429307_u32, 3722699582_u32, 1580150641_u32, 327451799_u32, 2790478837_u32, 3117535592_u32, 0_u32, 3253595436_u32, 1075847264_u32, 3825007647_u32, 2041688520_u32, 3059440621_u32, 3563743934_u32, 2378943302_u32, 1740553945_u32, 1916352843_u32, 2487896798_u32, 2555137236_u32, 2958579944_u32, 2244988746_u32, 3151024235_u32, 3320835882_u32, 1336584933_u32, 3992714006_u32, 2252555205_u32, 2588757463_u32, 1714631509_u32, 293963156_u32, 2319795663_u32, 3925473552_u32, 67240454_u32, 4269768577_u32, 2689618160_u32, 2017213508_u32, 631218106_u32, 1269344483_u32, 2723238387_u32, 1571005438_u32, 2151694528_u32, 93294474_u32, 1066570413_u32, 563977660_u32, 1882732616_u32, 4059428100_u32, 1673313503_u32, 2008463041_u32, 2950355573_u32, 1109467491_u32, 537923632_u32, 3858759450_u32, 4260623118_u32, 3218264685_u32, 2177748300_u32, 403442708_u32, 638784309_u32, 3287084079_u32, 3193921505_u32, 899127202_u32, 2286175436_u32, 773265209_u32, 2479146071_u32, 1437050866_u32, 4236148354_u32, 2050833735_u32, 3362022572_u32, 3126681063_u32, 840505643_u32, 3866325909_u32, 3227541664_u32, 427917720_u32, 2655997905_u32, 2749160575_u32, 1143087718_u32, 1412049534_u32, 999329963_u32, 193497219_u32, 2353415882_u32, 3354324521_u32, 1807268051_u32, 672404540_u32, 2816401017_u32, 3160301282_u32, 369822493_u32, 2916866934_u32, 3688947771_u32, 1681011286_u32, 1949973070_u32, 336202270_u32, 2454276571_u32, 201721354_u32, 1210328172_u32, 3093060836_u32, 2680341085_u32, 3184776046_u32, 1135389935_u32, 3294782118_u32, 965841320_u32, 831886756_u32, 3554993207_u32, 4068047243_u32, 3588745010_u32, 2345191491_u32, 1849112409_u32, 3664604599_u32, 26054028_u32, 2983581028_u32, 2622377682_u32, 1235855840_u32, 3630984372_u32, 2891339514_u32, 4092916743_u32, 3488279077_u32, 3395642799_u32, 4101667470_u32, 1202630377_u32, 268961816_u32, 1874508501_u32, 4034427016_u32, 1243948399_u32, 1546530418_u32, 941366308_u32, 1470539505_u32, 1941222599_u32, 2546386513_u32, 3421038627_u32, 2715671932_u32, 3899946140_u32, 1042226977_u32, 2521517021_u32, 1639824860_u32, 227249030_u32, 260737669_u32, 3765465232_u32, 2084453954_u32, 1907733956_u32, 3429263018_u32, 2420656344_u32, 100860677_u32, 4160157185_u32, 470683154_u32, 3261161891_u32, 1781871967_u32, 2924959737_u32, 1773779408_u32, 394692241_u32, 2579611992_u32, 974986535_u32, 664706745_u32, 3655459128_u32, 3958962195_u32, 731420851_u32, 571543859_u32, 3530123707_u32, 2849626480_u32, 126783113_u32, 865375399_u32, 765172662_u32, 1008606754_u32, 361203602_u32, 3387549984_u32, 2278477385_u32, 2857719295_u32, 1344809080_u32, 2782912378_u32, 59542671_u32, 1503764984_u32, 160008576_u32, 437062935_u32, 1707065306_u32, 3622233649_u32, 2218934982_u32, 3496503480_u32, 2185314755_u32, 697932208_u32, 1512910199_u32, 504303377_u32, 2075177163_u32, 2824099068_u32, 1841019862_u32, 739644986_u32]
Te1 = StaticArray[2781242211_u32, 2230877308_u32, 2582542199_u32, 2381740923_u32, 234877682_u32, 3184946027_u32, 2984144751_u32, 1418839493_u32, 1348481072_u32, 50462977_u32, 2848876391_u32, 2102799147_u32, 434634494_u32, 1656084439_u32, 3863849899_u32, 2599188086_u32, 1167051466_u32, 2636087938_u32, 1082771913_u32, 2281340285_u32, 368048890_u32, 3954334041_u32, 3381544775_u32, 201060592_u32, 3963727277_u32, 1739838676_u32, 4250903202_u32, 3930435503_u32, 3206782108_u32, 4149453988_u32, 2531553906_u32, 1536934080_u32, 3262494647_u32, 484572669_u32, 2923271059_u32, 1783375398_u32, 1517041206_u32, 1098792767_u32, 49674231_u32, 1334037708_u32, 1550332980_u32, 4098991525_u32, 886171109_u32, 150598129_u32, 2481090929_u32, 1940642008_u32, 1398944049_u32, 1059722517_u32, 201851908_u32, 1385547719_u32, 1699095331_u32, 1587397571_u32, 674240536_u32, 2704774806_u32, 252314885_u32, 3039795866_u32, 151914247_u32, 908333586_u32, 2602270848_u32, 1038082786_u32, 651029483_u32, 1766729511_u32, 3447698098_u32, 2682942837_u32, 454166793_u32, 2652734339_u32, 1951935532_u32, 775166490_u32, 758520603_u32, 3000790638_u32, 4004797018_u32, 4217086112_u32, 4137964114_u32, 1299594043_u32, 1639438038_u32, 3464344499_u32, 2068982057_u32, 1054729187_u32, 1901997871_u32, 2534638724_u32, 4121318227_u32, 1757008337_u32, 0_u32, 750906861_u32, 1614815264_u32, 535035132_u32, 3363418545_u32, 3988151131_u32, 3201591914_u32, 1183697867_u32, 3647454910_u32, 1265776953_u32, 3734260298_u32, 3566750796_u32, 3903871064_u32, 1250283471_u32, 1807470800_u32, 717615087_u32, 3847203498_u32, 384695291_u32, 3313910595_u32, 3617213773_u32, 1432761139_u32, 2484176261_u32, 3481945413_u32, 283769337_u32, 100925954_u32, 2180939647_u32, 4037038160_u32, 1148730428_u32, 3123027871_u32, 3813386408_u32, 4087501137_u32, 4267549603_u32, 3229630528_u32, 2315620239_u32, 2906624658_u32, 3156319645_u32, 1215313976_u32, 82966005_u32, 3747855548_u32, 3245848246_u32, 1974459098_u32, 1665278241_u32, 807407632_u32, 451280895_u32, 251524083_u32, 1841287890_u32, 1283575245_u32, 337120268_u32, 891687699_u32, 801369324_u32, 3787349855_u32, 2721421207_u32, 3431482436_u32, 959321879_u32, 1469301956_u32, 4065699751_u32, 2197585534_u32, 1199193405_u32, 2898814052_u32, 3887750493_u32, 724703513_u32, 2514908019_u32, 2696962144_u32, 2551808385_u32, 3516813135_u32, 2141445340_u32, 1715741218_u32, 2119445034_u32, 2872807568_u32, 2198571144_u32, 3398190662_u32, 700968686_u32, 3547052216_u32, 1009259540_u32, 2041044702_u32, 3803995742_u32, 487983883_u32, 1991105499_u32, 1004265696_u32, 1449407026_u32, 1316239930_u32, 504629770_u32, 3683797321_u32, 168560134_u32, 1816667172_u32, 3837287516_u32, 1570751170_u32, 1857934291_u32, 4014189740_u32, 2797888098_u32, 2822345105_u32, 2754712981_u32, 936633572_u32, 2347923833_u32, 852879335_u32, 1133234376_u32, 1500395319_u32, 3084545389_u32, 2348912013_u32, 1689376213_u32, 3533459022_u32, 3762923945_u32, 3034082412_u32, 4205598294_u32, 133428468_u32, 634383082_u32, 2949277029_u32, 2398386810_u32, 3913789102_u32, 403703816_u32, 3580869306_u32, 2297460856_u32, 1867130149_u32, 1918643758_u32, 607656988_u32, 4049053350_u32, 3346248884_u32, 1368901318_u32, 600565992_u32, 2090982877_u32, 2632479860_u32, 557719327_u32, 3717614411_u32, 3697393085_u32, 2249034635_u32, 2232388234_u32, 2430627952_u32, 1115438654_u32, 3295786421_u32, 2865522278_u32, 3633334344_u32, 84280067_u32, 33027830_u32, 303828494_u32, 2747425121_u32, 1600795957_u32, 4188952407_u32, 3496589753_u32, 2434238086_u32, 1486471617_u32, 658119965_u32, 3106381470_u32, 953803233_u32, 334231800_u32, 3005978776_u32, 857870609_u32, 3151128937_u32, 1890179545_u32, 2298973838_u32, 2805175444_u32, 3056442267_u32, 574365214_u32, 2450884487_u32, 550103529_u32, 1233637070_u32, 4289353045_u32, 2018519080_u32, 2057691103_u32, 2399374476_u32, 4166623649_u32, 2148108681_u32, 387583245_u32, 3664101311_u32, 836232934_u32, 3330556482_u32, 3100665960_u32, 3280093505_u32, 2955516313_u32, 2002398509_u32, 287182607_u32, 3413881008_u32, 4238890068_u32, 3597515707_u32, 975967766_u32]
Te2 = StaticArray[1671808611_u32, 2089089148_u32, 2006576759_u32, 2072901243_u32, 4061003762_u32, 1807603307_u32, 1873927791_u32, 3310653893_u32, 810573872_u32, 16974337_u32, 1739181671_u32, 729634347_u32, 4263110654_u32, 3613570519_u32, 2883997099_u32, 1989864566_u32, 3393556426_u32, 2191335298_u32, 3376449993_u32, 2106063485_u32, 4195741690_u32, 1508618841_u32, 1204391495_u32, 4027317232_u32, 2917941677_u32, 3563566036_u32, 2734514082_u32, 2951366063_u32, 2629772188_u32, 2767672228_u32, 1922491506_u32, 3227229120_u32, 3082974647_u32, 4246528509_u32, 2477669779_u32, 644500518_u32, 911895606_u32, 1061256767_u32, 4144166391_u32, 3427763148_u32, 878471220_u32, 2784252325_u32, 3845444069_u32, 4043897329_u32, 1905517169_u32, 3631459288_u32, 827548209_u32, 356461077_u32, 67897348_u32, 3344078279_u32, 593839651_u32, 3277757891_u32, 405286936_u32, 2527147926_u32, 84871685_u32, 2595565466_u32, 118033927_u32, 305538066_u32, 2157648768_u32, 3795705826_u32, 3945188843_u32, 661212711_u32, 2999812018_u32, 1973414517_u32, 152769033_u32, 2208177539_u32, 745822252_u32, 439235610_u32, 455947803_u32, 1857215598_u32, 1525593178_u32, 2700827552_u32, 1391895634_u32, 994932283_u32, 3596728278_u32, 3016654259_u32, 695947817_u32, 3812548067_u32, 795958831_u32, 2224493444_u32, 1408607827_u32, 3513301457_u32, 0_u32, 3979133421_u32, 543178784_u32, 4229948412_u32, 2982705585_u32, 1542305371_u32, 1790891114_u32, 3410398667_u32, 3201918910_u32, 961245753_u32, 1256100938_u32, 1289001036_u32, 1491644504_u32, 3477767631_u32, 3496721360_u32, 4012557807_u32, 2867154858_u32, 4212583931_u32, 1137018435_u32, 1305975373_u32, 861234739_u32, 2241073541_u32, 1171229253_u32, 4178635257_u32, 33948674_u32, 2139225727_u32, 1357946960_u32, 1011120188_u32, 2679776671_u32, 2833468328_u32, 1374921297_u32, 2751356323_u32, 1086357568_u32, 2408187279_u32, 2460827538_u32, 2646352285_u32, 944271416_u32, 4110742005_u32, 3168756668_u32, 3066132406_u32, 3665145818_u32, 560153121_u32, 271589392_u32, 4279952895_u32, 4077846003_u32, 3530407890_u32, 3444343245_u32, 202643468_u32, 322250259_u32, 3962553324_u32, 1608629855_u32, 2543990167_u32, 1154254916_u32, 389623319_u32, 3294073796_u32, 2817676711_u32, 2122513534_u32, 1028094525_u32, 1689045092_u32, 1575467613_u32, 422261273_u32, 1939203699_u32, 1621147744_u32, 2174228865_u32, 1339137615_u32, 3699352540_u32, 577127458_u32, 712922154_u32, 2427141008_u32, 2290289544_u32, 1187679302_u32, 3995715566_u32, 3100863416_u32, 339486740_u32, 3732514782_u32, 1591917662_u32, 186455563_u32, 3681988059_u32, 3762019296_u32, 844522546_u32, 978220090_u32, 169743370_u32, 1239126601_u32, 101321734_u32, 611076132_u32, 1558493276_u32, 3260915650_u32, 3547250131_u32, 2901361580_u32, 1655096418_u32, 2443721105_u32, 2510565781_u32, 3828863972_u32, 2039214713_u32, 3878868455_u32, 3359869896_u32, 928607799_u32, 1840765549_u32, 2374762893_u32, 3580146133_u32, 1322425422_u32, 2850048425_u32, 1823791212_u32, 1459268694_u32, 4094161908_u32, 3928346602_u32, 1706019429_u32, 2056189050_u32, 2934523822_u32, 135794696_u32, 3134549946_u32, 2022240376_u32, 628050469_u32, 779246638_u32, 472135708_u32, 2800834470_u32, 3032970164_u32, 3327236038_u32, 3894660072_u32, 3715932637_u32, 1956440180_u32, 522272287_u32, 1272813131_u32, 3185336765_u32, 2340818315_u32, 2323976074_u32, 1888542832_u32, 1044544574_u32, 3049550261_u32, 1722469478_u32, 1222152264_u32, 50660867_u32, 4127324150_u32, 236067854_u32, 1638122081_u32, 895445557_u32, 1475980887_u32, 3117443513_u32, 2257655686_u32, 3243809217_u32, 489110045_u32, 2662934430_u32, 3778599393_u32, 4162055160_u32, 2561878936_u32, 288563729_u32, 1773916777_u32, 3648039385_u32, 2391345038_u32, 2493985684_u32, 2612407707_u32, 505560094_u32, 2274497927_u32, 3911240169_u32, 3460925390_u32, 1442818645_u32, 678973480_u32, 3749357023_u32, 2358182796_u32, 2717407649_u32, 2306869641_u32, 219617805_u32, 3218761151_u32, 3862026214_u32, 1120306242_u32, 1756942440_u32, 1103331905_u32, 2578459033_u32, 762796589_u32, 252780047_u32, 2966125488_u32, 1425844308_u32, 3151392187_u32, 372911126_u32]
Te3 = StaticArray[1667474886_u32, 2088535288_u32, 2004326894_u32, 2071694838_u32, 4075949567_u32, 1802223062_u32, 1869591006_u32, 3318043793_u32, 808472672_u32, 16843522_u32, 1734846926_u32, 724270422_u32, 4278065639_u32, 3621216949_u32, 2880169549_u32, 1987484396_u32, 3402253711_u32, 2189597983_u32, 3385409673_u32, 2105378810_u32, 4210693615_u32, 1499065266_u32, 1195886990_u32, 4042263547_u32, 2913856577_u32, 3570689971_u32, 2728590687_u32, 2947541573_u32, 2627518243_u32, 2762274643_u32, 1920112356_u32, 3233831835_u32, 3082273397_u32, 4261223649_u32, 2475929149_u32, 640051788_u32, 909531756_u32, 1061110142_u32, 4160160501_u32, 3435941763_u32, 875846760_u32, 2779116625_u32, 3857003729_u32, 4059105529_u32, 1903268834_u32, 3638064043_u32, 825316194_u32, 353713962_u32, 67374088_u32, 3351728789_u32, 589522246_u32, 3284360861_u32, 404236336_u32, 2526454071_u32, 84217610_u32, 2593830191_u32, 117901582_u32, 303183396_u32, 2155911963_u32, 3806477791_u32, 3958056653_u32, 656894286_u32, 2998062463_u32, 1970642922_u32, 151591698_u32, 2206440989_u32, 741110872_u32, 437923380_u32, 454765878_u32, 1852748508_u32, 1515908788_u32, 2694904667_u32, 1381168804_u32, 993742198_u32, 3604373943_u32, 3014905469_u32, 690584402_u32, 3823320797_u32, 791638366_u32, 2223281939_u32, 1398011302_u32, 3520161977_u32, 0_u32, 3991743681_u32, 538992704_u32, 4244381667_u32, 2981218425_u32, 1532751286_u32, 1785380564_u32, 3419096717_u32, 3200178535_u32, 960056178_u32, 1246420628_u32, 1280103576_u32, 1482221744_u32, 3486468741_u32, 3503319995_u32, 4025428677_u32, 2863326543_u32, 4227536621_u32, 1128514950_u32, 1296947098_u32, 859002214_u32, 2240123921_u32, 1162203018_u32, 4193849577_u32, 33687044_u32, 2139062782_u32, 1347481760_u32, 1010582648_u32, 2678045221_u32, 2829640523_u32, 1364325282_u32, 2745433693_u32, 1077985408_u32, 2408548869_u32, 2459086143_u32, 2644360225_u32, 943212656_u32, 4126475505_u32, 3166494563_u32, 3065430391_u32, 3671750063_u32, 555836226_u32, 269496352_u32, 4294908645_u32, 4092792573_u32, 3537006015_u32, 3452783745_u32, 202118168_u32, 320025894_u32, 3974901699_u32, 1600119230_u32, 2543297077_u32, 1145359496_u32, 387397934_u32, 3301201811_u32, 2812801621_u32, 2122220284_u32, 1027426170_u32, 1684319432_u32, 1566435258_u32, 421079858_u32, 1936954854_u32, 1616945344_u32, 2172753945_u32, 1330631070_u32, 3705438115_u32, 572679748_u32, 707427924_u32, 2425400123_u32, 2290647819_u32, 1179044492_u32, 4008585671_u32, 3099120491_u32, 336870440_u32, 3739122087_u32, 1583276732_u32, 185277718_u32, 3688593069_u32, 3772791771_u32, 842159716_u32, 976899700_u32, 168435220_u32, 1229577106_u32, 101059084_u32, 606366792_u32, 1549591736_u32, 3267517855_u32, 3553849021_u32, 2897014595_u32, 1650632388_u32, 2442242105_u32, 2509612081_u32, 3840161747_u32, 2038008818_u32, 3890688725_u32, 3368567691_u32, 926374254_u32, 1835907034_u32, 2374863873_u32, 3587531953_u32, 1313788572_u32, 2846482505_u32, 1819063512_u32, 1448540844_u32, 4109633523_u32, 3941213647_u32, 1701162954_u32, 2054852340_u32, 2930698567_u32, 134748176_u32, 3132806511_u32, 2021165296_u32, 623210314_u32, 774795868_u32, 471606328_u32, 2795958615_u32, 3031746419_u32, 3334885783_u32, 3907527627_u32, 3722280097_u32, 1953799400_u32, 522133822_u32, 1263263126_u32, 3183336545_u32, 2341176845_u32, 2324333839_u32, 1886425312_u32, 1044267644_u32, 3048588401_u32, 1718004428_u32, 1212733584_u32, 50529542_u32, 4143317495_u32, 235803164_u32, 1633788866_u32, 892690282_u32, 1465383342_u32, 3115962473_u32, 2256965911_u32, 3250673817_u32, 488449850_u32, 2661202215_u32, 3789633753_u32, 4177007595_u32, 2560144171_u32, 286339874_u32, 1768537042_u32, 3654906025_u32, 2391705863_u32, 2492770099_u32, 2610673197_u32, 505291324_u32, 2273808917_u32, 3924369609_u32, 3469625735_u32, 1431699370_u32, 673740880_u32, 3755965093_u32, 2358021891_u32, 2711746649_u32, 2307489801_u32, 218961690_u32, 3217021541_u32, 3873845719_u32, 1111672452_u32, 1751693520_u32, 1094828930_u32, 2576986153_u32, 757954394_u32, 252645662_u32, 2964376443_u32, 1414855848_u32, 3149649517_u32, 370555436_u32]

Class Method Summary

Class Method Detail

def self.create_decryption_key(key : Bytes) : Slice(UInt32) #

Takes a 32 bit key and uses it to generate a 60 bit decryption key.


[View source]
def self.create_encryption_key(key : Bytes) : Slice(UInt32) #

Takes a 32 bit key and uses it to generate a 60 bit encryption key.


[View source]
def self.decrypt(data : Bytes, key : Indexable(UInt32)) : Bytes #

Decrypt a buffer using AES256.

data must be a non-empty buffer who's length is a multiple of 16 bytes. key must be a 60 byte encryption key.


[View source]
def self.encrypt(data : Bytes, key : Indexable(UInt32)) : Bytes #

Encrypt a buffer using AES256.

data must be a non-empty buffer who's length is a multiple of 16 bytes. key must be a 60 byte encryption key.


[View source]