-
Notifications
You must be signed in to change notification settings - Fork 18
/
test_indcpa.py
92 lines (77 loc) · 59.6 KB
/
test_indcpa.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from indcpa import pack_public_key, unpack_public_key, unpack_ciphertext, generate_uniform, generate_matrix, generate_prf_byte_array
unpack_pubkey_in1 = [17, 90, -50, 14, 100, 103, 124, -69, 125, -49, -55, 60, 22, -45, -93, 5, -10, 118, 21, -92, -120, -41, 17, -86, 86, 105, -116, 86, 99, -85, 122, -55, -50, 102, -43, 71, -64, 89, 95, -104, -92, 63, 70, 80, -69, -32, -116, 54, 77, -105, 103, -119, 17, 125, 52, -10, -82, 81, -84, 6, 60, -75, 92, 108, -93, 37, 88, 34, 125, -2, -8, 7, -47, -100, 48, -34, 65, 68, 36, 9, 127, 106, -94, 54, -95, 5, 59, 74, 7, -89, 107, -29, 114, -91, -58, -74, 0, 39, -111, -21, -32, -81, -38, -11, 78, 28, -94, 55, -1, 84, 91, -90, -125, 67, -25, 69, -64, 74, -47, 99, -99, -68, 89, 3, 70, -74, -71, 86, -101, 86, -37, -65, -27, 49, 81, -111, 48, 102, -27, -56, 85, 39, -36, -108, 104, 17, 10, 19, 106, 65, 20, -105, -62, 39, -36, -72, -55, -78, 85, 112, -73, -96, -28, 42, -83, -90, 112, -97, 35, 32, -113, 93, 73, 110, -70, -73, -124, 63, 100, -125, -65, 12, 12, 115, -92, 2, -106, -20, 44, 100, 64, 0, 19, -108, -55, -100, -95, 115, -43, -57, 117, -73, -12, 21, -48, 42, 90, 38, -96, 116, 7, -111, -123, -121, -60, 17, 105, -14, -73, 23, -121, 85, -84, -62, 127, -56, -79, -100, 76, 75, 63, -51, 65, 5, 63, 44, 116, -56, -95, 10, -125, 33, 36, 27, 40, 2, 67, 40, 117, -82, -128, -117, -98, -15, 54, 92, 123, -118, 82, -112, 47, 19, 23, -70, 47, -80, 38, -97, 71, -109, 6, 114, 16, 123, 71, 38, -2, -10, 69, 71, 57, 77, 51, 32, -56, -15, 32, -77, -62, -12, 114, 91, 3, 5, -6, -72, -116, -57, -104, 31, -53, 9, -89, 106, 28, -65, 127, 23, -97, 67, -69, 10, 76, -117, 5, -112, -123, 127, 30, 105, 112, -124, 102, -57, -8, 96, 115, -111, -25, -68, 82, 104, -65, -45, -41, -95, -33, -4, -76, -20, -94, -95, -55, -75, -105, 89, 48, 19, -43, -4, 66, 2, -20, 43, 116, -27, 122, -73, 107, -68, -13, 99, 43, -70, -7, 124, -36, 65, -118, 111, 22, 57, 40, 56, -54, -101, -12, 93, -33, 2, 55, 119, -73, 86, 24, 51, -63, 5, 25, 15, -108, -13, 2, -59, -101, 83, 25, 0, -69, -56, 22, 54, 31, -86, 91, 51, -128, -54, 58, -119, 49, 4, -54, 115, -120, -79, -123, 103, 27, 62, 95, -29, 121, 14, -102, 98, 110, -60, 109, -101, 11, 51, -57, -92, 25, -81, 123, 50, -74, -123, -104, -108, -11, 117, -40, 42, -59, 69, 107, 84, -112, -89, -81, -113, -26, 16, 70, 54, 5, -119, -20, -70, 114, 68, 35, 111, 65, 35, 17, 107, 97, 116, -86, 23, -110, 73, -92, -111, -107, -77, 86, -57, 47, -58, 100, 31, 2, 81, -127, 46, -86, -104, 87, 11, 4, 102, -103, 7, 14, 8, 25, -36, 39, 19, -12, 105, 19, 125, -4, 106, 61, 123, -110, -78, -104, -103, 94, -25, -128, 54, -111, 83, -84, 54, 107, 6, -41, 36, -100, -48, -98, 27, 51, 120, -5, 4, 57, -100, -20, -72, 101, 5, -127, -42, 55, -57, -102, -26, 125, 111, 44, -81, 106, -70, -49, 89, -127, 89, -89, 121, 44, -77, -55, 113, -47, 73, -99, 35, 115, -83, 32, -10, 63, 3, -69, 89, -19, 19, 115, -124, -84, 97, -89, 21, 81, 67, -72, -54, 73, 50, 97, 46, -55, 21, -28, -54, 52, 106, -101, -50, 93, -42, 4, 23, -58, -78, -88, -101, 28, -60, 53, 100, 63, -121, 91, -36, 90, 126, 91, 52, -127, -49, -111, -98, -96, -111, 114, -2, -68, 70, -44, -4, 63, -80, -53, -107, -111, 112, 78, -30, -37, -74, 24, 68, -78, -13, 49, 74, 6, -69, 108, 109, 52, 0, 94, 72, 92, -26, 103, -67, -57, -48, -104, 88, 105, 40, -46, -39, 19, 64, -16, 4, 25, -22, 64, 19, 81, -94, 64, -96, -80, 65, 5, -117, -17, -80, -62, -3, 50, 100, 91, 122, 45, -8, -11, -53, -3, -121, 51, 39, -55, 120, -41, -77, 81, -94, -128, -120, 67, -120, 55, 2, 76, 82, -71, -62, -107, -51, 113, 54, 70, -5, 93, 108, 12, -49, -76, 112, 115, 74, -62, -78, -68, -127, 35, -62, -63, 61, -10, -109, -114, -110, 69, 90, -122, 38, 57, -2, -72, -90, 75, -123, 22, 62, 50, 112, 126, 3, 123, 56, -40, -84, 57, 34, -76, 81, -121, -69, 101, -22, -3, 70, 95, -58, 74, 12, 95, -113, 63, -112, 3, 72, -108, 21, -119, -99, 89, -91, 67, -40, 32, -116, 84, -93, 22, 101, 41, -75, 57, 34]
unpack_pubkey_in_k1 = 2
unpack_pubkey_out1 = [
[2577, 3301, 1038, 1654, 2940, 2011, 2511, 972, 790, 2621, 1541, 1903, 1045, 2186, 471, 2721, 2390, 2246, 854, 2742, 2426, 3308, 1382, 1149, 2496, 1525, 1176, 1018, 70, 2997, 3296, 872, 1869, 1657, 393, 2001, 1588, 2799, 3153, 106, 1340, 1483, 876, 602, 600, 2002, 2302, 127, 3281, 777, 478, 1092, 2340, 2032, 618, 874, 1441, 944, 1866, 2672, 875, 1838, 1701, 2924, 1792, 2322, 235, 2814, 1498, 1263, 540, 890, 1279, 1461, 934, 1080, 1511, 3076, 330, 1597, 3229, 1435, 1539, 2916, 1721, 2485, 2902, 3069, 485, 1299, 145, 1635, 2277, 1372, 3111, 2381, 360, 161, 2579, 1046, 1812, 3113, 3111, 2957, 713, 1371, 1904, 2571, 2788, 2770, 166, 2551, 35, 2290, 2397, 1764, 1978, 2123, 1087, 2102, 3263, 192, 1139, 42, 3222, 718, 100, 4, 1043, 3225, 412, 1850, 2005, 1884, 1207, 351, 2768, 1442, 38, 1866, 263, 2137, 1159, 284, 617, 2943, 1815, 1368, 684, 2044, 456, 2507, 2892, 1012, 461, 84, 3135, 1858, 456, 170, 387, 578, 2075, 34, 2115, 1874, 174, 2232, 414, 879, 2908, 2215, 82, 761, 1811, 2977, 47, 619, 1951, 2356, 518, 263, 1915, 612, 1790, 1119, 2375, 1235, 51, 3202, 241, 2866, 1218, 1839, 859, 80, 2298, 2251, 2247, 505, 2507, 2672, 3178, 3057, 1919, 2545, 2883, 171, 2892, 88, 1424, 2040, 2334, 1798, 1668, 3190, 248, 1846, 1937, 3022, 2130, 3062, 2003, 2589, 3295, 2895, 748, 2586, 1481, 2427, 89, 307, 3285, 1071, 3074, 702, 1396, 1966, 2999, 3014, 1011, 694, 2490, 1999, 476, 2212, 1647, 913, 2088, 3235, 1179, 1503, 735, 880, 1911, 1387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[792, 3091, 2309, 241, 916, 47, 3013, 1337, 25, 2992, 1736, 865, 2591, 1466, 51, 3240, 2362, 792, 2564, 1852, 392, 2139, 2919, 993, 863, 1950, 2574, 1577, 1134, 1756, 2971, 816, 1223, 410, 2991, 807, 1462, 2440, 1428, 1887, 2776, 3154, 2885, 1350, 1936, 2810, 1679, 270, 1606, 83, 3209, 2990, 1138, 564, 367, 564, 2833, 1558, 2676, 378, 2450, 2628, 1425, 2873, 1878, 764, 1222, 502, 258, 2069, 2606, 2442, 2903, 64, 2406, 121, 2062, 400, 2012, 306, 2548, 310, 3197, 1711, 2877, 2343, 2226, 2457, 1886, 2062, 310, 1337, 1708, 1715, 1798, 589, 156, 2541, 795, 1923, 1275, 912, 3228, 2958, 1381, 2064, 2006, 3187, 1690, 2014, 3183, 2802, 2666, 3323, 345, 1432, 2471, 711, 2483, 1820, 2513, 2516, 803, 2775, 1568, 1023, 2819, 1435, 1005, 1841, 3204, 1562, 1447, 1297, 2115, 3243, 585, 1555, 2350, 348, 2788, 844, 2922, 3305, 1629, 77, 1559, 2860, 2984, 457, 1476, 1603, 1855, 1464, 2780, 2021, 1115, 2067, 463, 2537, 416, 1833, 3326, 1131, 3284, 1023, 2992, 2396, 145, 1255, 3042, 2925, 1048, 2852, 499, 1187, 2822, 1739, 1133, 3, 2142, 1476, 2022, 3030, 199, 2445, 2392, 646, 2514, 317, 64, 79, 2585, 1038, 275, 2597, 64, 2826, 1345, 2224, 239, 3115, 765, 1603, 2651, 727, 1528, 3263, 2045, 824, 2343, 1932, 983, 1307, 162, 2184, 2115, 888, 3074, 1316, 697, 2396, 461, 871, 2886, 1503, 3180, 3312, 180, 1847, 586, 2860, 444, 568, 450, 988, 1014, 2281, 1426, 1444, 1670, 914, 2302, 2667, 1355, 360, 574, 1795, 894, 1968, 2104, 2765, 569, 2882, 1873, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
unpack_pubkey_seed1 = [101, -22, -3, 70, 95, -58, 74, 12, 95, -113, 63, -112, 3, 72, -108, 21, -119, -99, 89, -91, 67, -40, 32, -116, 84, -93, 22, 101, 41, -75, 57, 34]
unpack_pubkey_in2 = [22, -23, 13, -95, 115, -108, 125, -75, 63, 18, 38, 99, 57, 1, 119, -5, 83, 118, -55, -84, 77, -48, 86, -118, -35, -122, -57, 123, -53, -114, 0, -74, 66, -46, 119, 109, -8, 9, 13, 7, 56, 23, 43, 65, -105, -70, -101, 54, 27, 22, -109, 78, 91, 101, -58, 118, -76, -48, 50, 52, 8, -126, 5, -7, -80, -127, 101, 82, 104, -6, -15, 90, 94, 4, -109, 51, -9, 22, -105, 18, 92, -20, -103, 67, 96, 74, -104, 70, 69, -112, -81, -69, 95, -118, -89, 70, -16, 2, 13, -124, 85, 7, 28, 91, -115, -102, -102, 125, -119, 76, 106, -97, -105, 56, 5, 10, -118, 32, -100, -83, 6, 22, 124, 11, 11, -75, 17, -11, 78, -122, 49, -101, 116, -5, -70, -79, -85, -122, -23, 85, -58, -115, -104, 50, 17, -15, 26, -87, -89, -117, -80, -7, 92, 68, 98, -119, -34, -94, -94, -42, -42, -57, -70, -10, 3, 1, -79, 99, 77, 107, -63, 21, 80, -58, 90, -80, -122, 84, -58, -86, -109, 101, -49, 71, -60, -117, -99, 117, 49, -111, -62, -71, -63, -62, 48, 75, 119, 44, -61, -119, 16, 18, -80, 11, 29, 121, 18, -103, 81, 100, -117, -93, -125, 70, -73, 78, -82, 25, -55, -48, -126, 83, 96, 27, 84, -109, 105, 88, -37, 64, -112, 103, -63, 59, -31, 90, 116, -39, 69, -64, -5, 99, 17, 94, -42, -72, 112, 87, 33, 17, 99, 82, -104, 103, 46, -74, 92, 91, 34, 50, 71, 8, -124, 60, 78, 98, 48, 105, -14, 15, 61, 83, -127, 57, -89, 0, -108, -10, 2, 87, -8, -92, -37, -30, 84, 25, 28, 89, -23, -94, 47, -118, -15, 65, 104, 32, 5, -56, 86, -121, -83, 69, -108, -101, 121, -49, -68, 103, 70, -88, -37, 33, 54, -60, 31, 18, 104, -112, 97, -125, 96, 25, 96, 63, -73, -87, -117, 103, 17, 43, 40, -84, 6, 84, 69, -62, 33, 108, -65, -72, 117, 112, 79, -47, -93, 109, 92, 95, 64, 103, -116, 34, -87, 112, 52, 2, 92, -59, -15, 86, 93, 73, -103, -47, 5, -76, -72, -86, 5, 1, 117, -127, -63, -59, 94, -52, 88, 57, -17, 102, 31, -107, 18, 26, 16, 55, 33, 40, -84, 30, 109, -75, -59, 24, 105, 122, 100, 20, 100, 75, -103, -75, -107, 104, 66, -52, -44, 82, 3, 25, 58, -92, -31, -80, 113, -68, 36, -102, -22, -118, -70, 113, 48, 57, -48, 42, -26, -7, -105, 28, 87, 29, 86, -25, 120, -12, 112, -116, -41, 20, 10, 14, 36, -64, -107, 40, 123, -97, 76, -86, -32, 59, 49, 66, -88, 84, 106, 122, 50, -40, 21, -77, 109, 122, 29, -112, 75, 59, 13, -52, 124, -82, 118, -110, 18, -63, 101, 75, -47, 10, 103, 73, 82, 90, -70, 70, -39, 4, 30, -45, -70, -110, 44, 64, -93, -29, 120, 57, -96, 3, -70, -88, -70, 91, 81, 98, 70, 18, 43, -99, 53, -78, -74, -72, 106, 51, -83, 44, -54, 29, -14, 37, -49, 43, -110, 97, 22, 22, -20, -110, 66, -51, 33, 95, -49, -29, 89, -24, -102, 90, 72, -122, 111, 17, -14, -105, -70, 37, 48, -57, -60, 112, 121, 12, 6, -88, 19, -104, 58, -42, 47, 73, -125, 93, -28, -119, 67, -101, 51, 57, 92, -41, -87, -58, 101, 21, 55, 121, 113, -18, -73, -59, 12, -15, 35, -22, 39, -54, 121, -87, 97, -112, -23, -82, 102, 80, 87, 116, 43, 56, -68, 92, -126, -57, -93, -121, 60, 106, 60, 35, 113, 91, 111, 102, 53, 18, 48, -95, -15, 38, 52, -75, -86, 45, 112, 70, 108, -86, 26, 98, -46, -108, -116, -108, 5, 78, 22, -29, 66, 18, -47, 86, -11, -43, -114, 43, -94, -95, -55, -90, -51, 117, -74, 116, -79, -80, 95, 67, 19, -110, -10, 1, -102, 113, -78, 35, -126, 104, -74, -50, 6, -89, 3, 114, 99, -110, 106, 91, -86, 4, -91, -124, 108, 98, -14, -58, -124, -62, 10, 108, 106, -64, -101, 98, -24, 39, 31, -100, 61, -105, 100, -121, -60, -92, 40, -119, 38, -99, -24, 115, 25, -21, 120, 44, -92, -48, -117, -54, 113, -72, 28, -22, -105, 32, 117, 74, -77, 83, -126, 86, 10, -118, -113, -16, 32, 55, 21, 31, 79, -69, 121, -52, -104, -93, -74, 67, 103, 85, -32, -72, -54, -72, 78, -49, 59, 101, -63, -109, -59, 125, 41, -123, 63, -104, 48, 60, 84, 24, 90, 36, -48, 22, -63, -86, -23, 40, -102, 0, 96, 119, -115, -72, 118, 73, -92, -61, 105, 33, 122, -127, 84, -18, 85, -40, 73, -83, -103, 40, -83, -43]
unpack_pubkey_in_k2 = 2
unpack_pubkey_out2 = [
[2326, 222, 929, 2375, 1405, 1019, 1554, 1586, 313, 1904, 1019, 1893, 3273, 1242, 1744, 2213, 1757, 3192, 2939, 2284, 1536, 1067, 2002, 1751, 2552, 208, 2055, 371, 299, 2420, 3002, 873, 1563, 2353, 2894, 1621, 1734, 2887, 720, 835, 520, 88, 249, 2075, 613, 1669, 506, 1455, 1118, 2352, 1843, 367, 663, 1473, 2540, 1081, 2656, 2436, 1350, 2308, 2991, 1531, 1930, 1130, 752, 208, 1412, 117, 2844, 2261, 2714, 2009, 3209, 1700, 1951, 905, 2565, 2208, 3104, 2777, 1542, 1985, 2827, 2896, 1297, 1263, 390, 2483, 2932, 2991, 2993, 2154, 1513, 3173, 2189, 809, 273, 431, 1961, 2234, 2480, 1487, 580, 2198, 734, 2602, 1750, 3197, 1722, 63, 257, 1595, 2893, 3094, 21, 3173, 90, 2155, 1620, 2732, 1427, 3318, 1095, 2236, 1437, 791, 657, 2972, 705, 780, 1867, 711, 2499, 264, 18, 187, 2333, 295, 409, 1605, 907, 2106, 1862, 1259, 2478, 3217, 720, 1336, 2912, 1345, 2451, 1414, 219, 2308, 359, 956, 2785, 1861, 1497, 3076, 1019, 278, 1630, 2957, 1904, 533, 785, 1318, 1944, 742, 3254, 1461, 546, 1139, 1032, 968, 590, 774, 617, 255, 829, 2069, 1849, 10, 1684, 47, 2135, 2639, 731, 1358, 3097, 1425, 745, 762, 394, 1055, 104, 82, 1736, 2165, 1453, 2372, 2459, 3319, 1980, 1126, 2984, 541, 1078, 508, 2066, 2310, 865, 1544, 25, 1014, 2487, 2234, 359, 689, 3112, 106, 1364, 3108, 3105, 3062, 1464, 1799, 335, 2621, 3181, 1525, 1856, 2246, 2338, 1802, 564, 1472, 453, 1391, 2397, 2452, 1489, 2880, 2744, 90, 1281, 2071, 1473, 1516, 2252, 917, 1775, 502, 661, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1808, 531, 3112, 490, 1389, 3163, 2328, 1958, 1124, 1601, 2379, 2905, 2197, 1062, 1228, 1325, 2307, 929, 420, 2830, 3185, 587, 2714, 2222, 442, 775, 57, 685, 2534, 2431, 1820, 469, 1878, 1934, 244, 2247, 1239, 161, 1038, 3074, 2197, 1970, 3231, 2724, 3040, 787, 2114, 1354, 2666, 807, 1496, 2865, 2669, 471, 2960, 948, 3085, 1996, 1710, 2343, 274, 1628, 331, 173, 2407, 1316, 2650, 1131, 1241, 480, 2771, 2347, 44, 2612, 2275, 919, 928, 2976, 2728, 1467, 593, 1126, 2834, 2514, 565, 2923, 2744, 822, 3245, 3234, 541, 607, 3023, 2338, 1633, 353, 748, 1065, 461, 1522, 975, 1438, 2792, 1449, 1608, 1784, 529, 2431, 1466, 770, 1223, 1804, 3193, 96, 936, 2433, 1594, 765, 841, 1496, 2532, 1080, 923, 915, 1884, 2717, 1478, 342, 2359, 1815, 2030, 3163, 268, 575, 2026, 3234, 2425, 1562, 2448, 2798, 102, 1397, 2932, 898, 3260, 2085, 967, 2170, 2620, 966, 291, 1463, 1647, 854, 18, 2579, 1777, 834, 2741, 730, 1648, 1732, 2730, 1569, 1234, 2249, 1428, 1248, 790, 1070, 274, 1389, 1525, 2285, 555, 2586, 1737, 3290, 1653, 1867, 177, 1531, 835, 2337, 502, 2464, 625, 571, 2178, 2918, 1742, 2672, 515, 1591, 2706, 1462, 1194, 2640, 3204, 1574, 1778, 2124, 2754, 1728, 106, 2492, 2146, 638, 3103, 985, 1175, 2166, 1220, 650, 1673, 2514, 1000, 407, 2283, 711, 164, 2237, 458, 2951, 2588, 2430, 1312, 1191, 947, 2085, 2646, 2208, 143, 527, 1335, 497, 2895, 1947, 2252, 2617, 950, 1652, 85, 2958, 2250, 1259, 3023, 1619, 961, 3161, 2429, 2130, 2111, 777, 1084, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
unpack_pubkey_seed2 = [90, 36, -48, 22, -63, -86, -23, 40, -102, 0, 96, 119, -115, -72, 118, 73, -92, -61, 105, 33, 122, -127, 84, -18, 85, -40, 73, -83, -103, 40, -83, -43]
assert(unpack_public_key(unpack_pubkey_in1, unpack_pubkey_in_k1) == (unpack_pubkey_out1, unpack_pubkey_seed1))
assert(unpack_public_key(unpack_pubkey_in2, unpack_pubkey_in_k2) == (unpack_pubkey_out2, unpack_pubkey_seed2))
unpack_cipher_in1 = [-19, -14, 65, 69, -28, 59, 79, 109, -58, -65, -125, 50, -11, 78, 2, -54, -80, 45, -65, 59, 86, 5, -35, -55, 10, 21, -56, -122, -83, 62, -44, -119, 70, 38, -103, -28, -85, -19, 68, 53, 11, -61, 117, 126, 38, -106, -5, -5, 37, 52, 65, 46, -115, -46, 1, -15, -28, 84, 10, 57, 112, -80, 85, -2, 59, 11, -20, 58, 113, -7, -31, 21, -77, -7, -13, -111, 2, 6, 91, 28, -54, -125, 20, -36, -57, -107, -29, -64, -24, -6, -104, -18, -125, -54, 102, 40, 69, 112, 40, -92, -48, -98, -125, -98, 85, 72, 98, -49, 11, 123, -11, 108, 92, 10, -126, -98, -122, 87, -108, 121, 69, -2, -100, 34, 86, 79, -70, -21, -63, -77, -81, 53, 13, 121, 85, 80, -118, 38, -40, -88, -21, 84, 123, -117, 26, 44, -16, 60, -54, 26, -85, -50, 108, 52, -105, 120, 59, 100, 101, -70, 11, 110, 122, -53, -88, 33, 25, 81, 36, -82, -16, -98, 98, -125, -126, -95, -7, 20, 4, 59, -25, 9, 110, -107, 44, -68, 79, -76, -81, -19, 19, 96, -112, 70, 17, 124, 1, 31, -41, 65, -18, 40, 108, -125, 119, 22, -112, -16, -82, -75, 13, -96, -41, 18, -123, -95, 121, -78, 21, -58, 3, 109, -21, 120, 15, 77, 22, 118, -97, 114, -34, 22, -3, -83, -84, 115, -66, -6, 91, -17, -119, 67, 25, 127, 68, -59, -107, -119, -36, -97, 73, 115, -34, 20, 80, -70, 29, 12, 50, -112, -42, -79, -42, -125, -14, -108, -25, 89, -55, 84, -85, -24, -89, -38, 91, 16, 84, -3, 109, 33, 50, -101, -114, 115, -45, 117, 106, -3, -96, -36, -79, -4, -117, 21, -126, -47, -7, 12, -14, 117, -95, 2, -85, -58, -84, 105, -99, -16, -59, -121, 14, 80, -95, -7, -119, -28, -26, 36, 27, 96, -86, -94, -20, -7, -24, -29, 62, 15, -4, -12, 15, -24, 49, -24, -3, -62, -24, 59, 82, -54, 122, -74, -39, 63, 20, 109, 41, -36, -91, 60, 125, -95, -37, 74, -60, -14, -37, 57, -22, 18, 13, -112, -6, 96, -12, -44, 55, -58, -48, 14, -12, -125, -68, -108, -93, 23, 92, -38, 22, 63, -63, -62, -126, -117, -28, -37, -42, 67, 5, 7, -75, -124, -69, 81, 119, -31, 113, -72, -35, -87, -92, 41, 60, 50, 0, 41, 92, -128, 58, -122, 93, 109, 33, 102, -10, 107, -91, 64, 31, -73, -96, -24, 83, 22, -122, 0, -94, -108, -124, 55, -32, 54, -29, -65, 25, -31, 47, -45, -14, -94, -72, -77, 67, -9, -124, 36, -114, -115, 104, 94, -80, -81, -34, 99, 21, 51, -121, 48, -25, -95, 0, 28, 39, -40, -46, -89, 111, -90, -99, 21, 123, -95, -84, 122, -43, 109, -91, -88, -57, 15, -28, -75, -72, -41, -122, -36, 111, -64, 86, 107, -88, -31, -72, -127, 99, 52, -45, 42, 63, -79, -50, 125, 77, 94, 76, 51, 42, -9, -80, 3, -48, -111, 116, 26, 61, 92, -106, 82, -110, 37, 93, -1, -114, -46, -69, -15, -7, 17, 107, -27, 12, 23, -72, -27, 72, 116, -118, -44, -78, -23, 87, -69, -47, -107, 52, -126, -94, -31, 113, -116, -20, 102, -51, 44, -127, -11, 114, -43, 82, -73, 24, 120, -123, -26, -72, -108, 61, 100, 49, 65, 60, 89, -21, -73, -32, 54, 4, -124, -112, -66, 82, -119, -23, 91, 32, -88, -98, -117, 21, -97, 97, -87, -87, -120, 110, 20, 117, 104, -12, -55, 2, 31, 54, 47, 2, 104, -118, 28, -116, 59, -80, -46, 64, -122, -120, 14, 85, -74, -19, -76, 63, 55, 69, -46, -63, 102, -36, 28, -73, 67, -57, 111, -26, -66, 82, 58, -119, 60, -57, 100, -47, 100, 53, -61, 120, 81, 37, 42, -127, -30, -1, -70, 15, 24, -105, 26, 61, -18, 55, -44, -121, 124, -71, 40, -29, 110, 82, 53, 3, 122, 107, 32, 87, -119, 125, 81, -118, 95, 14, 52, -114, 58, -74, -43, -75, 45, -4, 96, 117, 127, 59, 65, -92, -2, -57, -126, -113, 29, -18, -81, 69, -121, -52, -56, -22, -33, 100, 127, 77, 32, 59, 47, -86, 5, -90, 73, -75, -126, 52, 12, -76, -54, -50, 87, -93, 7, 17, -66, 117, 47, -84, -16, 34, 125, 10, -128, -60, 18, -124, 66, -35, -59, 68, -66, -128, 91, -100, -2, -113, -23, -79, 35, 124, -128, -7, 103, -121, -51, -110, -127, -52, -14, 112, -63, -81, -64, 103, 13]
unpack_cipher_in1_k = 2
unpack_cipher_out1_bpc = [
[2435, 403, 273, 2968, 2689, 2767, 332, 2493, 2090, 1079, 777, 29, 657, 2848, 3283, 774, 1112, 2708, 510, 140, 68, 1411, 2367, 813, 1521, 1359, 1990, 1990, 3238, 2841, 254, 692, 2533, 1196, 3248, 497, 2984, 2490, 1973, 676, 1876, 2741, 962, 23, 783, 1018, 536, 741, 364, 1183, 3241, 777, 36, 2272, 2559, 3241, 1564, 640, 3001, 3170, 2136, 1248, 1404, 367, 3153, 936, 1460, 2598, 2981, 182, 2120, 3261, 2159, 816, 546, 1336, 962, 55, 2103, 2133, 2341, 751, 1586, 1112, 1899, 3199, 611, 1599, 796, 2585, 536, 1691, 2178, 1564, 1057, 1580, 1889, 2702, 1798, 1118, 1921, 2438, 98, 2337, 1401, 2747, 2965, 1109, 1925, 1359, 1255, 2194, 764, 2357, 595, 345, 143, 2692, 530, 348, 2220, 2663, 2724, 1964, 2887, 878, 1944, 2422, 1700, 2168, 595, 2194, 940, 228, 1889, 2263, 2445, 543, 176, 1697, 1356, 1034, 211, 767, 1583, 2919, 1112, 579, 3108, 894, 2480, 3088, 62, 78, 341, 224, 1235, 3121, 1200, 855, 774, 2529, 176, 1554, 72, 117, 2441, 2360, 42, 1586, 979, 1730, 1356, 514, 1128, 2575, 842, 2376, 2958, 198, 1915, 1265, 1635, 1489, 2386, 2721, 2389, 2243, 2038, 2233, 1453, 3111, 2942, 1925, 3280, 888, 1473, 1993, 1482, 2077, 2734, 3004, 1083, 1040, 1437, 2520, 2601, 1873, 1528, 1391, 198, 3153, 2978, 2058, 484, 1102, 556, 1645, 1385, 1193, 52, 2773, 2389, 432, 2659, 3036, 2679, 2747, 2045, 2789, 1713, 2867, 575, 2493, 1118, 1691, 1512, 2698, 2601, 1531, 2188, 2289, 345, 2246, 1174, 127, 309, 1765, 46, 273, 2997, 1791, 2406, 1018, 1411, 1248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2217, 2627, 3010, 3027, 2402, 3170, 3121, 3183, 49, 397, 2090, 3300, 631, 2477, 946, 2630, 2061, 2019, 3319, 260, 1187, 2529, 1967, 787, 1239, 2419, 562, 2552, 3283, 2048, 2194, 244, 42, 2198, 1713, 3176, 3186, 1291, 871, 192, 3290, 2601, 1076, 2126, 75, 2155, 1187, 819, 2292, 572, 598, 2971, 2376, 796, 273, 91, 588, 2396, 920, 1551, 1564, 1756, 1544, 2207, 1365, 2529, 2611, 0, 133, 75, 3043, 1743, 1135, 296, 1983, 3202, 1180, 133, 1625, 2380, 520, 813, 1161, 1743, 1665, 962, 237, 722, 2393, 666, 3322, 332, 3228, 660, 2643, 2116, 3095, 767, 2874, 1726, 1782, 2819, 2107, 1226, 3069, 3053, 1863, 276, 2663, 107, 2038, 2103, 0, 1479, 1255, 2741, 3040, 1336, 1541, 280, 1232, 2627, 3049, 2773, 1187, 1798, 397, 205, 1573, 1811, 1232, 1752, 3212, 88, 1183, 1395, 1378, 1847, 88, 1294, 2666, 2250, 3283, 2302, 1502, 2806, 1573, 992, 1830, 1489, 2546, 46, 1508, 949, 1375, 793, 1964, 536, 953, 488, 2799, 3118, 962, 2441, 1616, 410, 2240, 2981, 2536, 1681, 1960, 946, 2042, 943, 2643, 3036, 2780, 358, 1135, 683, 2087, 338, 2594, 1824, 2432, 2786, 2328, 1678, 2461, 1131, 979, 2383, 78, 1138, 2003, 2402, 1313, 881, 2568, 845, 1027, 2360, 2906, 2919, 176, 836, 858, 2477, 1099, 1983, 1450, 419, 2211, 2415, 1118, 2068, 1148, 2009, 449, 1437, 897, 1759, 2724, 2624, 2503, 1271, 2454, 26, 2003, 2607, 627, 774, 2237, 169, 325, 1775, 878, 1317, 2376, 2350, 2702, 1083, 949, 2520, 332, 2676, 2864, 878, 3144, 1336, 3270, 1073, 1021, 2607, 374, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
unpack_cipher_out1_v = [208, 2705, 832, 1248, 1040, 624, 624, 2497, 1665, 1456, 208, 1040, 1040, 416, 2081, 416, 208, 1665, 416, 2913, 3121, 3121, 2081, 2289, 3121, 0, 1665, 208, 1456, 1873, 2081, 208, 2705, 624, 2913, 2913, 1456, 624, 832, 2705, 1456, 1665, 2497, 1456, 1873, 2289, 1665, 416, 624, 2913, 2913, 1248, 416, 1040, 1040, 624, 624, 0, 2081, 1456, 2289, 1248, 0, 416, 1456, 1040, 1873, 1665, 2705, 1456, 208, 1040, 2081, 1665, 3121, 1040, 2913, 0, 832, 624, 2913, 1665, 2081, 624, 1248, 2289, 1040, 2705, 1040, 2289, 2705, 416, 2497, 3121, 0, 1248, 1040, 1456, 3121, 1456, 2289, 624, 208, 832, 832, 2081, 2913, 3121, 1456, 2497, 416, 1665, 3121, 1665, 2705, 208, 2913, 2913, 3121, 2081, 1040, 832, 1456, 1665, 2497, 2497, 1665, 2497, 2081, 2913, 3121, 2705, 832, 1248, 3121, 1456, 2705, 832, 0, 416, 2289, 624, 3121, 416, 2081, 2081, 1040, 0, 1248, 2081, 1873, 832, 1040, 2289, 416, 1665, 832, 624, 2497, 0, 832, 2289, 2081, 2497, 2913, 2497, 1456, 1040, 624, 2081, 1456, 0, 208, 208, 2913, 2289, 1040, 1456, 3121, 416, 2497, 2081, 0, 3121, 416, 416, 2705, 1456, 2081, 0, 0, 1665, 832, 2497, 416, 208, 832, 1665, 416, 832, 2705, 2705, 1040, 2497, 832, 832, 2913, 2289, 0, 1665, 2289, 1040, 2497, 1873, 2913, 3121, 3121, 1665, 1873, 2913, 208, 2289, 624, 416, 2497, 1456, 0, 1665, 1873, 3121, 1456, 1248, 1456, 1665, 2705, 2497, 416, 1873, 208, 1665, 2497, 2497, 416, 3121, 0, 1456, 208, 2497, 3121, 2081, 0, 2497, 1456, 1248, 2705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
unpack_cipher_in2 = [21, -39, 10, -58, -7, -92, 18, -123, -43, -38, -44, -43, -79, -23, -32, -6, 99, -118, 86, 79, 124, 23, -111, -106, -15, -34, -39, 122, 88, 36, 108, -73, -88, 78, 67, 113, -6, -31, 33, -87, 45, -56, -126, -71, 63, -61, -32, 101, 6, 21, 116, 43, 81, 58, 72, 69, -81, 49, 55, 98, 121, -38, 73, -106, -102, -109, -102, -63, 19, 125, -110, 53, 85, -102, 48, 40, -89, 38, 62, -30, 8, 64, -42, 32, 91, -83, 55, -91, 62, -18, 41, 13, -36, 76, -47, -116, -62, -6, 94, -12, -118, 49, 39, 86, -97, -68, -55, -22, -58, -44, -20, -8, -22, 26, -1, -75, 88, -98, 113, -119, 94, -44, 127, 123, -51, -3, 93, 107, 118, 32, -32, 55, 29, 101, -47, -52, -29, 51, -83, 28, 116, 126, 18, -59, -38, 93, 5, -9, -115, -55, 2, 121, 47, 117, -111, -57, 119, 98, -1, -76, 15, -125, 80, -64, -115, -7, -4, 121, 95, -40, -38, 35, -126, 68, -26, 13, -103, -81, -97, 79, 98, -36, 124, -52, 87, 4, -28, -97, -74, -54, -128, 95, -32, 61, -12, 32, 13, 94, 63, -98, -7, 60, -108, -125, 17, 27, 77, 7, 72, 22, 112, 94, 63, 9, -125, 36, -39, -6, 91, -52, -124, -22, -97, -26, -128, 78, -121, -94, 40, 57, 11, 108, 8, -75, 39, 97, -75, -9, -111, 47, -17, 62, 25, 108, 44, -95, -28, -102, -84, -34, 46, -26, 35, -78, 127, -57, -122, 22, 70, -8, -29, 69, -58, 44, -78, -118, -128, 5, -60, 54, -2, -20, -63, 31, -119, 97, -128, -121, 113, 92, 92, -29, -62, -115, -125, -77, -116, -53, 92, 107, -122, -45, -48, 14, 56, 74, 19, 73, 44, -113, 56, 125, 3, 25, -19, 21, -3, -108, 46, 103, -36, -83, 98, 75, 85, -40, -121, 10, -116, 13, 3, -105, -93, -56, 95, 107, -65, 9, -37, -11, -110, 83, -2, -43, -84, -99, -89, -82, 88, -41, -57, -14, 102, -96, 42, 1, 125, -88, 102, -39, 48, 58, -50, 60, 88, 112, -74, 56, 11, -82, -86, 91, -117, 101, 60, 74, 85, 109, -88, 74, -75, -112, 12, 26, -87, -122, 66, 12, -89, -29, -58, -125, 45, -2, 36, -82, 3, 76, 122, -20, 120, 95, 83, -19, -77, 5, 28, -89, 74, -86, -15, -95, -103, 105, 7, -118, -49, 123, 36, -43, -117, 34, -66, 87, 23, 86, -52, -43, -114, 29, 45, 43, -98, 44, -121, -125, -121, 107, -72, 124, 114, 83, 76, 97, 8, -57, 21, -89, 106, -103, -26, 121, 46, 109, 54, 66, -27, 93, -84, 38, 15, -117, -55, 123, 88, 12, 82, 99, -69, -92, 106, 104, -120, -76, 84, 109, -54, 79, -71, -55, 103, 53, 108, 101, 12, -17, 42, -86, -14, -49, -30, 122, -54, 63, -21, 86, -69, -128, -33, 117, -74, 114, 93, -10, -79, 96, -2, 45, -2, -35, -20, -35, -115, -97, -3, -65, 39, -73, 76, -53, 25, -13, -61, 114, -42, 106, 115, -79, 73, -90, -60, 4, -109, -39, 94, 118, -73, 66, -35, 44, 89, -30, 92, 25, -70, -19, 67, -24, -115, 103, -84, 63, -26, -75, 17, 66, 73, 65, -7, -46, -126, -88, 60, 59, -54, 8, -46, -33, 97, -68, -76, -8, -1, 71, -88, 7, -117, -31, 27, -121, -91, -27, 23, 24, -61, 41, -31, -112, -56, 60, -23, -69, 57, 72, -80, 62, -117, -100, -33, -126, -126, 34, 94, 109, 73, -35, -46, 114, -102, -23, 41, -40, 97, -111, -47, 48, 1, -13, 37, -108, 103, 56, 109, 115, 9, 57, 32, -88, -123, 17, -73, -50, -84, 52, 58, 5, -71, 76, -45, -71, 88, 94, 103, -41, -73, -50, 14, -104, -66, -98, 60, 116, 126, 79, 25, -73, 70, 82, 125, -96, 81, -27, 45, -6, -126, 45, 20, 118, -76, 5, 84, -120, 91, -23, 109, -31, -117, 96, -67, -13, 46, -121, 68, 66, -117, 95, -70, -2, 61, -8, 13, -92, -80, 64, -115, -126, 7, 70, -35, -114, 18, 36, 102, -52, -109, -46, -62, -32, -89, -121, 126, 82, 16, -112, -35, -125, 95, -122, 0, -38, -7, 22, -48, -120, 48, 25, 6, -10, -82, -83, 122, 45, -16, -123, 67, -76, -19, -112, 112, -93, -27, 91, 16, -18, 27, -21, -6, -38, 28, 13, 27, 48, -61, -30, -22, -57, -111, 48, 78, -70, 74, 51, 84, 90, 17, 80, 4, 5, -42, -55, -64, -72, 93, 94, -54, 99, 120, 1]
unpack_cipher_in2_k = 2
unpack_cipher_out2_bpc = [
[901, 2256, 312, 3248, 2198, 1053, 1118, 2845, 1521, 380, 2168, 2923, 3309, 2159, 1170, 1031, 2900, 224, 1174, 3140, 1554, 2256, 1271, 471, 2848, 1811, 761, 875, 2032, 410, 1762, 2198, 146, 579, 2991, 826, 634, 1222, 332, 273, 2874, 241, 3033, 936, 2721, 348, 2871, 1274, 2058, 2048, 1157, 2009, 2142, 332, 1027, 1625, 1307, 1083, 1369, 631, 2627, 1382, 3231, 2939, 26, 1300, 1707, 1183, 3059, 1083, 3257, 3095, 966, 2507, 666, 2721, 2120, 2237, 1609, 3176, 1281, 1495, 1151, 2071, 1443, 2243, 358, 2767, 767, 2282, 1398, 3316, 588, 2984, 2578, 1785, 306, 3293, 3092, 2669, 1655, 2363, 2828, 419, 3225, 2747, 1928, 2721, 3160, 806, 2350, 371, 2042, 517, 263, 2845, 1135, 1460, 725, 2620, 839, 3218, 2763, 1889, 3144, 510, 3296, 2350, 2546, 104, 16, 1843, 809, 2077, 1635, 2812, 3205, 442, 234, 2994, 875, 3244, 1645, 1034, 319, 2676, 647, 1141, 13, 3306, 2838, 2633, 2913, 75, 3218, 3173, 936, 2923, 3293, 2055, 809, 881, 185, 228, 920, 1518, 416, 289, 2029, 3196, 478, 1704, 949, 2256, 1453, 2656, 2094, 3309, 2006, 1674, 2750, 523, 2113, 741, 36, 1752, 2757, 514, 1148, 1603, 933, 618, 2441, 1921, 2292, 575, 523, 2266, 2318, 2893, 1814, 809, 2607, 1658, 2311, 1356, 315, 3228, 1570, 1304, 2328, 2315, 449, 1144, 208, 712, 826, 400, 1651, 1782, 315, 1560, 2575, 1200, 2796, 598, 715, 1710, 582, 2402, 1495, 1395, 2932, 169, 770, 728, 2737, 1886, 2302, 1860, 1014, 725, 1300, 3082, 901, 1037, 2422, 1339, 1547, 556, 592, 1109, 3199, 2188, 624, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2507, 744, 449, 1245, 2845, 2025, 1404, 3196, 2971, 2978, 1141, 2246, 3007, 3046, 1281, 2799, 2311, 1443, 1684, 553, 836, 1765, 2009, 2825, 1821, 2958, 3160, 1144, 2029, 1811, 582, 2263, 3049, 2360, 1951, 783, 1073, 2773, 2100, 969, 588, 2614, 1352, 2198, 2100, 2549, 2029, 2958, 3140, 2809, 3231, 478, 3062, 2497, 3030, 3072, 2887, 699, 2357, 2337, 16, 1479, 553, 2214, 1616, 2003, 2162, 94, 2945, 2454, 1895, 2770, 2116, 2939, 1232, 302, 280, 1206, 770, 384, 2643, 2945, 2318, 1756, 2923, 2396, 2932, 1619, 2867, 2562, 1730, 107, 1479, 1473, 2217, 1993, 1580, 3010, 2347, 705, 1047, 2890, 2305, 501, 2546, 1983, 3108, 1148, 1704, 689, 3088, 2139, 345, 1749, 2731, 1099, 2019, 3283, 2978, 2620, 1167, 2539, 1944, 159, 2441, 2113, 2633, 2702, 2399, 2178, 3316, 3056, 2776, 150, 1638, 1531, 2256, 2796, 2825, 2311, 1977, 2910, 3231, 2884, 1599, 2884, 1638, 3296, 3118, 1486, 660, 2643, 2578, 819, 2640, 2786, 2841, 299, 504, 2162, 637, 627, 1330, 1232, 2880, 562, 1521, 582, 1954, 2679, 1317, 2419, 3267, 1717, 722, 1346, 3056, 1297, 2802, 228, 1047, 267, 2978, 2741, 423, 2633, 3079, 2627, 1691, 3290, 1759, 2448, 585, 3322, 413, 2188, 2520, 319, 1450, 1756, 1369, 1642, 1252, 2536, 966, 182, 445, 790, 3254, 2022, 426, 2292, 2698, 2607, 1642, 1700, 2087, 2939, 2357, 953, 2383, 585, 1375, 3036, 133, 384, 904, 2724, 988, 624, 1973, 1925, 335, 2750, 2672, 120, 185, 1691, 293, 228, 2259, 2663, 2737, 754, 849, 2646, 1001, 2415, 1951, 1531, 1216, 2389, 2334, 1674, 3254, 2061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
unpack_cipher_out2_v = [2497, 624, 832, 1456, 2913, 1456, 3121, 832, 1873, 208, 1456, 2289, 1248, 832, 416, 1040, 2705, 1456, 0, 2081, 208, 1040, 1040, 2913, 2705, 416, 2081, 3121, 416, 1665, 2705, 416, 832, 208, 1248, 1456, 832, 2289, 1040, 0, 832, 1040, 1665, 1665, 2289, 1040, 1873, 2913, 2705, 1248, 208, 2913, 2289, 1665, 0, 1248, 2705, 2289, 624, 3121, 2913, 416, 1456, 1665, 832, 832, 416, 832, 2289, 1665, 3121, 1040, 2081, 2289, 2913, 3121, 2705, 624, 1665, 3121, 2705, 0, 832, 2081, 0, 2289, 0, 832, 2705, 1665, 416, 1665, 1456, 0, 1248, 832, 2705, 2705, 2913, 1665, 416, 208, 832, 416, 1248, 1248, 2497, 2497, 624, 1873, 416, 2705, 416, 2497, 0, 2913, 1456, 2081, 1456, 1665, 2913, 1456, 416, 1040, 0, 208, 0, 1873, 2705, 2705, 624, 1665, 3121, 1040, 1248, 1665, 0, 0, 2081, 2705, 1873, 3121, 1248, 208, 0, 2705, 1665, 1665, 0, 624, 1873, 208, 1248, 0, 1248, 3121, 2913, 2081, 2705, 2081, 2081, 1456, 2705, 416, 0, 3121, 1040, 1665, 624, 832, 832, 2289, 2705, 2913, 0, 1873, 0, 1456, 624, 2081, 1040, 2913, 2289, 1040, 0, 208, 2913, 2913, 2289, 208, 2289, 2913, 2081, 3121, 2081, 2705, 2497, 208, 2705, 0, 2289, 208, 0, 624, 624, 2497, 416, 2913, 2081, 2913, 1456, 2497, 208, 1873, 0, 624, 2913, 832, 2081, 2289, 2081, 832, 624, 624, 832, 1040, 2081, 1040, 208, 208, 0, 1040, 832, 0, 1040, 0, 1248, 2705, 1873, 2497, 0, 2497, 1665, 2289, 2705, 1040, 2913, 1040, 2081, 2497, 624, 1248, 1665, 1456, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
assert(unpack_ciphertext(unpack_cipher_in1, unpack_cipher_in1_k) == (unpack_cipher_out1_bpc, unpack_cipher_out1_v))
assert(unpack_ciphertext(unpack_cipher_in2, unpack_cipher_in2_k) == (unpack_cipher_out2_bpc, unpack_cipher_out2_v))
uniform_random_byte_buf_in1 = [-30, -32, 18, 109, -22, -66, 112, -20, 10, -43, -51, -107, -75, 72, -63, 74, 8, -55, 93, 44, 6, 95, 120, 79, 60, -30, -118, 111, 88, 50, -18, 109, 48, 96, -38, 12, -100, -20, 76, 49, -77, 73, 27, 64, -22, -111, -61, 88, -21, -80, 106, -100, 109, 72, 51, 62, -62, -116, -21, -58, -117, -117, -86, -52, -19, -90, -103, -105, 3, 66, -127, 85, 107, -23, 17, 74, 34, 29, -115, -95, 16, 116, -101, -39, 102, 50, 53, 31, 69, -122, -58, -113, 85, -119, -22, -86, -84, -85, -119, -116, -58, 31, -62, 49, -14, 91, 17, -55, -85, -44, 103, 115, 20, -54, 7, 63, 56, 69, -17, -96, 15, 95, -104, -102, -113, -39, 2, -25, 2, -85, -63, -111, -2, 90, -33, 12, 81, -68, 4, 98, -38, 64, 7, -49, -62, 61, 47, 15, -62, -46, 33, -88, -99, 120, 106, 114, -107, 103, 33, -72, 24, -65, 32, -67, 83, -12, 44, 28, 106, -84, 2, 58, 118, 56, -61, 46, 29, -38, 38, -42, -68, 70, 6, 120, -5, 11, -2, 54, -125, 44, -18, 12, 109, 21, 19, 15, 7, -9, 101, 55, 32, -89, -54, 105, 73, 19, -5, -37, -97, 126, 23, 68, -44, -42, -108, -39, -20, 62, -91, 65, 36, 48, 21, -31, -43, 15, -34, 58, 30, 104, 56, 34, 22, -37, 97, -112, 45, -91, 64, -59, -80, -90, -56, 10, 31, -38, 110, 22, -108, -8, -49, 41, -41, 53, 2, -123, -11, -112, 11, 40, 11, -76, 64, -92, -39, -87, -49, -128, -52, -79, 73, -62, 65, 83, 92, -64, -45, 53, 2, -128, -97, -101, -28, 94, 32, -80, -35, 102, 96, -71, -92, 54, -102, -39, 78, -21, 108, 75, 112, 60, -117, -35, 17, 91, -76, -18, -119, 84, 114, -110, 71, 39, -84, -17, 127, 0, -86, -89, -21, -123, -82, 62, 121, 110, -36, -36, 62, -119, -63, -39, -53, -2, 92, -80, -7, -84, 91, -54, 111, 45, 21, 59, 2, 91, 45, -12, 22, -104, -35, -117, 81, 42, 68, -123, -85, -122, 4, 124, 100, 80, 126, 8, -108, 91, -88, 62, 21, -48, 53, 105, -127, -61, -108, -97, -23, 54, 101, 48, -57, 116, 83, -128, 45, -121, -71, 95, 39, 106, 0, 67, 37, 17, -112, -96, -20, 47, 34, -15, 112, -89, -79, -86, 98, -23, -103, -20, -98, -105, 82, -16, 1, 35, -56, -39, -81, -55, 106, -75, -89, -48, 16, -85, 77, -6, -28, 53, 0, 74, -98, -63, 66, 17, -59, 46, -114, -78, -59, -109, -109, -28, 92, 13, -61, -61, 64, -48, -79, 0, -45, 41, -101, 89, -103, -64, -7, 84, 65, -72, 12, 45, 112, 10, -44, 28, -108, 63, -31, 78, 70, 6, 26, 100, -9, -8, 116, -98, 17, 50, 104, 83, -71, -59, -1, 70, -111, -43, -120, -44, 72, 47, -72, 83, -125, 57, -68, -105, -116, -75, -59, 90, 104, -87, -9, -19]
uniform_random_byte_bufl_in1 = 504
uniform_random_byte_l_in1 = 256
uniform_random_r_out1 = [226, 302, 2669, 3054, 3184, 174, 2396, 2229, 3092, 2122, 3216, 3165, 98, 2143, 1271, 572, 2222, 2159, 805, 774, 2656, 205, 3228, 1230, 817, 1179, 27, 913, 1420, 235, 1707, 1158, 3107, 2956, 3182, 2955, 2728, 2670, 1945, 57, 322, 1368, 2411, 286, 586, 466, 397, 266, 2932, 614, 851, 1311, 2148, 1368, 2697, 2734, 2988, 2202, 1676, 508, 450, 347, 3217, 1195, 1661, 1139, 3233, 899, 2574, 2437, 1794, 46, 427, 2332, 2814, 268, 3013, 516, 1856, 3312, 755, 527, 2081, 2522, 2680, 1830, 1941, 534, 2232, 3057, 1339, 3316, 450, 3178, 42, 1594, 903, 466, 1754, 1724, 100, 2936, 191, 1790, 2099, 206, 1389, 305, 1807, 1893, 515, 2727, 1692, 841, 2025, 1047, 1238, 2643, 1089, 770, 277, 941, 2078, 902, 1570, 97, 729, 165, 3156, 1712, 3210, 1646, 2369, 668, 1495, 35, 1413, 2319, 2059, 178, 180, 2628, 2521, 3322, 3200, 2844, 585, 1052, 3155, 3077, 1491, 35, 2489, 517, 1645, 2400, 2635, 2614, 2894, 1742, 75, 967, 285, 1115, 1161, 1829, 1938, 628, 2046, 2560, 2682, 1515, 2792, 2366, 1767, 3292, 1005, 393, 1487, 2480, 2767, 2651, 1788, 1325, 945, 2818, 725, 1780, 2433, 3037, 1304, 1066, 2132, 1707, 72, 1148, 1286, 2174, 2368, 2139, 1002, 21, 861, 361, 3128, 1334, 774, 1223, 1335, 2162, 629, 106, 1072, 293, 2305, 3232, 766, 290, 1807, 423, 2731, 2402, 2462, 2425, 82, 31, 2083, 2479, 1708, 1973, 2832, 1242, 1274, 862, 2560, 2532, 705, 276, 2274, 1458, 2364, 1171, 1486, 781, 3132, 64, 2845, 768, 669, 2459, 2453, 2496, 1359, 2113, 203, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
uniform_random_i_out1 = 256
uniform_random_byte_buf_in2 = [-5, 124, 112, 14, 94, -116, -123, 26, 106, -72, -96, 66, 93, 85, 75, -102, 99, -43, 116, 83, -11, -14, 124, -64, -92, 30, -57, -107, 28, -94, 123, 23, -83, 44, 127, -46, 45, -73, -67, -71, -61, -97, -44, 111, -110, -75, 65, 92, -104, 51, 118, 85, -116, -81, 89, 78, -75, 82, -50, -98, 104, -115, 1, 119, -47, 43, -38, -101, 3, 84, -90, -107, 95, -60, 51, 66, 102, -10, 83, 18, 107, 14, 55, -39, 26, 1, -28, 54, 93, 86, -19, 43, -68, -12, -108, -20, 100, 11, -75, -91, -86, -61, -18, 76, -22, 8, 3, 97, -97, 3, -52, -116, -95, -23, -17, 71, -6, -94, 89, 12, -30, 117, -98, 80, 50, -27, 26, 26, 123, 41, -42, 122, 76, -102, -30, 92, 89, 16, -22, -53, -33, 110, 69, -62, -22, 127, 87, 119, 40, -10, 83, 69, -50, -69, -71, 93, -30, -69, 50, -59, 93, -12, -28, -128, -5, -96, 20, -95, -27, -117, -36, 114, -28, 75, 75, -108, 36, 10, -51, -27, 62, 58, -42, 42, 6, -107, -124, 13, -38, -17, -55, 43, 91, -86, 96, 37, -57, 16, 21, -72, -24, -17, 93, -37, -42, 96, 48, 26, 87, -28, -84, 68, 118, 7, -49, -5, 101, 107, -54, -105, -24, -63, 51, -93, -21, 90, 91, -38, -66, -28, -87, 77, -124, 40, 24, 111, -48, -122, 64, 125, -66, -100, -88, 106, -25, 86, 33, 72, -42, 5, 2, 17, 12, 118, 30, 69, 15, 40, 124, 126, 102, -94, 41, 111, -68, 48, -79, -103, 12, -99, 99, -24, 49, 115, -34, 118, 41, -9, -6, 23, 104, 64, 100, -122, -62, 76, 2, -46, 53, 41, 107, -66, 55, 66, -40, 121, -103, 112, 32, 46, -33, -10, -57, -119, 38, 110, 55, 29, 91, -15, 24, -30, 71, -90, 94, -120, -65, -15, 13, 4, 66, -104, -64, -3, -30, 120, -18, -87, -55, 121, 48, -70, 124, -16, 80, 79, 44, -18, -29, -58, 97, 17, 113, -38, -51, -65, 65, 123, 89, 83, -65, 118, -78, -17, -97, -25, -78, 111, 26, -12, -11, 11, 39, -103, -35, -56, -84, -127, -55, -126, -3, -25, 7, -114, -120, -43, -100, 126, 58, -20, -38, -26, 67, 77, -95, 98, 59, -8, -87, -125, 48, 73, -47, -72, -70, 93, -22, 94, -70, 53, -44, 55, -93, 89, -61, 88, 32, 111, -89, -1, -124, -70, -36, 10, 37, -99, 81, -32, -76, 23, -5, 55, -81, 125, 90, -28, 0, -41, -42, -12, 18, -83, -20, 109, 8, 48, -73, -27, 10, -121, -26, 89, 75, 127, 66, 49, 53, 68, -33, 37, -3, 119, 61, -113, -19, 30, 73, 26, 4, -64, 85, 34, 57, 101, -61, -29, 108, -87, 9, 114, 10, -20, 27, 41, 25, -73, 65, 60, 94, 3, -1, -64, 2, 60, -71, -79, 115, 84, 59, 106, -4, 20, 91, -121, 61, 114, 37, -35, 51, -6, -47, 68, -101, -65]
uniform_random_byte_bufl_in2 = 504
uniform_random_byte_l_in2 = 256
uniform_random_r_out2 = [3323, 1799, 2245, 2693, 1697, 184, 1066, 1373, 1205, 922, 884, 3314, 3079, 3185, 3221, 2593, 1915, 2769, 1837, 3035, 953, 2556, 2342, 437, 1476, 920, 1891, 3157, 2808, 2900, 2540, 24, 375, 701, 3034, 57, 1620, 2394, 1119, 828, 1602, 595, 1713, 1806, 282, 1381, 3053, 3010, 1268, 2916, 2896, 2725, 3130, 3310, 776, 1552, 927, 3264, 396, 2031, 2466, 197, 1506, 2535, 592, 2586, 1969, 1577, 1965, 2636, 2396, 261, 3050, 1390, 3108, 1399, 2167, 1363, 3300, 2491, 1499, 3042, 811, 228, 1184, 2577, 3045, 1138, 1214, 1099, 585, 2622, 1578, 2384, 2543, 700, 2651, 1546, 1829, 268, 2069, 214, 774, 1818, 1196, 1892, 2917, 3238, 2199, 3102, 819, 2906, 1214, 2718, 1101, 648, 134, 2004, 3262, 2697, 1898, 1390, 2081, 517, 272, 1548, 487, 640, 1639, 2466, 1778, 188, 2835, 3225, 2512, 2147, 798, 1901, 1833, 2071, 1030, 1636, 3112, 588, 2357, 1714, 1982, 1059, 2520, 2455, 112, 738, 1759, 3199, 1673, 1762, 1457, 2289, 1607, 1514, 1037, 1056, 152, 2274, 2473, 1948, 2608, 1995, 240, 1269, 454, 278, 2673, 3293, 447, 1972, 857, 3061, 630, 1951, 2862, 2671, 3061, 624, 3213, 428, 3224, 2184, 3285, 2025, 3130, 998, 1236, 673, 950, 2552, 2106, 2352, 2744, 1499, 2981, 1077, 893, 2467, 3125, 88, 1778, 2127, 3258, 173, 1305, 1248, 379, 2043, 2803, 2685, 1792, 756, 2769, 134, 1840, 1802, 2905, 2036, 322, 851, 605, 2045, 983, 494, 2633, 65, 1472, 549, 1337, 3126, 3299, 2710, 521, 167, 3052, 657, 1817, 1051, 53, 255, 44, 2364, 2843, 1139, 949, 3178, 335, 1883, 984, 1394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
uniform_random_i_out2 = 256
assert(generate_uniform(uniform_random_byte_buf_in1, uniform_random_byte_bufl_in1, uniform_random_byte_l_in1) == (uniform_random_r_out1, uniform_random_i_out1))
assert(generate_uniform(uniform_random_byte_buf_in2, uniform_random_byte_bufl_in2, uniform_random_byte_l_in2) == (uniform_random_r_out2, uniform_random_i_out2))
generate_matrix_in1 = [101, -22, -3, 70, 95, -58, 74, 12, 95, -113, 63, -112, 3, 72, -108, 21, -119, -99, 89, -91, 67, -40, 32, -116, 84, -93, 22, 101, 41, -75, 57, 34]
generate_matrix_in1_transposed = True
generate_matrix_in1_paramsk = 2
generate_matrix_out1 = [
[ [226, 302, 2669, 3054, 3184, 174, 2396, 2229, 3092, 2122, 3216, 3165, 98, 2143, 1271, 572, 2222, 2159, 805, 774, 2656, 205, 3228, 1230, 817, 1179, 27, 913, 1420, 235, 1707, 1158, 3107, 2956, 3182, 2955, 2728, 2670, 1945, 57, 322, 1368, 2411, 286, 586, 466, 397, 266, 2932, 614, 851, 1311, 2148, 1368, 2697, 2734, 2988, 2202, 1676, 508, 450, 347, 3217, 1195, 1661, 1139, 3233, 899, 2574, 2437, 1794, 46, 427, 2332, 2814, 268, 3013, 516, 1856, 3312, 755, 527, 2081, 2522, 2680, 1830, 1941, 534, 2232, 3057, 1339, 3316, 450, 3178, 42, 1594, 903, 466, 1754, 1724, 100, 2936, 191, 1790, 2099, 206, 1389, 305, 1807, 1893, 515, 2727, 1692, 841, 2025, 1047, 1238, 2643, 1089, 770, 277, 941, 2078, 902, 1570, 97, 729, 165, 3156, 1712, 3210, 1646, 2369, 668, 1495, 35, 1413, 2319, 2059, 178, 180, 2628, 2521, 3322, 3200, 2844, 585, 1052, 3155, 3077, 1491, 35, 2489, 517, 1645, 2400, 2635, 2614, 2894, 1742, 75, 967, 285, 1115, 1161, 1829, 1938, 628, 2046, 2560, 2682, 1515, 2792, 2366, 1767, 3292, 1005, 393, 1487, 2480, 2767, 2651, 1788, 1325, 945, 2818, 725, 1780, 2433, 3037, 1304, 1066, 2132, 1707, 72, 1148, 1286, 2174, 2368, 2139, 1002, 21, 861, 361, 3128, 1334, 774, 1223, 1335, 2162, 629, 106, 1072, 293, 2305, 3232, 766, 290, 1807, 423, 2731, 2402, 2462, 2425, 82, 31, 2083, 2479, 1708, 1973, 2832, 1242, 1274, 862, 2560, 2532, 705, 276, 2274, 1458, 2364, 1171, 1486, 781, 3132, 64, 2845, 768, 669, 2459, 2453, 2496, 1359, 2113, 203, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[3323, 1799, 2245, 2693, 1697, 184, 1066, 1373, 1205, 922, 884, 3314, 3079, 3185, 3221, 2593, 1915, 2769, 1837, 3035, 953, 2556, 2342, 437, 1476, 920, 1891, 3157, 2808, 2900, 2540, 24, 375, 701, 3034, 57, 1620, 2394, 1119, 828, 1602, 595, 1713, 1806, 282, 1381, 3053, 3010, 1268, 2916, 2896, 2725, 3130, 3310, 776, 1552, 927, 3264, 396, 2031, 2466, 197, 1506, 2535, 592, 2586, 1969, 1577, 1965, 2636, 2396, 261, 3050, 1390, 3108, 1399, 2167, 1363, 3300, 2491, 1499, 3042, 811, 228, 1184, 2577, 3045, 1138, 1214, 1099, 585, 2622, 1578, 2384, 2543, 700, 2651, 1546, 1829, 268, 2069, 214, 774, 1818, 1196, 1892, 2917, 3238, 2199, 3102, 819, 2906, 1214, 2718, 1101, 648, 134, 2004, 3262, 2697, 1898, 1390, 2081, 517, 272, 1548, 487, 640, 1639, 2466, 1778, 188, 2835, 3225, 2512, 2147, 798, 1901, 1833, 2071, 1030, 1636, 3112, 588, 2357, 1714, 1982, 1059, 2520, 2455, 112, 738, 1759, 3199, 1673, 1762, 1457, 2289, 1607, 1514, 1037, 1056, 152, 2274, 2473, 1948, 2608, 1995, 240, 1269, 454, 278, 2673, 3293, 447, 1972, 857, 3061, 630, 1951, 2862, 2671, 3061, 624, 3213, 428, 3224, 2184, 3285, 2025, 3130, 998, 1236, 673, 950, 2552, 2106, 2352, 2744, 1499, 2981, 1077, 893, 2467, 3125, 88, 1778, 2127, 3258, 173, 1305, 1248, 379, 2043, 2803, 2685, 1792, 756, 2769, 134, 1840, 1802, 2905, 2036, 322, 851, 605, 2045, 983, 494, 2633, 65, 1472, 549, 1337, 3126, 3299, 2710, 521, 167, 3052, 657, 1817, 1051, 53, 255, 44, 2364, 2843, 1139, 949, 3178, 335, 1883, 984, 1394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
],
[ [1195, 1387, 871, 2235, 708, 590, 2155, 1189, 2649, 1008, 1567, 113, 195, 1789, 789, 7, 836, 1277, 2502, 38, 1601, 2406, 1279, 1970, 1935, 1626, 733, 1041, 2836, 3080, 1146, 2703, 822, 387, 2912, 1944, 973, 2742, 2832, 2465, 2889, 1623, 1841, 1607, 1142, 229, 2852, 2874, 2299, 3315, 3311, 1819, 2480, 924, 3276, 3276, 2626, 610, 1445, 2217, 1845, 2937, 2537, 1158, 64, 1063, 2696, 2845, 538, 496, 647, 2890, 2378, 916, 2559, 2294, 1875, 631, 460, 2675, 2102, 3213, 851, 1924, 54, 1055, 2631, 2211, 810, 682, 2338, 2290, 3275, 999, 2943, 3288, 1784, 2607, 1411, 1633, 1668, 1325, 2977, 2807, 2939, 912, 2375, 3137, 2320, 987, 858, 2425, 1435, 2911, 183, 770, 1170, 1620, 979, 257, 917, 2716, 2246, 2314, 2183, 2392, 1365, 792, 2252, 1171, 1794, 2366, 1854, 883, 868, 2048, 3062, 3076, 580, 2721, 268, 2664, 844, 71, 2198, 1383, 2215, 2229, 1434, 2872, 440, 3281, 2717, 147, 3053, 2687, 1481, 528, 2350, 1236, 3070, 3276, 906, 334, 1600, 2305, 3023, 2377, 2094, 199, 1752, 89, 1047, 1276, 1643, 182, 117, 2892, 841, 92, 151, 1640, 1061, 599, 2008, 1505, 3193, 497, 1219, 1557, 1372, 1135, 3058, 1278, 2338, 633, 2725, 2695, 130, 1115, 1701, 2085, 2977, 401, 1665, 804, 76, 2142, 2693, 1860, 1381, 805, 2365, 2596, 1506, 579, 1808, 2587, 2908, 2207, 2042, 1617, 794, 1903, 2670, 2154, 1832, 762, 1451, 172, 39, 1033, 2680, 2959, 2167, 2045, 2282, 171, 1154, 2294, 3183, 13, 703, 3319, 798, 2338, 2913, 1607, 3090, 1741, 3076, 243, 2042, 2068, 3005, 715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1669, 669, 2420, 1764, 391, 2140, 2728, 1971, 2085, 1957, 351, 2464, 3065, 2857, 1444, 3167, 2004, 1172, 738, 920, 1712, 2723, 1495, 1920, 1126, 435, 2329, 2252, 1474, 2204, 2731, 2818, 1029, 540, 936, 1010, 2815, 1307, 3291, 1811, 2483, 2025, 841, 774, 610, 2850, 2534, 807, 917, 1685, 2319, 2825, 3170, 3163, 3110, 1851, 2934, 715, 898, 425, 3155, 976, 1417, 2395, 2751, 1189, 1192, 1126, 1178, 3194, 3284, 284, 1737, 843, 60, 1634, 73, 52, 919, 762, 1817, 1784, 902, 3047, 1388, 987, 3075, 2693, 1710, 2291, 3046, 2364, 615, 2750, 396, 1935, 2171, 1224, 1320, 2096, 778, 1483, 3148, 2949, 52, 391, 2919, 1797, 2281, 3131, 532, 1682, 877, 2275, 222, 1028, 2958, 2368, 711, 2320, 3161, 3264, 189, 754, 428, 2003, 1668, 871, 3278, 111, 1877, 2052, 2313, 2596, 1716, 850, 1066, 2165, 1485, 190, 2731, 1726, 2535, 292, 2222, 3008, 1362, 3327, 2600, 1290, 1683, 1494, 524, 1591, 1432, 2999, 2274, 35, 943, 1886, 2568, 559, 1984, 1000, 607, 872, 1478, 2252, 1519, 250, 2148, 2471, 982, 47, 1386, 3030, 1689, 2843, 1726, 1102, 1223, 1733, 3300, 1990, 3216, 2173, 3087, 1997, 668, 1395, 2970, 1261, 447, 167, 3229, 583, 616, 1793, 1027, 2511, 3259, 2118, 2231, 2989, 1632, 2537, 2002, 2806, 3163, 905, 1041, 1599, 3076, 320, 1463, 1177, 2632, 1273, 2997, 2064, 1575, 2226, 305, 1522, 195, 2531, 2358, 951, 3262, 1013, 2102, 1849, 901, 1256, 912, 1047, 1133, 2041, 917, 1837, 1021, 1630, 1498, 2260, 1813, 1620, 573, 2562, 2802, 532, 3204, 1229, 337, 2061, 3029, 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]]
generate_matrix_in2 = [-125, -26, 78, 120, 43, -87, -50, 16, 83, 62, 97, -115, 103, -16, -126, 61, 96, 14, 66, -122, -42, -8, -102, -64, -52, 88, 71, 25, 38, 9, -48, 60]
generate_matrix_in2_transposed = False
generate_matrix_in2_paramsk = 2
generate_matrix_out2 = [
[
[990, 775, 3264, 1635, 2670, 2739, 792, 2183, 2714, 3234, 3288, 676, 2213, 2454, 817, 1753, 252, 1139, 222, 3099, 1385, 1408, 1559, 2361, 3289, 1147, 1699, 99, 3132, 3054, 2184, 143, 2566, 2993, 2103, 1978, 1915, 1807, 2728, 2586, 2533, 3141, 191, 1844, 312, 719, 361, 1293, 503, 3302, 2082, 12, 232, 282, 1272, 910, 1335, 1837, 3245, 1053, 1349, 2028, 2917, 1314, 38, 1544, 1185, 2950, 1828, 1654, 2673, 6, 2201, 1820, 2809, 2883, 1700, 166, 1602, 2084, 1535, 772, 638, 2056, 607, 2054, 2640, 1349, 3310, 3023, 934, 2855, 419, 2845, 1886, 476, 2994, 2435, 1085, 2533, 1731, 712, 2370, 1784, 2822, 379, 1886, 681, 2728, 983, 2051, 2245, 791, 2510, 2269, 620, 795, 448, 1520, 247, 1989, 1135, 3103, 1005, 1877, 1361, 2414, 2177, 2544, 1869, 2007, 2525, 541, 467, 2492, 782, 829, 1279, 59, 748, 1797, 1355, 1584, 1875, 91, 1405, 181, 1457, 2913, 351, 652, 2059, 219, 597, 1001, 1171, 613, 17, 1391, 141, 970, 1956, 1653, 2817, 2656, 2105, 172, 475, 1765, 2239, 2657, 3105, 2283, 728, 103, 2460, 258, 325, 3262, 695, 1254, 2505, 1110, 3182, 1627, 1582, 546, 3297, 2580, 2512, 911, 2355, 2171, 1899, 2634, 3309, 847, 557, 803, 2797, 317, 3048, 1166, 1077, 703, 2321, 963, 1438, 167, 1893, 2147, 752, 494, 331, 2907, 825, 1289, 78, 2335, 3025, 1473, 1832, 1448, 2387, 1495, 680, 1100, 1038, 686, 1726, 2573, 1024, 1228, 1691, 214, 3313, 1602, 3134, 278, 805, 1452, 1190, 3208, 199, 2116, 3293, 2707, 2397, 2454, 2763, 481, 1441, 160, 2454, 256, 3018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[37, 2346, 2204, 31, 430, 488, 674, 2697, 1391, 8, 2233, 1439, 1770, 1257, 1451, 3328, 1129, 3055, 2746, 3204, 1253, 917, 1630, 1739, 1286, 3242, 2227, 2011, 1395, 434, 1003, 2367, 1551, 325, 1896, 2189, 2127, 497, 569, 1170, 3302, 1105, 264, 287, 1210, 1458, 1114, 2070, 2071, 3230, 3149, 1809, 2556, 233, 2514, 372, 1393, 2945, 3257, 808, 2347, 1358, 2754, 3032, 114, 2376, 1101, 3118, 672, 2278, 1113, 1349, 500, 1924, 2529, 887, 2180, 1864, 2804, 75, 1240, 1660, 2745, 2712, 414, 993, 1355, 527, 3200, 3154, 59, 3057, 1807, 2434, 2407, 82, 1763, 2256, 1291, 2868, 525, 579, 875, 1380, 1460, 3142, 490, 2157, 2639, 3254, 2318, 888, 213, 2721, 2805, 2339, 3045, 2692, 2620, 591, 1601, 744, 2128, 1155, 1588, 479, 1093, 1922, 2656, 1094, 2826, 2647, 1709, 1433, 1366, 1926, 2334, 3104, 362, 2245, 2577, 2108, 2384, 984, 13, 2926, 1346, 1897, 2191, 2082, 749, 2032, 1045, 5, 1397, 1099, 2416, 1185, 177, 2582, 1300, 2410, 1191, 3224, 2415, 3237, 2483, 276, 197, 1293, 2820, 943, 309, 1339, 3140, 2551, 2584, 2464, 2222, 3194, 1828, 83, 1937, 1165, 2514, 3322, 552, 1961, 1995, 1144, 1360, 670, 362, 1593, 1602, 1693, 891, 1141, 42, 3102, 919, 2753, 2806, 617, 1585, 2623, 397, 988, 1721, 229, 714, 3228, 2727, 1119, 3204, 1225, 2401, 739, 2604, 1482, 1583, 940, 948, 235, 921, 1880, 1050, 2070, 256, 2383, 2622, 423, 2792, 2537, 871, 2143, 2575, 3322, 2576, 535, 1071, 503, 1447, 1279, 13, 310, 509, 1592, 1179, 1157, 816, 306, 3238, 3023, 154, 919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
],
[
[394, 1951, 210, 3290, 1324, 2940, 2033, 2491, 3063, 147, 3198, 2430, 1366, 2707, 1362, 2983, 1263, 2523, 1318, 162, 931, 3074, 900, 1436, 2607, 2645, 3092, 3281, 2353, 699, 2558, 2186, 2685, 2763, 441, 2149, 2736, 2534, 2020, 524, 2243, 1204, 1923, 130, 1371, 2040, 778, 2399, 1252, 188, 1325, 1057, 1538, 78, 583, 2359, 510, 2765, 1122, 2606, 2600, 7, 95, 76, 15, 841, 2464, 173, 1900, 368, 38, 1035, 474, 2195, 1033, 2045, 2721, 97, 2671, 953, 1949, 33, 2749, 3057, 2908, 2856, 580, 1108, 3203, 290, 1385, 764, 1454, 1041, 2151, 575, 2158, 700, 1332, 2489, 493, 278, 141, 1946, 2585, 223, 1576, 500, 853, 1429, 528, 713, 1143, 259, 1170, 2849, 2979, 221, 459, 2057, 2175, 733, 198, 2686, 689, 698, 2040, 985, 1038, 1614, 2966, 1484, 1056, 2014, 1924, 2050, 361, 861, 1891, 3186, 1749, 1926, 1289, 538, 2113, 2354, 1027, 1138, 783, 1940, 2031, 1219, 302, 2833, 1645, 1219, 1361, 2779, 1656, 2534, 522, 641, 2307, 420, 558, 569, 2469, 1157, 660, 2472, 175, 325, 1380, 3272, 729, 2190, 653, 31, 1545, 510, 1306, 2622, 1559, 3083, 345, 31, 2847, 2777, 1739, 943, 1019, 2625, 2295, 2731, 1616, 1930, 2841, 2241, 3159, 816, 3257, 1251, 2432, 599, 1251, 387, 1260, 1316, 1763, 3055, 831, 195, 1737, 1513, 207, 0, 1751, 2897, 1221, 2444, 3156, 2976, 2272, 3230, 1326, 2963, 1736, 606, 1737, 792, 519, 212, 2562, 2882, 2501, 2388, 273, 2444, 1035, 2473, 3041, 2645, 2018, 2253, 1146, 2021, 1206, 1457, 2688, 3019, 1657, 2496, 97, 120, 2065, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2893, 3217, 2709, 1500, 2365, 1017, 1493, 2822, 2941, 1211, 717, 192, 289, 1463, 1629, 2017, 2628, 3074, 2713, 348, 532, 958, 1076, 1287, 963, 1300, 1106, 3302, 1484, 1133, 240, 1879, 1385, 556, 642, 1342, 2684, 189, 3184, 1615, 3259, 1237, 1362, 1548, 579, 472, 429, 1066, 2974, 2374, 726, 2861, 3199, 1347, 2481, 227, 2046, 3130, 2765, 3318, 35, 2322, 1513, 757, 2820, 1885, 1833, 237, 900, 1176, 1576, 303, 2186, 2545, 2548, 2529, 299, 2514, 1859, 2393, 2017, 1030, 122, 1073, 2778, 590, 1978, 886, 1893, 2838, 1793, 1858, 2478, 925, 1567, 745, 629, 958, 2279, 2945, 2859, 1495, 2190, 2038, 1032, 2689, 3321, 2182, 2746, 1623, 1517, 1827, 1329, 1, 2470, 3179, 292, 313, 244, 970, 2545, 1701, 1910, 1052, 1600, 1138, 3251, 3218, 1223, 2143, 1598, 3238, 3154, 278, 1358, 2010, 2009, 2231, 422, 3213, 70, 1125, 750, 153, 524, 1732, 1478, 503, 2435, 1298, 1707, 1374, 416, 2370, 1212, 933, 2638, 968, 2593, 1564, 2817, 2602, 2065, 89, 1311, 1847, 1116, 219, 3098, 389, 2512, 3186, 366, 2728, 1865, 1035, 853, 703, 749, 662, 3095, 1711, 2563, 338, 21, 476, 317, 3039, 821, 206, 2217, 2261, 329, 1962, 2569, 1478, 1774, 926, 209, 934, 2771, 2781, 3303, 960, 2369, 609, 360, 610, 803, 3229, 3058, 2237, 1250, 1535, 881, 3156, 1553, 2528, 1526, 1485, 2086, 386, 2508, 1317, 2461, 2831, 1751, 1753, 1874, 1436, 1937, 882, 1258, 1675, 3230, 1420, 3262, 519, 1823, 1679, 1728, 2518, 2153, 2460, 1579, 1390, 3173, 1619, 316, 1780, 343, 1831, 2544, 376, 889, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]]
assert(generate_matrix(generate_matrix_in1, generate_matrix_in1_transposed, generate_matrix_in1_paramsk) == generate_matrix_out1)
assert(generate_matrix(generate_matrix_in2, generate_matrix_in2_transposed, generate_matrix_in2_paramsk) == generate_matrix_out2)
generate_prf_byte_array_in1_l = 192
generate_prf_byte_array_in1_key = [-128, 53, 8, -15, -92, -21, -89, 117, -36, 93, 90, -21, 102, 29, -69, -108, -42, -120, -7, 78, -58, 19, 127, -62, 65, 72, 70, 45, 35, 37, 39, -8]
generate_prf_byte_array_in1_nonce = 0
generate_prf_byte_array_out1 = [-72, 4, 0, 53, -66, -10, -92, -45, -40, 78, 32, 32, 17, 27, 44, 35, 86, 118, 102, 0, -72, 79, 72, -119, -40, -99, -107, -86, -50, -25, 41, 127, -27, -70, -79, 88, -81, 94, -62, 11, -26, -4, 32, -55, -27, -30, -34, -56, 81, 126, 101, 118, -56, -56, -31, -101, 82, -121, 65, 86, 33, 53, -21, -104, -27, 23, 122, -88, 68, -21, 66, -14, 49, 79, 12, -9, -60, -50, -45, 107, -8, -75, -108, 53, -125, 51, -103, 103, 85, 50, -117, -63, 23, -52, -104, -49, -11, -37, 34, -127, -42, 31, -18, 114, 94, -101, 125, 43, 110, -13, 52, 110, -91, 117, -4, 88, 34, 67, 118, 90, -105, 54, 91, 42, -84, -21, 42, -124, -125, 72, -122, 79, 81, 94, -123, -33, 63, 79, -71, 96, -17, -78, 1, -35, 54, 75, 105, 116, -40, -67, -100, -9, 7, 32, 16, 75, -27, -46, -118, 52, 31, -102, -115, 10, 67, 117, 38, 0, -24, 40, 13, 18, 81, -9, 79, 101, -18, -59, 63, -55, 43, -19, 11, -48, -85, -61, -3, -100, -65, 34, 32, 15]
generate_prf_byte_array_in2_l = 128
generate_prf_byte_array_in2_key = [-128, 53, 8, -15, -92, -21, -89, 117, -36, 93, 90, -21, 102, 29, -69, -108, -42, -120, -7, 78, -58, 19, 127, -62, 65, 72, 70, 45, 35, 37, 39, -8]
generate_prf_byte_array_in2_nonce = 2
generate_prf_byte_array_out2 = [100, 70, -84, -86, 66, -46, -105, 3, 24, 13, 87, 17, 121, -43, 21, -113, -9, 110, -42, -45, -54, -27, 81, -61, 64, -11, 93, 69, 66, -71, -117, 61, 93, 26, 85, 22, -63, 27, 69, -110, 108, -71, 83, 54, 118, 91, 32, -95, -51, 57, -98, -26, 90, 62, -97, -22, -38, -87, 57, -65, 12, -16, 23, -98, 106, -109, -100, 85, 108, 55, 112, 4, 6, -87, 61, -26, -80, -55, 118, -58, -78, 126, 95, 112, -50, 61, 111, -14, 70, -83, 9, -77, 75, -118, -104, -49, -81, 63, -3, 14, -58, 55, 26, 75, 58, -76, 35, -106, 99, -105, 107, -65, 87, -58, 3, -34, -20, -53, 106, -33, 100, -61, -11, -126, -111, 3, -79, -76]
assert(generate_prf_byte_array(generate_prf_byte_array_in1_l, generate_prf_byte_array_in1_key, generate_prf_byte_array_in1_nonce) == generate_prf_byte_array_out1)
assert(generate_prf_byte_array(generate_prf_byte_array_in2_l, generate_prf_byte_array_in2_key, generate_prf_byte_array_in2_nonce) == generate_prf_byte_array_out2)