|
#include "circom.h"
|
|
#include "calcwit.h"
|
|
#define NSignals 13109
|
|
#define NComponents 384
|
|
#define NInputs 2
|
|
#define NOutputs 2
|
|
#define NVars 5541
|
|
#define __P__ "21888242871839275222246405745257275088548364400416034343698204186575808495617"
|
|
|
|
|
|
// Sizes
|
|
Circom_Size sizes_2[3] = {2,1,0};
|
|
|
|
Circom_Size sizes_0[2] = {1,0};
|
|
|
|
Circom_Size sizes_500[3] = {500,1,0};
|
|
|
|
Circom_Size sizes_250[3] = {250,1,0};
|
|
|
|
Circom_Size sizes_63[3] = {63,1,0};
|
|
|
|
Circom_Size sizes_4[3] = {4,1,0};
|
|
|
|
Circom_Size sizes_2_16[4] = {32,16,1,0};
|
|
|
|
// HashMaps
|
|
Circom_HashEntry _htMain[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe4799fa9af515d1dLL, 3} /* pedersen */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0x21d8e21925f9f8c1LL, 1} /* n2b */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */};
|
|
|
|
Circom_HashEntry _htPedersen[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x4285195137c6736bLL, 0} /* escalarMuls */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 1} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */};
|
|
|
|
Circom_HashEntry _htEscalarMul[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x2ba003192bd4cf0aLL, 1} /* inp */,{0x600e2845cc70f20aLL, 3} /* windows */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */};
|
|
|
|
Circom_HashEntry _htEscalarMulWindow[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x235decfdfd543243LL, 0} /* adder */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x07e65919174a287dLL, 2} /* mux */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x823b7f195ce2008bLL, 4} /* sel */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 1} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 3} /* out */};
|
|
|
|
Circom_HashEntry _htMultiMux4[256] = {{0x818041195c42a400LL, 20} /* s20 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe6796d1904b46615LL, 3} /* a10 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63ee4c86020b22LL, 18} /* s */,{0,0},{0,0},{0,0},{0,0},{0x089c1307b5454527LL, 2} /* a1 */,{0xe680791904ba9927LL, 9} /* a30 */,{0x66ede88309185527LL, 13} /* a320 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe67cf41904b78151LL, 6} /* a21 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x089c1207b5454374LL, 1} /* a0 */,{0xe680781904ba9774LL, 10} /* a31 */,{0x66ede78309185374LL, 14} /* a321 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63dc4c8601ec8cLL, 0} /* a */,{0x089c1507b545488dLL, 8} /* a3 */,{0x66e35683090f088cLL, 11} /* a310 */,{0xe6807b1904ba9c8dLL, 12} /* a32 */,{0xfe93a7a874557c8cLL, 15} /* a3210 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x4f95d417c53f3d99LL, 22} /* s210 */,{0,0},{0x818ad3195c4bf09bLL, 19} /* s10 */,{0,0},{0,0},{0xe67cf31904b77f9eLL, 5} /* a20 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x818042195c42a5b3LL, 21} /* s21 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x5dd4278303d0d7d3LL, 7} /* a210 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x089c1407b54546daLL, 4} /* a2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63de4c8601eff2LL, 16} /* c */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 17} /* out */};
|
|
|
|
Circom_HashEntry _htBabyAdd[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08f10607b58d6f0fLL, 5} /* x2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08ed8407b58a5c52LL, 8} /* y2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x229176bd1f6ba96aLL, 2} /* gamma */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x9479dd5455b31c79LL, 6} /* xout */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x56d7bd194448c389LL, 3} /* tau */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08ed8307b58a5a9fLL, 7} /* y1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x7627619b954620a7LL, 0} /* beta */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x52076675ec13a0c1LL, 1} /* delta */,{0x08f10707b58d70c2LL, 4} /* x1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xd3470749a88bd6f8LL, 9} /* yout */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
|
|
|
|
Circom_HashEntry _htNum2Bits[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 1} /* out */};
|
|
|
|
|
|
// Component Entries
|
|
Circom_ComponentEntry _entryTableMain[4] = {
|
|
{1,sizes_2, _typeSignal}
|
|
,{382,sizes_2, _typeComponent}
|
|
,{3,sizes_2, _typeSignal}
|
|
,{1,sizes_0, _typeComponent}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTablePedersen[3] = {
|
|
{2,sizes_2, _typeComponent}
|
|
,{5,sizes_500, _typeSignal}
|
|
,{505,sizes_2, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMul[4] = {
|
|
{507,sizes_250, _typeSignal}
|
|
,{757,sizes_2, _typeSignal}
|
|
,{759,sizes_2, _typeSignal}
|
|
,{4,sizes_63, _typeComponent}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMul_1[4] = {
|
|
{6557,sizes_250, _typeSignal}
|
|
,{6807,sizes_2, _typeSignal}
|
|
,{6809,sizes_2, _typeSignal}
|
|
,{193,sizes_63, _typeComponent}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow[5] = {
|
|
{68,sizes_0, _typeComponent}
|
|
,{761,sizes_2, _typeSignal}
|
|
,{67,sizes_0, _typeComponent}
|
|
,{767,sizes_2, _typeSignal}
|
|
,{763,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_1[5] = {
|
|
{70,sizes_0, _typeComponent}
|
|
,{853,sizes_2, _typeSignal}
|
|
,{69,sizes_0, _typeComponent}
|
|
,{859,sizes_2, _typeSignal}
|
|
,{855,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_2[5] = {
|
|
{72,sizes_0, _typeComponent}
|
|
,{945,sizes_2, _typeSignal}
|
|
,{71,sizes_0, _typeComponent}
|
|
,{951,sizes_2, _typeSignal}
|
|
,{947,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_3[5] = {
|
|
{74,sizes_0, _typeComponent}
|
|
,{1037,sizes_2, _typeSignal}
|
|
,{73,sizes_0, _typeComponent}
|
|
,{1043,sizes_2, _typeSignal}
|
|
,{1039,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_4[5] = {
|
|
{76,sizes_0, _typeComponent}
|
|
,{1129,sizes_2, _typeSignal}
|
|
,{75,sizes_0, _typeComponent}
|
|
,{1135,sizes_2, _typeSignal}
|
|
,{1131,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_5[5] = {
|
|
{78,sizes_0, _typeComponent}
|
|
,{1221,sizes_2, _typeSignal}
|
|
,{77,sizes_0, _typeComponent}
|
|
,{1227,sizes_2, _typeSignal}
|
|
,{1223,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_6[5] = {
|
|
{80,sizes_0, _typeComponent}
|
|
,{1313,sizes_2, _typeSignal}
|
|
,{79,sizes_0, _typeComponent}
|
|
,{1319,sizes_2, _typeSignal}
|
|
,{1315,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_7[5] = {
|
|
{82,sizes_0, _typeComponent}
|
|
,{1405,sizes_2, _typeSignal}
|
|
,{81,sizes_0, _typeComponent}
|
|
,{1411,sizes_2, _typeSignal}
|
|
,{1407,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_8[5] = {
|
|
{84,sizes_0, _typeComponent}
|
|
,{1497,sizes_2, _typeSignal}
|
|
,{83,sizes_0, _typeComponent}
|
|
,{1503,sizes_2, _typeSignal}
|
|
,{1499,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_9[5] = {
|
|
{86,sizes_0, _typeComponent}
|
|
,{1589,sizes_2, _typeSignal}
|
|
,{85,sizes_0, _typeComponent}
|
|
,{1595,sizes_2, _typeSignal}
|
|
,{1591,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_10[5] = {
|
|
{88,sizes_0, _typeComponent}
|
|
,{1681,sizes_2, _typeSignal}
|
|
,{87,sizes_0, _typeComponent}
|
|
,{1687,sizes_2, _typeSignal}
|
|
,{1683,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_11[5] = {
|
|
{90,sizes_0, _typeComponent}
|
|
,{1773,sizes_2, _typeSignal}
|
|
,{89,sizes_0, _typeComponent}
|
|
,{1779,sizes_2, _typeSignal}
|
|
,{1775,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_12[5] = {
|
|
{92,sizes_0, _typeComponent}
|
|
,{1865,sizes_2, _typeSignal}
|
|
,{91,sizes_0, _typeComponent}
|
|
,{1871,sizes_2, _typeSignal}
|
|
,{1867,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_13[5] = {
|
|
{94,sizes_0, _typeComponent}
|
|
,{1957,sizes_2, _typeSignal}
|
|
,{93,sizes_0, _typeComponent}
|
|
,{1963,sizes_2, _typeSignal}
|
|
,{1959,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_14[5] = {
|
|
{96,sizes_0, _typeComponent}
|
|
,{2049,sizes_2, _typeSignal}
|
|
,{95,sizes_0, _typeComponent}
|
|
,{2055,sizes_2, _typeSignal}
|
|
,{2051,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_15[5] = {
|
|
{98,sizes_0, _typeComponent}
|
|
,{2141,sizes_2, _typeSignal}
|
|
,{97,sizes_0, _typeComponent}
|
|
,{2147,sizes_2, _typeSignal}
|
|
,{2143,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_16[5] = {
|
|
{100,sizes_0, _typeComponent}
|
|
,{2233,sizes_2, _typeSignal}
|
|
,{99,sizes_0, _typeComponent}
|
|
,{2239,sizes_2, _typeSignal}
|
|
,{2235,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_17[5] = {
|
|
{102,sizes_0, _typeComponent}
|
|
,{2325,sizes_2, _typeSignal}
|
|
,{101,sizes_0, _typeComponent}
|
|
,{2331,sizes_2, _typeSignal}
|
|
,{2327,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_18[5] = {
|
|
{104,sizes_0, _typeComponent}
|
|
,{2417,sizes_2, _typeSignal}
|
|
,{103,sizes_0, _typeComponent}
|
|
,{2423,sizes_2, _typeSignal}
|
|
,{2419,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_19[5] = {
|
|
{106,sizes_0, _typeComponent}
|
|
,{2509,sizes_2, _typeSignal}
|
|
,{105,sizes_0, _typeComponent}
|
|
,{2515,sizes_2, _typeSignal}
|
|
,{2511,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_20[5] = {
|
|
{108,sizes_0, _typeComponent}
|
|
,{2601,sizes_2, _typeSignal}
|
|
,{107,sizes_0, _typeComponent}
|
|
,{2607,sizes_2, _typeSignal}
|
|
,{2603,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_21[5] = {
|
|
{110,sizes_0, _typeComponent}
|
|
,{2693,sizes_2, _typeSignal}
|
|
,{109,sizes_0, _typeComponent}
|
|
,{2699,sizes_2, _typeSignal}
|
|
,{2695,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_22[5] = {
|
|
{112,sizes_0, _typeComponent}
|
|
,{2785,sizes_2, _typeSignal}
|
|
,{111,sizes_0, _typeComponent}
|
|
,{2791,sizes_2, _typeSignal}
|
|
,{2787,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_23[5] = {
|
|
{114,sizes_0, _typeComponent}
|
|
,{2877,sizes_2, _typeSignal}
|
|
,{113,sizes_0, _typeComponent}
|
|
,{2883,sizes_2, _typeSignal}
|
|
,{2879,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_24[5] = {
|
|
{116,sizes_0, _typeComponent}
|
|
,{2969,sizes_2, _typeSignal}
|
|
,{115,sizes_0, _typeComponent}
|
|
,{2975,sizes_2, _typeSignal}
|
|
,{2971,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_25[5] = {
|
|
{118,sizes_0, _typeComponent}
|
|
,{3061,sizes_2, _typeSignal}
|
|
,{117,sizes_0, _typeComponent}
|
|
,{3067,sizes_2, _typeSignal}
|
|
,{3063,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_26[5] = {
|
|
{120,sizes_0, _typeComponent}
|
|
,{3153,sizes_2, _typeSignal}
|
|
,{119,sizes_0, _typeComponent}
|
|
,{3159,sizes_2, _typeSignal}
|
|
,{3155,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_27[5] = {
|
|
{122,sizes_0, _typeComponent}
|
|
,{3245,sizes_2, _typeSignal}
|
|
,{121,sizes_0, _typeComponent}
|
|
,{3251,sizes_2, _typeSignal}
|
|
,{3247,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_28[5] = {
|
|
{124,sizes_0, _typeComponent}
|
|
,{3337,sizes_2, _typeSignal}
|
|
,{123,sizes_0, _typeComponent}
|
|
,{3343,sizes_2, _typeSignal}
|
|
,{3339,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_29[5] = {
|
|
{126,sizes_0, _typeComponent}
|
|
,{3429,sizes_2, _typeSignal}
|
|
,{125,sizes_0, _typeComponent}
|
|
,{3435,sizes_2, _typeSignal}
|
|
,{3431,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_30[5] = {
|
|
{128,sizes_0, _typeComponent}
|
|
,{3521,sizes_2, _typeSignal}
|
|
,{127,sizes_0, _typeComponent}
|
|
,{3527,sizes_2, _typeSignal}
|
|
,{3523,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_31[5] = {
|
|
{130,sizes_0, _typeComponent}
|
|
,{3613,sizes_2, _typeSignal}
|
|
,{129,sizes_0, _typeComponent}
|
|
,{3619,sizes_2, _typeSignal}
|
|
,{3615,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_32[5] = {
|
|
{132,sizes_0, _typeComponent}
|
|
,{3705,sizes_2, _typeSignal}
|
|
,{131,sizes_0, _typeComponent}
|
|
,{3711,sizes_2, _typeSignal}
|
|
,{3707,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_33[5] = {
|
|
{134,sizes_0, _typeComponent}
|
|
,{3797,sizes_2, _typeSignal}
|
|
,{133,sizes_0, _typeComponent}
|
|
,{3803,sizes_2, _typeSignal}
|
|
,{3799,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_34[5] = {
|
|
{136,sizes_0, _typeComponent}
|
|
,{3889,sizes_2, _typeSignal}
|
|
,{135,sizes_0, _typeComponent}
|
|
,{3895,sizes_2, _typeSignal}
|
|
,{3891,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_35[5] = {
|
|
{138,sizes_0, _typeComponent}
|
|
,{3981,sizes_2, _typeSignal}
|
|
,{137,sizes_0, _typeComponent}
|
|
,{3987,sizes_2, _typeSignal}
|
|
,{3983,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_36[5] = {
|
|
{140,sizes_0, _typeComponent}
|
|
,{4073,sizes_2, _typeSignal}
|
|
,{139,sizes_0, _typeComponent}
|
|
,{4079,sizes_2, _typeSignal}
|
|
,{4075,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_37[5] = {
|
|
{142,sizes_0, _typeComponent}
|
|
,{4165,sizes_2, _typeSignal}
|
|
,{141,sizes_0, _typeComponent}
|
|
,{4171,sizes_2, _typeSignal}
|
|
,{4167,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_38[5] = {
|
|
{144,sizes_0, _typeComponent}
|
|
,{4257,sizes_2, _typeSignal}
|
|
,{143,sizes_0, _typeComponent}
|
|
,{4263,sizes_2, _typeSignal}
|
|
,{4259,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_39[5] = {
|
|
{146,sizes_0, _typeComponent}
|
|
,{4349,sizes_2, _typeSignal}
|
|
,{145,sizes_0, _typeComponent}
|
|
,{4355,sizes_2, _typeSignal}
|
|
,{4351,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_40[5] = {
|
|
{148,sizes_0, _typeComponent}
|
|
,{4441,sizes_2, _typeSignal}
|
|
,{147,sizes_0, _typeComponent}
|
|
,{4447,sizes_2, _typeSignal}
|
|
,{4443,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_41[5] = {
|
|
{150,sizes_0, _typeComponent}
|
|
,{4533,sizes_2, _typeSignal}
|
|
,{149,sizes_0, _typeComponent}
|
|
,{4539,sizes_2, _typeSignal}
|
|
,{4535,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_42[5] = {
|
|
{152,sizes_0, _typeComponent}
|
|
,{4625,sizes_2, _typeSignal}
|
|
,{151,sizes_0, _typeComponent}
|
|
,{4631,sizes_2, _typeSignal}
|
|
,{4627,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_43[5] = {
|
|
{154,sizes_0, _typeComponent}
|
|
,{4717,sizes_2, _typeSignal}
|
|
,{153,sizes_0, _typeComponent}
|
|
,{4723,sizes_2, _typeSignal}
|
|
,{4719,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_44[5] = {
|
|
{156,sizes_0, _typeComponent}
|
|
,{4809,sizes_2, _typeSignal}
|
|
,{155,sizes_0, _typeComponent}
|
|
,{4815,sizes_2, _typeSignal}
|
|
,{4811,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_45[5] = {
|
|
{158,sizes_0, _typeComponent}
|
|
,{4901,sizes_2, _typeSignal}
|
|
,{157,sizes_0, _typeComponent}
|
|
,{4907,sizes_2, _typeSignal}
|
|
,{4903,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_46[5] = {
|
|
{160,sizes_0, _typeComponent}
|
|
,{4993,sizes_2, _typeSignal}
|
|
,{159,sizes_0, _typeComponent}
|
|
,{4999,sizes_2, _typeSignal}
|
|
,{4995,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_47[5] = {
|
|
{162,sizes_0, _typeComponent}
|
|
,{5085,sizes_2, _typeSignal}
|
|
,{161,sizes_0, _typeComponent}
|
|
,{5091,sizes_2, _typeSignal}
|
|
,{5087,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_48[5] = {
|
|
{164,sizes_0, _typeComponent}
|
|
,{5177,sizes_2, _typeSignal}
|
|
,{163,sizes_0, _typeComponent}
|
|
,{5183,sizes_2, _typeSignal}
|
|
,{5179,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_49[5] = {
|
|
{166,sizes_0, _typeComponent}
|
|
,{5269,sizes_2, _typeSignal}
|
|
,{165,sizes_0, _typeComponent}
|
|
,{5275,sizes_2, _typeSignal}
|
|
,{5271,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_50[5] = {
|
|
{168,sizes_0, _typeComponent}
|
|
,{5361,sizes_2, _typeSignal}
|
|
,{167,sizes_0, _typeComponent}
|
|
,{5367,sizes_2, _typeSignal}
|
|
,{5363,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_51[5] = {
|
|
{170,sizes_0, _typeComponent}
|
|
,{5453,sizes_2, _typeSignal}
|
|
,{169,sizes_0, _typeComponent}
|
|
,{5459,sizes_2, _typeSignal}
|
|
,{5455,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_52[5] = {
|
|
{172,sizes_0, _typeComponent}
|
|
,{5545,sizes_2, _typeSignal}
|
|
,{171,sizes_0, _typeComponent}
|
|
,{5551,sizes_2, _typeSignal}
|
|
,{5547,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_53[5] = {
|
|
{174,sizes_0, _typeComponent}
|
|
,{5637,sizes_2, _typeSignal}
|
|
,{173,sizes_0, _typeComponent}
|
|
,{5643,sizes_2, _typeSignal}
|
|
,{5639,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_54[5] = {
|
|
{176,sizes_0, _typeComponent}
|
|
,{5729,sizes_2, _typeSignal}
|
|
,{175,sizes_0, _typeComponent}
|
|
,{5735,sizes_2, _typeSignal}
|
|
,{5731,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_55[5] = {
|
|
{178,sizes_0, _typeComponent}
|
|
,{5821,sizes_2, _typeSignal}
|
|
,{177,sizes_0, _typeComponent}
|
|
,{5827,sizes_2, _typeSignal}
|
|
,{5823,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_56[5] = {
|
|
{180,sizes_0, _typeComponent}
|
|
,{5913,sizes_2, _typeSignal}
|
|
,{179,sizes_0, _typeComponent}
|
|
,{5919,sizes_2, _typeSignal}
|
|
,{5915,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_57[5] = {
|
|
{182,sizes_0, _typeComponent}
|
|
,{6005,sizes_2, _typeSignal}
|
|
,{181,sizes_0, _typeComponent}
|
|
,{6011,sizes_2, _typeSignal}
|
|
,{6007,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_58[5] = {
|
|
{184,sizes_0, _typeComponent}
|
|
,{6097,sizes_2, _typeSignal}
|
|
,{183,sizes_0, _typeComponent}
|
|
,{6103,sizes_2, _typeSignal}
|
|
,{6099,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_59[5] = {
|
|
{186,sizes_0, _typeComponent}
|
|
,{6189,sizes_2, _typeSignal}
|
|
,{185,sizes_0, _typeComponent}
|
|
,{6195,sizes_2, _typeSignal}
|
|
,{6191,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_60[5] = {
|
|
{188,sizes_0, _typeComponent}
|
|
,{6281,sizes_2, _typeSignal}
|
|
,{187,sizes_0, _typeComponent}
|
|
,{6287,sizes_2, _typeSignal}
|
|
,{6283,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_61[5] = {
|
|
{190,sizes_0, _typeComponent}
|
|
,{6373,sizes_2, _typeSignal}
|
|
,{189,sizes_0, _typeComponent}
|
|
,{6379,sizes_2, _typeSignal}
|
|
,{6375,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_62[5] = {
|
|
{192,sizes_0, _typeComponent}
|
|
,{6465,sizes_2, _typeSignal}
|
|
,{191,sizes_0, _typeComponent}
|
|
,{6471,sizes_2, _typeSignal}
|
|
,{6467,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4[23] = {
|
|
{837,sizes_2, _typeSignal}
|
|
,{835,sizes_2, _typeSignal}
|
|
,{833,sizes_2, _typeSignal}
|
|
,{829,sizes_2, _typeSignal}
|
|
,{831,sizes_2, _typeSignal}
|
|
,{827,sizes_2, _typeSignal}
|
|
,{825,sizes_2, _typeSignal}
|
|
,{823,sizes_2, _typeSignal}
|
|
,{821,sizes_2, _typeSignal}
|
|
,{819,sizes_2, _typeSignal}
|
|
,{817,sizes_2, _typeSignal}
|
|
,{813,sizes_2, _typeSignal}
|
|
,{815,sizes_2, _typeSignal}
|
|
,{811,sizes_2, _typeSignal}
|
|
,{809,sizes_2, _typeSignal}
|
|
,{807,sizes_2, _typeSignal}
|
|
,{769,sizes_2_16, _typeSignal}
|
|
,{805,sizes_2, _typeSignal}
|
|
,{801,sizes_4, _typeSignal}
|
|
,{839,sizes_0, _typeSignal}
|
|
,{840,sizes_0, _typeSignal}
|
|
,{841,sizes_0, _typeSignal}
|
|
,{842,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd[10] = {
|
|
{849,sizes_0, _typeSignal}
|
|
,{851,sizes_0, _typeSignal}
|
|
,{850,sizes_0, _typeSignal}
|
|
,{852,sizes_0, _typeSignal}
|
|
,{843,sizes_0, _typeSignal}
|
|
,{845,sizes_0, _typeSignal}
|
|
,{847,sizes_0, _typeSignal}
|
|
,{844,sizes_0, _typeSignal}
|
|
,{846,sizes_0, _typeSignal}
|
|
,{848,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_1[23] = {
|
|
{929,sizes_2, _typeSignal}
|
|
,{927,sizes_2, _typeSignal}
|
|
,{925,sizes_2, _typeSignal}
|
|
,{921,sizes_2, _typeSignal}
|
|
,{923,sizes_2, _typeSignal}
|
|
,{919,sizes_2, _typeSignal}
|
|
,{917,sizes_2, _typeSignal}
|
|
,{915,sizes_2, _typeSignal}
|
|
,{913,sizes_2, _typeSignal}
|
|
,{911,sizes_2, _typeSignal}
|
|
,{909,sizes_2, _typeSignal}
|
|
,{905,sizes_2, _typeSignal}
|
|
,{907,sizes_2, _typeSignal}
|
|
,{903,sizes_2, _typeSignal}
|
|
,{901,sizes_2, _typeSignal}
|
|
,{899,sizes_2, _typeSignal}
|
|
,{861,sizes_2_16, _typeSignal}
|
|
,{897,sizes_2, _typeSignal}
|
|
,{893,sizes_4, _typeSignal}
|
|
,{931,sizes_0, _typeSignal}
|
|
,{932,sizes_0, _typeSignal}
|
|
,{933,sizes_0, _typeSignal}
|
|
,{934,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_1[10] = {
|
|
{941,sizes_0, _typeSignal}
|
|
,{943,sizes_0, _typeSignal}
|
|
,{942,sizes_0, _typeSignal}
|
|
,{944,sizes_0, _typeSignal}
|
|
,{935,sizes_0, _typeSignal}
|
|
,{937,sizes_0, _typeSignal}
|
|
,{939,sizes_0, _typeSignal}
|
|
,{936,sizes_0, _typeSignal}
|
|
,{938,sizes_0, _typeSignal}
|
|
,{940,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_2[23] = {
|
|
{1021,sizes_2, _typeSignal}
|
|
,{1019,sizes_2, _typeSignal}
|
|
,{1017,sizes_2, _typeSignal}
|
|
,{1013,sizes_2, _typeSignal}
|
|
,{1015,sizes_2, _typeSignal}
|
|
,{1011,sizes_2, _typeSignal}
|
|
,{1009,sizes_2, _typeSignal}
|
|
,{1007,sizes_2, _typeSignal}
|
|
,{1005,sizes_2, _typeSignal}
|
|
,{1003,sizes_2, _typeSignal}
|
|
,{1001,sizes_2, _typeSignal}
|
|
,{997,sizes_2, _typeSignal}
|
|
,{999,sizes_2, _typeSignal}
|
|
,{995,sizes_2, _typeSignal}
|
|
,{993,sizes_2, _typeSignal}
|
|
,{991,sizes_2, _typeSignal}
|
|
,{953,sizes_2_16, _typeSignal}
|
|
,{989,sizes_2, _typeSignal}
|
|
,{985,sizes_4, _typeSignal}
|
|
,{1023,sizes_0, _typeSignal}
|
|
,{1024,sizes_0, _typeSignal}
|
|
,{1025,sizes_0, _typeSignal}
|
|
,{1026,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_2[10] = {
|
|
{1033,sizes_0, _typeSignal}
|
|
,{1035,sizes_0, _typeSignal}
|
|
,{1034,sizes_0, _typeSignal}
|
|
,{1036,sizes_0, _typeSignal}
|
|
,{1027,sizes_0, _typeSignal}
|
|
,{1029,sizes_0, _typeSignal}
|
|
,{1031,sizes_0, _typeSignal}
|
|
,{1028,sizes_0, _typeSignal}
|
|
,{1030,sizes_0, _typeSignal}
|
|
,{1032,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_3[23] = {
|
|
{1113,sizes_2, _typeSignal}
|
|
,{1111,sizes_2, _typeSignal}
|
|
,{1109,sizes_2, _typeSignal}
|
|
,{1105,sizes_2, _typeSignal}
|
|
,{1107,sizes_2, _typeSignal}
|
|
,{1103,sizes_2, _typeSignal}
|
|
,{1101,sizes_2, _typeSignal}
|
|
,{1099,sizes_2, _typeSignal}
|
|
,{1097,sizes_2, _typeSignal}
|
|
,{1095,sizes_2, _typeSignal}
|
|
,{1093,sizes_2, _typeSignal}
|
|
,{1089,sizes_2, _typeSignal}
|
|
,{1091,sizes_2, _typeSignal}
|
|
,{1087,sizes_2, _typeSignal}
|
|
,{1085,sizes_2, _typeSignal}
|
|
,{1083,sizes_2, _typeSignal}
|
|
,{1045,sizes_2_16, _typeSignal}
|
|
,{1081,sizes_2, _typeSignal}
|
|
,{1077,sizes_4, _typeSignal}
|
|
,{1115,sizes_0, _typeSignal}
|
|
,{1116,sizes_0, _typeSignal}
|
|
,{1117,sizes_0, _typeSignal}
|
|
,{1118,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_3[10] = {
|
|
{1125,sizes_0, _typeSignal}
|
|
,{1127,sizes_0, _typeSignal}
|
|
,{1126,sizes_0, _typeSignal}
|
|
,{1128,sizes_0, _typeSignal}
|
|
,{1119,sizes_0, _typeSignal}
|
|
,{1121,sizes_0, _typeSignal}
|
|
,{1123,sizes_0, _typeSignal}
|
|
,{1120,sizes_0, _typeSignal}
|
|
,{1122,sizes_0, _typeSignal}
|
|
,{1124,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_4[23] = {
|
|
{1205,sizes_2, _typeSignal}
|
|
,{1203,sizes_2, _typeSignal}
|
|
,{1201,sizes_2, _typeSignal}
|
|
,{1197,sizes_2, _typeSignal}
|
|
,{1199,sizes_2, _typeSignal}
|
|
,{1195,sizes_2, _typeSignal}
|
|
,{1193,sizes_2, _typeSignal}
|
|
,{1191,sizes_2, _typeSignal}
|
|
,{1189,sizes_2, _typeSignal}
|
|
,{1187,sizes_2, _typeSignal}
|
|
,{1185,sizes_2, _typeSignal}
|
|
,{1181,sizes_2, _typeSignal}
|
|
,{1183,sizes_2, _typeSignal}
|
|
,{1179,sizes_2, _typeSignal}
|
|
,{1177,sizes_2, _typeSignal}
|
|
,{1175,sizes_2, _typeSignal}
|
|
,{1137,sizes_2_16, _typeSignal}
|
|
,{1173,sizes_2, _typeSignal}
|
|
,{1169,sizes_4, _typeSignal}
|
|
,{1207,sizes_0, _typeSignal}
|
|
,{1208,sizes_0, _typeSignal}
|
|
,{1209,sizes_0, _typeSignal}
|
|
,{1210,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_4[10] = {
|
|
{1217,sizes_0, _typeSignal}
|
|
,{1219,sizes_0, _typeSignal}
|
|
,{1218,sizes_0, _typeSignal}
|
|
,{1220,sizes_0, _typeSignal}
|
|
,{1211,sizes_0, _typeSignal}
|
|
,{1213,sizes_0, _typeSignal}
|
|
,{1215,sizes_0, _typeSignal}
|
|
,{1212,sizes_0, _typeSignal}
|
|
,{1214,sizes_0, _typeSignal}
|
|
,{1216,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_5[23] = {
|
|
{1297,sizes_2, _typeSignal}
|
|
,{1295,sizes_2, _typeSignal}
|
|
,{1293,sizes_2, _typeSignal}
|
|
,{1289,sizes_2, _typeSignal}
|
|
,{1291,sizes_2, _typeSignal}
|
|
,{1287,sizes_2, _typeSignal}
|
|
,{1285,sizes_2, _typeSignal}
|
|
,{1283,sizes_2, _typeSignal}
|
|
,{1281,sizes_2, _typeSignal}
|
|
,{1279,sizes_2, _typeSignal}
|
|
,{1277,sizes_2, _typeSignal}
|
|
,{1273,sizes_2, _typeSignal}
|
|
,{1275,sizes_2, _typeSignal}
|
|
,{1271,sizes_2, _typeSignal}
|
|
,{1269,sizes_2, _typeSignal}
|
|
,{1267,sizes_2, _typeSignal}
|
|
,{1229,sizes_2_16, _typeSignal}
|
|
,{1265,sizes_2, _typeSignal}
|
|
,{1261,sizes_4, _typeSignal}
|
|
,{1299,sizes_0, _typeSignal}
|
|
,{1300,sizes_0, _typeSignal}
|
|
,{1301,sizes_0, _typeSignal}
|
|
,{1302,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_5[10] = {
|
|
{1309,sizes_0, _typeSignal}
|
|
,{1311,sizes_0, _typeSignal}
|
|
,{1310,sizes_0, _typeSignal}
|
|
,{1312,sizes_0, _typeSignal}
|
|
,{1303,sizes_0, _typeSignal}
|
|
,{1305,sizes_0, _typeSignal}
|
|
,{1307,sizes_0, _typeSignal}
|
|
,{1304,sizes_0, _typeSignal}
|
|
,{1306,sizes_0, _typeSignal}
|
|
,{1308,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_6[23] = {
|
|
{1389,sizes_2, _typeSignal}
|
|
,{1387,sizes_2, _typeSignal}
|
|
,{1385,sizes_2, _typeSignal}
|
|
,{1381,sizes_2, _typeSignal}
|
|
,{1383,sizes_2, _typeSignal}
|
|
,{1379,sizes_2, _typeSignal}
|
|
,{1377,sizes_2, _typeSignal}
|
|
,{1375,sizes_2, _typeSignal}
|
|
,{1373,sizes_2, _typeSignal}
|
|
,{1371,sizes_2, _typeSignal}
|
|
,{1369,sizes_2, _typeSignal}
|
|
,{1365,sizes_2, _typeSignal}
|
|
,{1367,sizes_2, _typeSignal}
|
|
,{1363,sizes_2, _typeSignal}
|
|
,{1361,sizes_2, _typeSignal}
|
|
,{1359,sizes_2, _typeSignal}
|
|
,{1321,sizes_2_16, _typeSignal}
|
|
,{1357,sizes_2, _typeSignal}
|
|
,{1353,sizes_4, _typeSignal}
|
|
,{1391,sizes_0, _typeSignal}
|
|
,{1392,sizes_0, _typeSignal}
|
|
,{1393,sizes_0, _typeSignal}
|
|
,{1394,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_6[10] = {
|
|
{1401,sizes_0, _typeSignal}
|
|
,{1403,sizes_0, _typeSignal}
|
|
,{1402,sizes_0, _typeSignal}
|
|
,{1404,sizes_0, _typeSignal}
|
|
,{1395,sizes_0, _typeSignal}
|
|
,{1397,sizes_0, _typeSignal}
|
|
,{1399,sizes_0, _typeSignal}
|
|
,{1396,sizes_0, _typeSignal}
|
|
,{1398,sizes_0, _typeSignal}
|
|
,{1400,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_7[23] = {
|
|
{1481,sizes_2, _typeSignal}
|
|
,{1479,sizes_2, _typeSignal}
|
|
,{1477,sizes_2, _typeSignal}
|
|
,{1473,sizes_2, _typeSignal}
|
|
,{1475,sizes_2, _typeSignal}
|
|
,{1471,sizes_2, _typeSignal}
|
|
,{1469,sizes_2, _typeSignal}
|
|
,{1467,sizes_2, _typeSignal}
|
|
,{1465,sizes_2, _typeSignal}
|
|
,{1463,sizes_2, _typeSignal}
|
|
,{1461,sizes_2, _typeSignal}
|
|
,{1457,sizes_2, _typeSignal}
|
|
,{1459,sizes_2, _typeSignal}
|
|
,{1455,sizes_2, _typeSignal}
|
|
,{1453,sizes_2, _typeSignal}
|
|
,{1451,sizes_2, _typeSignal}
|
|
,{1413,sizes_2_16, _typeSignal}
|
|
,{1449,sizes_2, _typeSignal}
|
|
,{1445,sizes_4, _typeSignal}
|
|
,{1483,sizes_0, _typeSignal}
|
|
,{1484,sizes_0, _typeSignal}
|
|
,{1485,sizes_0, _typeSignal}
|
|
,{1486,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_7[10] = {
|
|
{1493,sizes_0, _typeSignal}
|
|
,{1495,sizes_0, _typeSignal}
|
|
,{1494,sizes_0, _typeSignal}
|
|
,{1496,sizes_0, _typeSignal}
|
|
,{1487,sizes_0, _typeSignal}
|
|
,{1489,sizes_0, _typeSignal}
|
|
,{1491,sizes_0, _typeSignal}
|
|
,{1488,sizes_0, _typeSignal}
|
|
,{1490,sizes_0, _typeSignal}
|
|
,{1492,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_8[23] = {
|
|
{1573,sizes_2, _typeSignal}
|
|
,{1571,sizes_2, _typeSignal}
|
|
,{1569,sizes_2, _typeSignal}
|
|
,{1565,sizes_2, _typeSignal}
|
|
,{1567,sizes_2, _typeSignal}
|
|
,{1563,sizes_2, _typeSignal}
|
|
,{1561,sizes_2, _typeSignal}
|
|
,{1559,sizes_2, _typeSignal}
|
|
,{1557,sizes_2, _typeSignal}
|
|
,{1555,sizes_2, _typeSignal}
|
|
,{1553,sizes_2, _typeSignal}
|
|
,{1549,sizes_2, _typeSignal}
|
|
,{1551,sizes_2, _typeSignal}
|
|
,{1547,sizes_2, _typeSignal}
|
|
,{1545,sizes_2, _typeSignal}
|
|
,{1543,sizes_2, _typeSignal}
|
|
,{1505,sizes_2_16, _typeSignal}
|
|
,{1541,sizes_2, _typeSignal}
|
|
,{1537,sizes_4, _typeSignal}
|
|
,{1575,sizes_0, _typeSignal}
|
|
,{1576,sizes_0, _typeSignal}
|
|
,{1577,sizes_0, _typeSignal}
|
|
,{1578,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_8[10] = {
|
|
{1585,sizes_0, _typeSignal}
|
|
,{1587,sizes_0, _typeSignal}
|
|
,{1586,sizes_0, _typeSignal}
|
|
,{1588,sizes_0, _typeSignal}
|
|
,{1579,sizes_0, _typeSignal}
|
|
,{1581,sizes_0, _typeSignal}
|
|
,{1583,sizes_0, _typeSignal}
|
|
,{1580,sizes_0, _typeSignal}
|
|
,{1582,sizes_0, _typeSignal}
|
|
,{1584,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_9[23] = {
|
|
{1665,sizes_2, _typeSignal}
|
|
,{1663,sizes_2, _typeSignal}
|
|
,{1661,sizes_2, _typeSignal}
|
|
,{1657,sizes_2, _typeSignal}
|
|
,{1659,sizes_2, _typeSignal}
|
|
,{1655,sizes_2, _typeSignal}
|
|
,{1653,sizes_2, _typeSignal}
|
|
,{1651,sizes_2, _typeSignal}
|
|
,{1649,sizes_2, _typeSignal}
|
|
,{1647,sizes_2, _typeSignal}
|
|
,{1645,sizes_2, _typeSignal}
|
|
,{1641,sizes_2, _typeSignal}
|
|
,{1643,sizes_2, _typeSignal}
|
|
,{1639,sizes_2, _typeSignal}
|
|
,{1637,sizes_2, _typeSignal}
|
|
,{1635,sizes_2, _typeSignal}
|
|
,{1597,sizes_2_16, _typeSignal}
|
|
,{1633,sizes_2, _typeSignal}
|
|
,{1629,sizes_4, _typeSignal}
|
|
,{1667,sizes_0, _typeSignal}
|
|
,{1668,sizes_0, _typeSignal}
|
|
,{1669,sizes_0, _typeSignal}
|
|
,{1670,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_9[10] = {
|
|
{1677,sizes_0, _typeSignal}
|
|
,{1679,sizes_0, _typeSignal}
|
|
,{1678,sizes_0, _typeSignal}
|
|
,{1680,sizes_0, _typeSignal}
|
|
,{1671,sizes_0, _typeSignal}
|
|
,{1673,sizes_0, _typeSignal}
|
|
,{1675,sizes_0, _typeSignal}
|
|
,{1672,sizes_0, _typeSignal}
|
|
,{1674,sizes_0, _typeSignal}
|
|
,{1676,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_10[23] = {
|
|
{1757,sizes_2, _typeSignal}
|
|
,{1755,sizes_2, _typeSignal}
|
|
,{1753,sizes_2, _typeSignal}
|
|
,{1749,sizes_2, _typeSignal}
|
|
,{1751,sizes_2, _typeSignal}
|
|
,{1747,sizes_2, _typeSignal}
|
|
,{1745,sizes_2, _typeSignal}
|
|
,{1743,sizes_2, _typeSignal}
|
|
,{1741,sizes_2, _typeSignal}
|
|
,{1739,sizes_2, _typeSignal}
|
|
,{1737,sizes_2, _typeSignal}
|
|
,{1733,sizes_2, _typeSignal}
|
|
,{1735,sizes_2, _typeSignal}
|
|
,{1731,sizes_2, _typeSignal}
|
|
,{1729,sizes_2, _typeSignal}
|
|
,{1727,sizes_2, _typeSignal}
|
|
,{1689,sizes_2_16, _typeSignal}
|
|
,{1725,sizes_2, _typeSignal}
|
|
,{1721,sizes_4, _typeSignal}
|
|
,{1759,sizes_0, _typeSignal}
|
|
,{1760,sizes_0, _typeSignal}
|
|
,{1761,sizes_0, _typeSignal}
|
|
,{1762,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_10[10] = {
|
|
{1769,sizes_0, _typeSignal}
|
|
,{1771,sizes_0, _typeSignal}
|
|
,{1770,sizes_0, _typeSignal}
|
|
,{1772,sizes_0, _typeSignal}
|
|
,{1763,sizes_0, _typeSignal}
|
|
,{1765,sizes_0, _typeSignal}
|
|
,{1767,sizes_0, _typeSignal}
|
|
,{1764,sizes_0, _typeSignal}
|
|
,{1766,sizes_0, _typeSignal}
|
|
,{1768,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_11[23] = {
|
|
{1849,sizes_2, _typeSignal}
|
|
,{1847,sizes_2, _typeSignal}
|
|
,{1845,sizes_2, _typeSignal}
|
|
,{1841,sizes_2, _typeSignal}
|
|
,{1843,sizes_2, _typeSignal}
|
|
,{1839,sizes_2, _typeSignal}
|
|
,{1837,sizes_2, _typeSignal}
|
|
,{1835,sizes_2, _typeSignal}
|
|
,{1833,sizes_2, _typeSignal}
|
|
,{1831,sizes_2, _typeSignal}
|
|
,{1829,sizes_2, _typeSignal}
|
|
,{1825,sizes_2, _typeSignal}
|
|
,{1827,sizes_2, _typeSignal}
|
|
,{1823,sizes_2, _typeSignal}
|
|
,{1821,sizes_2, _typeSignal}
|
|
,{1819,sizes_2, _typeSignal}
|
|
,{1781,sizes_2_16, _typeSignal}
|
|
,{1817,sizes_2, _typeSignal}
|
|
,{1813,sizes_4, _typeSignal}
|
|
,{1851,sizes_0, _typeSignal}
|
|
,{1852,sizes_0, _typeSignal}
|
|
,{1853,sizes_0, _typeSignal}
|
|
,{1854,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_11[10] = {
|
|
{1861,sizes_0, _typeSignal}
|
|
,{1863,sizes_0, _typeSignal}
|
|
,{1862,sizes_0, _typeSignal}
|
|
,{1864,sizes_0, _typeSignal}
|
|
,{1855,sizes_0, _typeSignal}
|
|
,{1857,sizes_0, _typeSignal}
|
|
,{1859,sizes_0, _typeSignal}
|
|
,{1856,sizes_0, _typeSignal}
|
|
,{1858,sizes_0, _typeSignal}
|
|
,{1860,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_12[23] = {
|
|
{1941,sizes_2, _typeSignal}
|
|
,{1939,sizes_2, _typeSignal}
|
|
,{1937,sizes_2, _typeSignal}
|
|
,{1933,sizes_2, _typeSignal}
|
|
,{1935,sizes_2, _typeSignal}
|
|
,{1931,sizes_2, _typeSignal}
|
|
,{1929,sizes_2, _typeSignal}
|
|
,{1927,sizes_2, _typeSignal}
|
|
,{1925,sizes_2, _typeSignal}
|
|
,{1923,sizes_2, _typeSignal}
|
|
,{1921,sizes_2, _typeSignal}
|
|
,{1917,sizes_2, _typeSignal}
|
|
,{1919,sizes_2, _typeSignal}
|
|
,{1915,sizes_2, _typeSignal}
|
|
,{1913,sizes_2, _typeSignal}
|
|
,{1911,sizes_2, _typeSignal}
|
|
,{1873,sizes_2_16, _typeSignal}
|
|
,{1909,sizes_2, _typeSignal}
|
|
,{1905,sizes_4, _typeSignal}
|
|
,{1943,sizes_0, _typeSignal}
|
|
,{1944,sizes_0, _typeSignal}
|
|
,{1945,sizes_0, _typeSignal}
|
|
,{1946,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_12[10] = {
|
|
{1953,sizes_0, _typeSignal}
|
|
,{1955,sizes_0, _typeSignal}
|
|
,{1954,sizes_0, _typeSignal}
|
|
,{1956,sizes_0, _typeSignal}
|
|
,{1947,sizes_0, _typeSignal}
|
|
,{1949,sizes_0, _typeSignal}
|
|
,{1951,sizes_0, _typeSignal}
|
|
,{1948,sizes_0, _typeSignal}
|
|
,{1950,sizes_0, _typeSignal}
|
|
,{1952,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_13[23] = {
|
|
{2033,sizes_2, _typeSignal}
|
|
,{2031,sizes_2, _typeSignal}
|
|
,{2029,sizes_2, _typeSignal}
|
|
,{2025,sizes_2, _typeSignal}
|
|
,{2027,sizes_2, _typeSignal}
|
|
,{2023,sizes_2, _typeSignal}
|
|
,{2021,sizes_2, _typeSignal}
|
|
,{2019,sizes_2, _typeSignal}
|
|
,{2017,sizes_2, _typeSignal}
|
|
,{2015,sizes_2, _typeSignal}
|
|
,{2013,sizes_2, _typeSignal}
|
|
,{2009,sizes_2, _typeSignal}
|
|
,{2011,sizes_2, _typeSignal}
|
|
,{2007,sizes_2, _typeSignal}
|
|
,{2005,sizes_2, _typeSignal}
|
|
,{2003,sizes_2, _typeSignal}
|
|
,{1965,sizes_2_16, _typeSignal}
|
|
,{2001,sizes_2, _typeSignal}
|
|
,{1997,sizes_4, _typeSignal}
|
|
,{2035,sizes_0, _typeSignal}
|
|
,{2036,sizes_0, _typeSignal}
|
|
,{2037,sizes_0, _typeSignal}
|
|
,{2038,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_13[10] = {
|
|
{2045,sizes_0, _typeSignal}
|
|
,{2047,sizes_0, _typeSignal}
|
|
,{2046,sizes_0, _typeSignal}
|
|
,{2048,sizes_0, _typeSignal}
|
|
,{2039,sizes_0, _typeSignal}
|
|
,{2041,sizes_0, _typeSignal}
|
|
,{2043,sizes_0, _typeSignal}
|
|
,{2040,sizes_0, _typeSignal}
|
|
,{2042,sizes_0, _typeSignal}
|
|
,{2044,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_14[23] = {
|
|
{2125,sizes_2, _typeSignal}
|
|
,{2123,sizes_2, _typeSignal}
|
|
,{2121,sizes_2, _typeSignal}
|
|
,{2117,sizes_2, _typeSignal}
|
|
,{2119,sizes_2, _typeSignal}
|
|
,{2115,sizes_2, _typeSignal}
|
|
,{2113,sizes_2, _typeSignal}
|
|
,{2111,sizes_2, _typeSignal}
|
|
,{2109,sizes_2, _typeSignal}
|
|
,{2107,sizes_2, _typeSignal}
|
|
,{2105,sizes_2, _typeSignal}
|
|
,{2101,sizes_2, _typeSignal}
|
|
,{2103,sizes_2, _typeSignal}
|
|
,{2099,sizes_2, _typeSignal}
|
|
,{2097,sizes_2, _typeSignal}
|
|
,{2095,sizes_2, _typeSignal}
|
|
,{2057,sizes_2_16, _typeSignal}
|
|
,{2093,sizes_2, _typeSignal}
|
|
,{2089,sizes_4, _typeSignal}
|
|
,{2127,sizes_0, _typeSignal}
|
|
,{2128,sizes_0, _typeSignal}
|
|
,{2129,sizes_0, _typeSignal}
|
|
,{2130,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_14[10] = {
|
|
{2137,sizes_0, _typeSignal}
|
|
,{2139,sizes_0, _typeSignal}
|
|
,{2138,sizes_0, _typeSignal}
|
|
,{2140,sizes_0, _typeSignal}
|
|
,{2131,sizes_0, _typeSignal}
|
|
,{2133,sizes_0, _typeSignal}
|
|
,{2135,sizes_0, _typeSignal}
|
|
,{2132,sizes_0, _typeSignal}
|
|
,{2134,sizes_0, _typeSignal}
|
|
,{2136,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_15[23] = {
|
|
{2217,sizes_2, _typeSignal}
|
|
,{2215,sizes_2, _typeSignal}
|
|
,{2213,sizes_2, _typeSignal}
|
|
,{2209,sizes_2, _typeSignal}
|
|
,{2211,sizes_2, _typeSignal}
|
|
,{2207,sizes_2, _typeSignal}
|
|
,{2205,sizes_2, _typeSignal}
|
|
,{2203,sizes_2, _typeSignal}
|
|
,{2201,sizes_2, _typeSignal}
|
|
,{2199,sizes_2, _typeSignal}
|
|
,{2197,sizes_2, _typeSignal}
|
|
,{2193,sizes_2, _typeSignal}
|
|
,{2195,sizes_2, _typeSignal}
|
|
,{2191,sizes_2, _typeSignal}
|
|
,{2189,sizes_2, _typeSignal}
|
|
,{2187,sizes_2, _typeSignal}
|
|
,{2149,sizes_2_16, _typeSignal}
|
|
,{2185,sizes_2, _typeSignal}
|
|
,{2181,sizes_4, _typeSignal}
|
|
,{2219,sizes_0, _typeSignal}
|
|
,{2220,sizes_0, _typeSignal}
|
|
,{2221,sizes_0, _typeSignal}
|
|
,{2222,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_15[10] = {
|
|
{2229,sizes_0, _typeSignal}
|
|
,{2231,sizes_0, _typeSignal}
|
|
,{2230,sizes_0, _typeSignal}
|
|
,{2232,sizes_0, _typeSignal}
|
|
,{2223,sizes_0, _typeSignal}
|
|
,{2225,sizes_0, _typeSignal}
|
|
,{2227,sizes_0, _typeSignal}
|
|
,{2224,sizes_0, _typeSignal}
|
|
,{2226,sizes_0, _typeSignal}
|
|
,{2228,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_16[23] = {
|
|
{2309,sizes_2, _typeSignal}
|
|
,{2307,sizes_2, _typeSignal}
|
|
,{2305,sizes_2, _typeSignal}
|
|
,{2301,sizes_2, _typeSignal}
|
|
,{2303,sizes_2, _typeSignal}
|
|
,{2299,sizes_2, _typeSignal}
|
|
,{2297,sizes_2, _typeSignal}
|
|
,{2295,sizes_2, _typeSignal}
|
|
,{2293,sizes_2, _typeSignal}
|
|
,{2291,sizes_2, _typeSignal}
|
|
,{2289,sizes_2, _typeSignal}
|
|
,{2285,sizes_2, _typeSignal}
|
|
,{2287,sizes_2, _typeSignal}
|
|
,{2283,sizes_2, _typeSignal}
|
|
,{2281,sizes_2, _typeSignal}
|
|
,{2279,sizes_2, _typeSignal}
|
|
,{2241,sizes_2_16, _typeSignal}
|
|
,{2277,sizes_2, _typeSignal}
|
|
,{2273,sizes_4, _typeSignal}
|
|
,{2311,sizes_0, _typeSignal}
|
|
,{2312,sizes_0, _typeSignal}
|
|
,{2313,sizes_0, _typeSignal}
|
|
,{2314,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_16[10] = {
|
|
{2321,sizes_0, _typeSignal}
|
|
,{2323,sizes_0, _typeSignal}
|
|
,{2322,sizes_0, _typeSignal}
|
|
,{2324,sizes_0, _typeSignal}
|
|
,{2315,sizes_0, _typeSignal}
|
|
,{2317,sizes_0, _typeSignal}
|
|
,{2319,sizes_0, _typeSignal}
|
|
,{2316,sizes_0, _typeSignal}
|
|
,{2318,sizes_0, _typeSignal}
|
|
,{2320,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_17[23] = {
|
|
{2401,sizes_2, _typeSignal}
|
|
,{2399,sizes_2, _typeSignal}
|
|
,{2397,sizes_2, _typeSignal}
|
|
,{2393,sizes_2, _typeSignal}
|
|
,{2395,sizes_2, _typeSignal}
|
|
,{2391,sizes_2, _typeSignal}
|
|
,{2389,sizes_2, _typeSignal}
|
|
,{2387,sizes_2, _typeSignal}
|
|
,{2385,sizes_2, _typeSignal}
|
|
,{2383,sizes_2, _typeSignal}
|
|
,{2381,sizes_2, _typeSignal}
|
|
,{2377,sizes_2, _typeSignal}
|
|
,{2379,sizes_2, _typeSignal}
|
|
,{2375,sizes_2, _typeSignal}
|
|
,{2373,sizes_2, _typeSignal}
|
|
,{2371,sizes_2, _typeSignal}
|
|
,{2333,sizes_2_16, _typeSignal}
|
|
,{2369,sizes_2, _typeSignal}
|
|
,{2365,sizes_4, _typeSignal}
|
|
,{2403,sizes_0, _typeSignal}
|
|
,{2404,sizes_0, _typeSignal}
|
|
,{2405,sizes_0, _typeSignal}
|
|
,{2406,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_17[10] = {
|
|
{2413,sizes_0, _typeSignal}
|
|
,{2415,sizes_0, _typeSignal}
|
|
,{2414,sizes_0, _typeSignal}
|
|
,{2416,sizes_0, _typeSignal}
|
|
,{2407,sizes_0, _typeSignal}
|
|
,{2409,sizes_0, _typeSignal}
|
|
,{2411,sizes_0, _typeSignal}
|
|
,{2408,sizes_0, _typeSignal}
|
|
,{2410,sizes_0, _typeSignal}
|
|
,{2412,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_18[23] = {
|
|
{2493,sizes_2, _typeSignal}
|
|
,{2491,sizes_2, _typeSignal}
|
|
,{2489,sizes_2, _typeSignal}
|
|
,{2485,sizes_2, _typeSignal}
|
|
,{2487,sizes_2, _typeSignal}
|
|
,{2483,sizes_2, _typeSignal}
|
|
,{2481,sizes_2, _typeSignal}
|
|
,{2479,sizes_2, _typeSignal}
|
|
,{2477,sizes_2, _typeSignal}
|
|
,{2475,sizes_2, _typeSignal}
|
|
,{2473,sizes_2, _typeSignal}
|
|
,{2469,sizes_2, _typeSignal}
|
|
,{2471,sizes_2, _typeSignal}
|
|
,{2467,sizes_2, _typeSignal}
|
|
,{2465,sizes_2, _typeSignal}
|
|
,{2463,sizes_2, _typeSignal}
|
|
,{2425,sizes_2_16, _typeSignal}
|
|
,{2461,sizes_2, _typeSignal}
|
|
,{2457,sizes_4, _typeSignal}
|
|
,{2495,sizes_0, _typeSignal}
|
|
,{2496,sizes_0, _typeSignal}
|
|
,{2497,sizes_0, _typeSignal}
|
|
,{2498,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_18[10] = {
|
|
{2505,sizes_0, _typeSignal}
|
|
,{2507,sizes_0, _typeSignal}
|
|
,{2506,sizes_0, _typeSignal}
|
|
,{2508,sizes_0, _typeSignal}
|
|
,{2499,sizes_0, _typeSignal}
|
|
,{2501,sizes_0, _typeSignal}
|
|
,{2503,sizes_0, _typeSignal}
|
|
,{2500,sizes_0, _typeSignal}
|
|
,{2502,sizes_0, _typeSignal}
|
|
,{2504,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_19[23] = {
|
|
{2585,sizes_2, _typeSignal}
|
|
,{2583,sizes_2, _typeSignal}
|
|
,{2581,sizes_2, _typeSignal}
|
|
,{2577,sizes_2, _typeSignal}
|
|
,{2579,sizes_2, _typeSignal}
|
|
,{2575,sizes_2, _typeSignal}
|
|
,{2573,sizes_2, _typeSignal}
|
|
,{2571,sizes_2, _typeSignal}
|
|
,{2569,sizes_2, _typeSignal}
|
|
,{2567,sizes_2, _typeSignal}
|
|
,{2565,sizes_2, _typeSignal}
|
|
,{2561,sizes_2, _typeSignal}
|
|
,{2563,sizes_2, _typeSignal}
|
|
,{2559,sizes_2, _typeSignal}
|
|
,{2557,sizes_2, _typeSignal}
|
|
,{2555,sizes_2, _typeSignal}
|
|
,{2517,sizes_2_16, _typeSignal}
|
|
,{2553,sizes_2, _typeSignal}
|
|
,{2549,sizes_4, _typeSignal}
|
|
,{2587,sizes_0, _typeSignal}
|
|
,{2588,sizes_0, _typeSignal}
|
|
,{2589,sizes_0, _typeSignal}
|
|
,{2590,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_19[10] = {
|
|
{2597,sizes_0, _typeSignal}
|
|
,{2599,sizes_0, _typeSignal}
|
|
,{2598,sizes_0, _typeSignal}
|
|
,{2600,sizes_0, _typeSignal}
|
|
,{2591,sizes_0, _typeSignal}
|
|
,{2593,sizes_0, _typeSignal}
|
|
,{2595,sizes_0, _typeSignal}
|
|
,{2592,sizes_0, _typeSignal}
|
|
,{2594,sizes_0, _typeSignal}
|
|
,{2596,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_20[23] = {
|
|
{2677,sizes_2, _typeSignal}
|
|
,{2675,sizes_2, _typeSignal}
|
|
,{2673,sizes_2, _typeSignal}
|
|
,{2669,sizes_2, _typeSignal}
|
|
,{2671,sizes_2, _typeSignal}
|
|
,{2667,sizes_2, _typeSignal}
|
|
,{2665,sizes_2, _typeSignal}
|
|
,{2663,sizes_2, _typeSignal}
|
|
,{2661,sizes_2, _typeSignal}
|
|
,{2659,sizes_2, _typeSignal}
|
|
,{2657,sizes_2, _typeSignal}
|
|
,{2653,sizes_2, _typeSignal}
|
|
,{2655,sizes_2, _typeSignal}
|
|
,{2651,sizes_2, _typeSignal}
|
|
,{2649,sizes_2, _typeSignal}
|
|
,{2647,sizes_2, _typeSignal}
|
|
,{2609,sizes_2_16, _typeSignal}
|
|
,{2645,sizes_2, _typeSignal}
|
|
,{2641,sizes_4, _typeSignal}
|
|
,{2679,sizes_0, _typeSignal}
|
|
,{2680,sizes_0, _typeSignal}
|
|
,{2681,sizes_0, _typeSignal}
|
|
,{2682,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_20[10] = {
|
|
{2689,sizes_0, _typeSignal}
|
|
,{2691,sizes_0, _typeSignal}
|
|
,{2690,sizes_0, _typeSignal}
|
|
,{2692,sizes_0, _typeSignal}
|
|
,{2683,sizes_0, _typeSignal}
|
|
,{2685,sizes_0, _typeSignal}
|
|
,{2687,sizes_0, _typeSignal}
|
|
,{2684,sizes_0, _typeSignal}
|
|
,{2686,sizes_0, _typeSignal}
|
|
,{2688,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_21[23] = {
|
|
{2769,sizes_2, _typeSignal}
|
|
,{2767,sizes_2, _typeSignal}
|
|
,{2765,sizes_2, _typeSignal}
|
|
,{2761,sizes_2, _typeSignal}
|
|
,{2763,sizes_2, _typeSignal}
|
|
,{2759,sizes_2, _typeSignal}
|
|
,{2757,sizes_2, _typeSignal}
|
|
,{2755,sizes_2, _typeSignal}
|
|
,{2753,sizes_2, _typeSignal}
|
|
,{2751,sizes_2, _typeSignal}
|
|
,{2749,sizes_2, _typeSignal}
|
|
,{2745,sizes_2, _typeSignal}
|
|
,{2747,sizes_2, _typeSignal}
|
|
,{2743,sizes_2, _typeSignal}
|
|
,{2741,sizes_2, _typeSignal}
|
|
,{2739,sizes_2, _typeSignal}
|
|
,{2701,sizes_2_16, _typeSignal}
|
|
,{2737,sizes_2, _typeSignal}
|
|
,{2733,sizes_4, _typeSignal}
|
|
,{2771,sizes_0, _typeSignal}
|
|
,{2772,sizes_0, _typeSignal}
|
|
,{2773,sizes_0, _typeSignal}
|
|
,{2774,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_21[10] = {
|
|
{2781,sizes_0, _typeSignal}
|
|
,{2783,sizes_0, _typeSignal}
|
|
,{2782,sizes_0, _typeSignal}
|
|
,{2784,sizes_0, _typeSignal}
|
|
,{2775,sizes_0, _typeSignal}
|
|
,{2777,sizes_0, _typeSignal}
|
|
,{2779,sizes_0, _typeSignal}
|
|
,{2776,sizes_0, _typeSignal}
|
|
,{2778,sizes_0, _typeSignal}
|
|
,{2780,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_22[23] = {
|
|
{2861,sizes_2, _typeSignal}
|
|
,{2859,sizes_2, _typeSignal}
|
|
,{2857,sizes_2, _typeSignal}
|
|
,{2853,sizes_2, _typeSignal}
|
|
,{2855,sizes_2, _typeSignal}
|
|
,{2851,sizes_2, _typeSignal}
|
|
,{2849,sizes_2, _typeSignal}
|
|
,{2847,sizes_2, _typeSignal}
|
|
,{2845,sizes_2, _typeSignal}
|
|
,{2843,sizes_2, _typeSignal}
|
|
,{2841,sizes_2, _typeSignal}
|
|
,{2837,sizes_2, _typeSignal}
|
|
,{2839,sizes_2, _typeSignal}
|
|
,{2835,sizes_2, _typeSignal}
|
|
,{2833,sizes_2, _typeSignal}
|
|
,{2831,sizes_2, _typeSignal}
|
|
,{2793,sizes_2_16, _typeSignal}
|
|
,{2829,sizes_2, _typeSignal}
|
|
,{2825,sizes_4, _typeSignal}
|
|
,{2863,sizes_0, _typeSignal}
|
|
,{2864,sizes_0, _typeSignal}
|
|
,{2865,sizes_0, _typeSignal}
|
|
,{2866,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_22[10] = {
|
|
{2873,sizes_0, _typeSignal}
|
|
,{2875,sizes_0, _typeSignal}
|
|
,{2874,sizes_0, _typeSignal}
|
|
,{2876,sizes_0, _typeSignal}
|
|
,{2867,sizes_0, _typeSignal}
|
|
,{2869,sizes_0, _typeSignal}
|
|
,{2871,sizes_0, _typeSignal}
|
|
,{2868,sizes_0, _typeSignal}
|
|
,{2870,sizes_0, _typeSignal}
|
|
,{2872,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_23[23] = {
|
|
{2953,sizes_2, _typeSignal}
|
|
,{2951,sizes_2, _typeSignal}
|
|
,{2949,sizes_2, _typeSignal}
|
|
,{2945,sizes_2, _typeSignal}
|
|
,{2947,sizes_2, _typeSignal}
|
|
,{2943,sizes_2, _typeSignal}
|
|
,{2941,sizes_2, _typeSignal}
|
|
,{2939,sizes_2, _typeSignal}
|
|
,{2937,sizes_2, _typeSignal}
|
|
,{2935,sizes_2, _typeSignal}
|
|
,{2933,sizes_2, _typeSignal}
|
|
,{2929,sizes_2, _typeSignal}
|
|
,{2931,sizes_2, _typeSignal}
|
|
,{2927,sizes_2, _typeSignal}
|
|
,{2925,sizes_2, _typeSignal}
|
|
,{2923,sizes_2, _typeSignal}
|
|
,{2885,sizes_2_16, _typeSignal}
|
|
,{2921,sizes_2, _typeSignal}
|
|
,{2917,sizes_4, _typeSignal}
|
|
,{2955,sizes_0, _typeSignal}
|
|
,{2956,sizes_0, _typeSignal}
|
|
,{2957,sizes_0, _typeSignal}
|
|
,{2958,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_23[10] = {
|
|
{2965,sizes_0, _typeSignal}
|
|
,{2967,sizes_0, _typeSignal}
|
|
,{2966,sizes_0, _typeSignal}
|
|
,{2968,sizes_0, _typeSignal}
|
|
,{2959,sizes_0, _typeSignal}
|
|
,{2961,sizes_0, _typeSignal}
|
|
,{2963,sizes_0, _typeSignal}
|
|
,{2960,sizes_0, _typeSignal}
|
|
,{2962,sizes_0, _typeSignal}
|
|
,{2964,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_24[23] = {
|
|
{3045,sizes_2, _typeSignal}
|
|
,{3043,sizes_2, _typeSignal}
|
|
,{3041,sizes_2, _typeSignal}
|
|
,{3037,sizes_2, _typeSignal}
|
|
,{3039,sizes_2, _typeSignal}
|
|
,{3035,sizes_2, _typeSignal}
|
|
,{3033,sizes_2, _typeSignal}
|
|
,{3031,sizes_2, _typeSignal}
|
|
,{3029,sizes_2, _typeSignal}
|
|
,{3027,sizes_2, _typeSignal}
|
|
,{3025,sizes_2, _typeSignal}
|
|
,{3021,sizes_2, _typeSignal}
|
|
,{3023,sizes_2, _typeSignal}
|
|
,{3019,sizes_2, _typeSignal}
|
|
,{3017,sizes_2, _typeSignal}
|
|
,{3015,sizes_2, _typeSignal}
|
|
,{2977,sizes_2_16, _typeSignal}
|
|
,{3013,sizes_2, _typeSignal}
|
|
,{3009,sizes_4, _typeSignal}
|
|
,{3047,sizes_0, _typeSignal}
|
|
,{3048,sizes_0, _typeSignal}
|
|
,{3049,sizes_0, _typeSignal}
|
|
,{3050,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_24[10] = {
|
|
{3057,sizes_0, _typeSignal}
|
|
,{3059,sizes_0, _typeSignal}
|
|
,{3058,sizes_0, _typeSignal}
|
|
,{3060,sizes_0, _typeSignal}
|
|
,{3051,sizes_0, _typeSignal}
|
|
,{3053,sizes_0, _typeSignal}
|
|
,{3055,sizes_0, _typeSignal}
|
|
,{3052,sizes_0, _typeSignal}
|
|
,{3054,sizes_0, _typeSignal}
|
|
,{3056,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_25[23] = {
|
|
{3137,sizes_2, _typeSignal}
|
|
,{3135,sizes_2, _typeSignal}
|
|
,{3133,sizes_2, _typeSignal}
|
|
,{3129,sizes_2, _typeSignal}
|
|
,{3131,sizes_2, _typeSignal}
|
|
,{3127,sizes_2, _typeSignal}
|
|
,{3125,sizes_2, _typeSignal}
|
|
,{3123,sizes_2, _typeSignal}
|
|
,{3121,sizes_2, _typeSignal}
|
|
,{3119,sizes_2, _typeSignal}
|
|
,{3117,sizes_2, _typeSignal}
|
|
,{3113,sizes_2, _typeSignal}
|
|
,{3115,sizes_2, _typeSignal}
|
|
,{3111,sizes_2, _typeSignal}
|
|
,{3109,sizes_2, _typeSignal}
|
|
,{3107,sizes_2, _typeSignal}
|
|
,{3069,sizes_2_16, _typeSignal}
|
|
,{3105,sizes_2, _typeSignal}
|
|
,{3101,sizes_4, _typeSignal}
|
|
,{3139,sizes_0, _typeSignal}
|
|
,{3140,sizes_0, _typeSignal}
|
|
,{3141,sizes_0, _typeSignal}
|
|
,{3142,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_25[10] = {
|
|
{3149,sizes_0, _typeSignal}
|
|
,{3151,sizes_0, _typeSignal}
|
|
,{3150,sizes_0, _typeSignal}
|
|
,{3152,sizes_0, _typeSignal}
|
|
,{3143,sizes_0, _typeSignal}
|
|
,{3145,sizes_0, _typeSignal}
|
|
,{3147,sizes_0, _typeSignal}
|
|
,{3144,sizes_0, _typeSignal}
|
|
,{3146,sizes_0, _typeSignal}
|
|
,{3148,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_26[23] = {
|
|
{3229,sizes_2, _typeSignal}
|
|
,{3227,sizes_2, _typeSignal}
|
|
,{3225,sizes_2, _typeSignal}
|
|
,{3221,sizes_2, _typeSignal}
|
|
,{3223,sizes_2, _typeSignal}
|
|
,{3219,sizes_2, _typeSignal}
|
|
,{3217,sizes_2, _typeSignal}
|
|
,{3215,sizes_2, _typeSignal}
|
|
,{3213,sizes_2, _typeSignal}
|
|
,{3211,sizes_2, _typeSignal}
|
|
,{3209,sizes_2, _typeSignal}
|
|
,{3205,sizes_2, _typeSignal}
|
|
,{3207,sizes_2, _typeSignal}
|
|
,{3203,sizes_2, _typeSignal}
|
|
,{3201,sizes_2, _typeSignal}
|
|
,{3199,sizes_2, _typeSignal}
|
|
,{3161,sizes_2_16, _typeSignal}
|
|
,{3197,sizes_2, _typeSignal}
|
|
,{3193,sizes_4, _typeSignal}
|
|
,{3231,sizes_0, _typeSignal}
|
|
,{3232,sizes_0, _typeSignal}
|
|
,{3233,sizes_0, _typeSignal}
|
|
,{3234,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_26[10] = {
|
|
{3241,sizes_0, _typeSignal}
|
|
,{3243,sizes_0, _typeSignal}
|
|
,{3242,sizes_0, _typeSignal}
|
|
,{3244,sizes_0, _typeSignal}
|
|
,{3235,sizes_0, _typeSignal}
|
|
,{3237,sizes_0, _typeSignal}
|
|
,{3239,sizes_0, _typeSignal}
|
|
,{3236,sizes_0, _typeSignal}
|
|
,{3238,sizes_0, _typeSignal}
|
|
,{3240,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_27[23] = {
|
|
{3321,sizes_2, _typeSignal}
|
|
,{3319,sizes_2, _typeSignal}
|
|
,{3317,sizes_2, _typeSignal}
|
|
,{3313,sizes_2, _typeSignal}
|
|
,{3315,sizes_2, _typeSignal}
|
|
,{3311,sizes_2, _typeSignal}
|
|
,{3309,sizes_2, _typeSignal}
|
|
,{3307,sizes_2, _typeSignal}
|
|
,{3305,sizes_2, _typeSignal}
|
|
,{3303,sizes_2, _typeSignal}
|
|
,{3301,sizes_2, _typeSignal}
|
|
,{3297,sizes_2, _typeSignal}
|
|
,{3299,sizes_2, _typeSignal}
|
|
,{3295,sizes_2, _typeSignal}
|
|
,{3293,sizes_2, _typeSignal}
|
|
,{3291,sizes_2, _typeSignal}
|
|
,{3253,sizes_2_16, _typeSignal}
|
|
,{3289,sizes_2, _typeSignal}
|
|
,{3285,sizes_4, _typeSignal}
|
|
,{3323,sizes_0, _typeSignal}
|
|
,{3324,sizes_0, _typeSignal}
|
|
,{3325,sizes_0, _typeSignal}
|
|
,{3326,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_27[10] = {
|
|
{3333,sizes_0, _typeSignal}
|
|
,{3335,sizes_0, _typeSignal}
|
|
,{3334,sizes_0, _typeSignal}
|
|
,{3336,sizes_0, _typeSignal}
|
|
,{3327,sizes_0, _typeSignal}
|
|
,{3329,sizes_0, _typeSignal}
|
|
,{3331,sizes_0, _typeSignal}
|
|
,{3328,sizes_0, _typeSignal}
|
|
,{3330,sizes_0, _typeSignal}
|
|
,{3332,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_28[23] = {
|
|
{3413,sizes_2, _typeSignal}
|
|
,{3411,sizes_2, _typeSignal}
|
|
,{3409,sizes_2, _typeSignal}
|
|
,{3405,sizes_2, _typeSignal}
|
|
,{3407,sizes_2, _typeSignal}
|
|
,{3403,sizes_2, _typeSignal}
|
|
,{3401,sizes_2, _typeSignal}
|
|
,{3399,sizes_2, _typeSignal}
|
|
,{3397,sizes_2, _typeSignal}
|
|
,{3395,sizes_2, _typeSignal}
|
|
,{3393,sizes_2, _typeSignal}
|
|
,{3389,sizes_2, _typeSignal}
|
|
,{3391,sizes_2, _typeSignal}
|
|
,{3387,sizes_2, _typeSignal}
|
|
,{3385,sizes_2, _typeSignal}
|
|
,{3383,sizes_2, _typeSignal}
|
|
,{3345,sizes_2_16, _typeSignal}
|
|
,{3381,sizes_2, _typeSignal}
|
|
,{3377,sizes_4, _typeSignal}
|
|
,{3415,sizes_0, _typeSignal}
|
|
,{3416,sizes_0, _typeSignal}
|
|
,{3417,sizes_0, _typeSignal}
|
|
,{3418,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_28[10] = {
|
|
{3425,sizes_0, _typeSignal}
|
|
,{3427,sizes_0, _typeSignal}
|
|
,{3426,sizes_0, _typeSignal}
|
|
,{3428,sizes_0, _typeSignal}
|
|
,{3419,sizes_0, _typeSignal}
|
|
,{3421,sizes_0, _typeSignal}
|
|
,{3423,sizes_0, _typeSignal}
|
|
,{3420,sizes_0, _typeSignal}
|
|
,{3422,sizes_0, _typeSignal}
|
|
,{3424,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_29[23] = {
|
|
{3505,sizes_2, _typeSignal}
|
|
,{3503,sizes_2, _typeSignal}
|
|
,{3501,sizes_2, _typeSignal}
|
|
,{3497,sizes_2, _typeSignal}
|
|
,{3499,sizes_2, _typeSignal}
|
|
,{3495,sizes_2, _typeSignal}
|
|
,{3493,sizes_2, _typeSignal}
|
|
,{3491,sizes_2, _typeSignal}
|
|
,{3489,sizes_2, _typeSignal}
|
|
,{3487,sizes_2, _typeSignal}
|
|
,{3485,sizes_2, _typeSignal}
|
|
,{3481,sizes_2, _typeSignal}
|
|
,{3483,sizes_2, _typeSignal}
|
|
,{3479,sizes_2, _typeSignal}
|
|
,{3477,sizes_2, _typeSignal}
|
|
,{3475,sizes_2, _typeSignal}
|
|
,{3437,sizes_2_16, _typeSignal}
|
|
,{3473,sizes_2, _typeSignal}
|
|
,{3469,sizes_4, _typeSignal}
|
|
,{3507,sizes_0, _typeSignal}
|
|
,{3508,sizes_0, _typeSignal}
|
|
,{3509,sizes_0, _typeSignal}
|
|
,{3510,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_29[10] = {
|
|
{3517,sizes_0, _typeSignal}
|
|
,{3519,sizes_0, _typeSignal}
|
|
,{3518,sizes_0, _typeSignal}
|
|
,{3520,sizes_0, _typeSignal}
|
|
,{3511,sizes_0, _typeSignal}
|
|
,{3513,sizes_0, _typeSignal}
|
|
,{3515,sizes_0, _typeSignal}
|
|
,{3512,sizes_0, _typeSignal}
|
|
,{3514,sizes_0, _typeSignal}
|
|
,{3516,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_30[23] = {
|
|
{3597,sizes_2, _typeSignal}
|
|
,{3595,sizes_2, _typeSignal}
|
|
,{3593,sizes_2, _typeSignal}
|
|
,{3589,sizes_2, _typeSignal}
|
|
,{3591,sizes_2, _typeSignal}
|
|
,{3587,sizes_2, _typeSignal}
|
|
,{3585,sizes_2, _typeSignal}
|
|
,{3583,sizes_2, _typeSignal}
|
|
,{3581,sizes_2, _typeSignal}
|
|
,{3579,sizes_2, _typeSignal}
|
|
,{3577,sizes_2, _typeSignal}
|
|
,{3573,sizes_2, _typeSignal}
|
|
,{3575,sizes_2, _typeSignal}
|
|
,{3571,sizes_2, _typeSignal}
|
|
,{3569,sizes_2, _typeSignal}
|
|
,{3567,sizes_2, _typeSignal}
|
|
,{3529,sizes_2_16, _typeSignal}
|
|
,{3565,sizes_2, _typeSignal}
|
|
,{3561,sizes_4, _typeSignal}
|
|
,{3599,sizes_0, _typeSignal}
|
|
,{3600,sizes_0, _typeSignal}
|
|
,{3601,sizes_0, _typeSignal}
|
|
,{3602,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_30[10] = {
|
|
{3609,sizes_0, _typeSignal}
|
|
,{3611,sizes_0, _typeSignal}
|
|
,{3610,sizes_0, _typeSignal}
|
|
,{3612,sizes_0, _typeSignal}
|
|
,{3603,sizes_0, _typeSignal}
|
|
,{3605,sizes_0, _typeSignal}
|
|
,{3607,sizes_0, _typeSignal}
|
|
,{3604,sizes_0, _typeSignal}
|
|
,{3606,sizes_0, _typeSignal}
|
|
,{3608,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_31[23] = {
|
|
{3689,sizes_2, _typeSignal}
|
|
,{3687,sizes_2, _typeSignal}
|
|
,{3685,sizes_2, _typeSignal}
|
|
,{3681,sizes_2, _typeSignal}
|
|
,{3683,sizes_2, _typeSignal}
|
|
,{3679,sizes_2, _typeSignal}
|
|
,{3677,sizes_2, _typeSignal}
|
|
,{3675,sizes_2, _typeSignal}
|
|
,{3673,sizes_2, _typeSignal}
|
|
,{3671,sizes_2, _typeSignal}
|
|
,{3669,sizes_2, _typeSignal}
|
|
,{3665,sizes_2, _typeSignal}
|
|
,{3667,sizes_2, _typeSignal}
|
|
,{3663,sizes_2, _typeSignal}
|
|
,{3661,sizes_2, _typeSignal}
|
|
,{3659,sizes_2, _typeSignal}
|
|
,{3621,sizes_2_16, _typeSignal}
|
|
,{3657,sizes_2, _typeSignal}
|
|
,{3653,sizes_4, _typeSignal}
|
|
,{3691,sizes_0, _typeSignal}
|
|
,{3692,sizes_0, _typeSignal}
|
|
,{3693,sizes_0, _typeSignal}
|
|
,{3694,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_31[10] = {
|
|
{3701,sizes_0, _typeSignal}
|
|
,{3703,sizes_0, _typeSignal}
|
|
,{3702,sizes_0, _typeSignal}
|
|
,{3704,sizes_0, _typeSignal}
|
|
,{3695,sizes_0, _typeSignal}
|
|
,{3697,sizes_0, _typeSignal}
|
|
,{3699,sizes_0, _typeSignal}
|
|
,{3696,sizes_0, _typeSignal}
|
|
,{3698,sizes_0, _typeSignal}
|
|
,{3700,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_32[23] = {
|
|
{3781,sizes_2, _typeSignal}
|
|
,{3779,sizes_2, _typeSignal}
|
|
,{3777,sizes_2, _typeSignal}
|
|
,{3773,sizes_2, _typeSignal}
|
|
,{3775,sizes_2, _typeSignal}
|
|
,{3771,sizes_2, _typeSignal}
|
|
,{3769,sizes_2, _typeSignal}
|
|
,{3767,sizes_2, _typeSignal}
|
|
,{3765,sizes_2, _typeSignal}
|
|
,{3763,sizes_2, _typeSignal}
|
|
,{3761,sizes_2, _typeSignal}
|
|
,{3757,sizes_2, _typeSignal}
|
|
,{3759,sizes_2, _typeSignal}
|
|
,{3755,sizes_2, _typeSignal}
|
|
,{3753,sizes_2, _typeSignal}
|
|
,{3751,sizes_2, _typeSignal}
|
|
,{3713,sizes_2_16, _typeSignal}
|
|
,{3749,sizes_2, _typeSignal}
|
|
,{3745,sizes_4, _typeSignal}
|
|
,{3783,sizes_0, _typeSignal}
|
|
,{3784,sizes_0, _typeSignal}
|
|
,{3785,sizes_0, _typeSignal}
|
|
,{3786,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_32[10] = {
|
|
{3793,sizes_0, _typeSignal}
|
|
,{3795,sizes_0, _typeSignal}
|
|
,{3794,sizes_0, _typeSignal}
|
|
,{3796,sizes_0, _typeSignal}
|
|
,{3787,sizes_0, _typeSignal}
|
|
,{3789,sizes_0, _typeSignal}
|
|
,{3791,sizes_0, _typeSignal}
|
|
,{3788,sizes_0, _typeSignal}
|
|
,{3790,sizes_0, _typeSignal}
|
|
,{3792,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_33[23] = {
|
|
{3873,sizes_2, _typeSignal}
|
|
,{3871,sizes_2, _typeSignal}
|
|
,{3869,sizes_2, _typeSignal}
|
|
,{3865,sizes_2, _typeSignal}
|
|
,{3867,sizes_2, _typeSignal}
|
|
,{3863,sizes_2, _typeSignal}
|
|
,{3861,sizes_2, _typeSignal}
|
|
,{3859,sizes_2, _typeSignal}
|
|
,{3857,sizes_2, _typeSignal}
|
|
,{3855,sizes_2, _typeSignal}
|
|
,{3853,sizes_2, _typeSignal}
|
|
,{3849,sizes_2, _typeSignal}
|
|
,{3851,sizes_2, _typeSignal}
|
|
,{3847,sizes_2, _typeSignal}
|
|
,{3845,sizes_2, _typeSignal}
|
|
,{3843,sizes_2, _typeSignal}
|
|
,{3805,sizes_2_16, _typeSignal}
|
|
,{3841,sizes_2, _typeSignal}
|
|
,{3837,sizes_4, _typeSignal}
|
|
,{3875,sizes_0, _typeSignal}
|
|
,{3876,sizes_0, _typeSignal}
|
|
,{3877,sizes_0, _typeSignal}
|
|
,{3878,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_33[10] = {
|
|
{3885,sizes_0, _typeSignal}
|
|
,{3887,sizes_0, _typeSignal}
|
|
,{3886,sizes_0, _typeSignal}
|
|
,{3888,sizes_0, _typeSignal}
|
|
,{3879,sizes_0, _typeSignal}
|
|
,{3881,sizes_0, _typeSignal}
|
|
,{3883,sizes_0, _typeSignal}
|
|
,{3880,sizes_0, _typeSignal}
|
|
,{3882,sizes_0, _typeSignal}
|
|
,{3884,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_34[23] = {
|
|
{3965,sizes_2, _typeSignal}
|
|
,{3963,sizes_2, _typeSignal}
|
|
,{3961,sizes_2, _typeSignal}
|
|
,{3957,sizes_2, _typeSignal}
|
|
,{3959,sizes_2, _typeSignal}
|
|
,{3955,sizes_2, _typeSignal}
|
|
,{3953,sizes_2, _typeSignal}
|
|
,{3951,sizes_2, _typeSignal}
|
|
,{3949,sizes_2, _typeSignal}
|
|
,{3947,sizes_2, _typeSignal}
|
|
,{3945,sizes_2, _typeSignal}
|
|
,{3941,sizes_2, _typeSignal}
|
|
,{3943,sizes_2, _typeSignal}
|
|
,{3939,sizes_2, _typeSignal}
|
|
,{3937,sizes_2, _typeSignal}
|
|
,{3935,sizes_2, _typeSignal}
|
|
,{3897,sizes_2_16, _typeSignal}
|
|
,{3933,sizes_2, _typeSignal}
|
|
,{3929,sizes_4, _typeSignal}
|
|
,{3967,sizes_0, _typeSignal}
|
|
,{3968,sizes_0, _typeSignal}
|
|
,{3969,sizes_0, _typeSignal}
|
|
,{3970,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_34[10] = {
|
|
{3977,sizes_0, _typeSignal}
|
|
,{3979,sizes_0, _typeSignal}
|
|
,{3978,sizes_0, _typeSignal}
|
|
,{3980,sizes_0, _typeSignal}
|
|
,{3971,sizes_0, _typeSignal}
|
|
,{3973,sizes_0, _typeSignal}
|
|
,{3975,sizes_0, _typeSignal}
|
|
,{3972,sizes_0, _typeSignal}
|
|
,{3974,sizes_0, _typeSignal}
|
|
,{3976,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_35[23] = {
|
|
{4057,sizes_2, _typeSignal}
|
|
,{4055,sizes_2, _typeSignal}
|
|
,{4053,sizes_2, _typeSignal}
|
|
,{4049,sizes_2, _typeSignal}
|
|
,{4051,sizes_2, _typeSignal}
|
|
,{4047,sizes_2, _typeSignal}
|
|
,{4045,sizes_2, _typeSignal}
|
|
,{4043,sizes_2, _typeSignal}
|
|
,{4041,sizes_2, _typeSignal}
|
|
,{4039,sizes_2, _typeSignal}
|
|
,{4037,sizes_2, _typeSignal}
|
|
,{4033,sizes_2, _typeSignal}
|
|
,{4035,sizes_2, _typeSignal}
|
|
,{4031,sizes_2, _typeSignal}
|
|
,{4029,sizes_2, _typeSignal}
|
|
,{4027,sizes_2, _typeSignal}
|
|
,{3989,sizes_2_16, _typeSignal}
|
|
,{4025,sizes_2, _typeSignal}
|
|
,{4021,sizes_4, _typeSignal}
|
|
,{4059,sizes_0, _typeSignal}
|
|
,{4060,sizes_0, _typeSignal}
|
|
,{4061,sizes_0, _typeSignal}
|
|
,{4062,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_35[10] = {
|
|
{4069,sizes_0, _typeSignal}
|
|
,{4071,sizes_0, _typeSignal}
|
|
,{4070,sizes_0, _typeSignal}
|
|
,{4072,sizes_0, _typeSignal}
|
|
,{4063,sizes_0, _typeSignal}
|
|
,{4065,sizes_0, _typeSignal}
|
|
,{4067,sizes_0, _typeSignal}
|
|
,{4064,sizes_0, _typeSignal}
|
|
,{4066,sizes_0, _typeSignal}
|
|
,{4068,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_36[23] = {
|
|
{4149,sizes_2, _typeSignal}
|
|
,{4147,sizes_2, _typeSignal}
|
|
,{4145,sizes_2, _typeSignal}
|
|
,{4141,sizes_2, _typeSignal}
|
|
,{4143,sizes_2, _typeSignal}
|
|
,{4139,sizes_2, _typeSignal}
|
|
,{4137,sizes_2, _typeSignal}
|
|
,{4135,sizes_2, _typeSignal}
|
|
,{4133,sizes_2, _typeSignal}
|
|
,{4131,sizes_2, _typeSignal}
|
|
,{4129,sizes_2, _typeSignal}
|
|
,{4125,sizes_2, _typeSignal}
|
|
,{4127,sizes_2, _typeSignal}
|
|
,{4123,sizes_2, _typeSignal}
|
|
,{4121,sizes_2, _typeSignal}
|
|
,{4119,sizes_2, _typeSignal}
|
|
,{4081,sizes_2_16, _typeSignal}
|
|
,{4117,sizes_2, _typeSignal}
|
|
,{4113,sizes_4, _typeSignal}
|
|
,{4151,sizes_0, _typeSignal}
|
|
,{4152,sizes_0, _typeSignal}
|
|
,{4153,sizes_0, _typeSignal}
|
|
,{4154,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_36[10] = {
|
|
{4161,sizes_0, _typeSignal}
|
|
,{4163,sizes_0, _typeSignal}
|
|
,{4162,sizes_0, _typeSignal}
|
|
,{4164,sizes_0, _typeSignal}
|
|
,{4155,sizes_0, _typeSignal}
|
|
,{4157,sizes_0, _typeSignal}
|
|
,{4159,sizes_0, _typeSignal}
|
|
,{4156,sizes_0, _typeSignal}
|
|
,{4158,sizes_0, _typeSignal}
|
|
,{4160,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_37[23] = {
|
|
{4241,sizes_2, _typeSignal}
|
|
,{4239,sizes_2, _typeSignal}
|
|
,{4237,sizes_2, _typeSignal}
|
|
,{4233,sizes_2, _typeSignal}
|
|
,{4235,sizes_2, _typeSignal}
|
|
,{4231,sizes_2, _typeSignal}
|
|
,{4229,sizes_2, _typeSignal}
|
|
,{4227,sizes_2, _typeSignal}
|
|
,{4225,sizes_2, _typeSignal}
|
|
,{4223,sizes_2, _typeSignal}
|
|
,{4221,sizes_2, _typeSignal}
|
|
,{4217,sizes_2, _typeSignal}
|
|
,{4219,sizes_2, _typeSignal}
|
|
,{4215,sizes_2, _typeSignal}
|
|
,{4213,sizes_2, _typeSignal}
|
|
,{4211,sizes_2, _typeSignal}
|
|
,{4173,sizes_2_16, _typeSignal}
|
|
,{4209,sizes_2, _typeSignal}
|
|
,{4205,sizes_4, _typeSignal}
|
|
,{4243,sizes_0, _typeSignal}
|
|
,{4244,sizes_0, _typeSignal}
|
|
,{4245,sizes_0, _typeSignal}
|
|
,{4246,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_37[10] = {
|
|
{4253,sizes_0, _typeSignal}
|
|
,{4255,sizes_0, _typeSignal}
|
|
,{4254,sizes_0, _typeSignal}
|
|
,{4256,sizes_0, _typeSignal}
|
|
,{4247,sizes_0, _typeSignal}
|
|
,{4249,sizes_0, _typeSignal}
|
|
,{4251,sizes_0, _typeSignal}
|
|
,{4248,sizes_0, _typeSignal}
|
|
,{4250,sizes_0, _typeSignal}
|
|
,{4252,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_38[23] = {
|
|
{4333,sizes_2, _typeSignal}
|
|
,{4331,sizes_2, _typeSignal}
|
|
,{4329,sizes_2, _typeSignal}
|
|
,{4325,sizes_2, _typeSignal}
|
|
,{4327,sizes_2, _typeSignal}
|
|
,{4323,sizes_2, _typeSignal}
|
|
,{4321,sizes_2, _typeSignal}
|
|
,{4319,sizes_2, _typeSignal}
|
|
,{4317,sizes_2, _typeSignal}
|
|
,{4315,sizes_2, _typeSignal}
|
|
,{4313,sizes_2, _typeSignal}
|
|
,{4309,sizes_2, _typeSignal}
|
|
,{4311,sizes_2, _typeSignal}
|
|
,{4307,sizes_2, _typeSignal}
|
|
,{4305,sizes_2, _typeSignal}
|
|
,{4303,sizes_2, _typeSignal}
|
|
,{4265,sizes_2_16, _typeSignal}
|
|
,{4301,sizes_2, _typeSignal}
|
|
,{4297,sizes_4, _typeSignal}
|
|
,{4335,sizes_0, _typeSignal}
|
|
,{4336,sizes_0, _typeSignal}
|
|
,{4337,sizes_0, _typeSignal}
|
|
,{4338,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_38[10] = {
|
|
{4345,sizes_0, _typeSignal}
|
|
,{4347,sizes_0, _typeSignal}
|
|
,{4346,sizes_0, _typeSignal}
|
|
,{4348,sizes_0, _typeSignal}
|
|
,{4339,sizes_0, _typeSignal}
|
|
,{4341,sizes_0, _typeSignal}
|
|
,{4343,sizes_0, _typeSignal}
|
|
,{4340,sizes_0, _typeSignal}
|
|
,{4342,sizes_0, _typeSignal}
|
|
,{4344,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_39[23] = {
|
|
{4425,sizes_2, _typeSignal}
|
|
,{4423,sizes_2, _typeSignal}
|
|
,{4421,sizes_2, _typeSignal}
|
|
,{4417,sizes_2, _typeSignal}
|
|
,{4419,sizes_2, _typeSignal}
|
|
,{4415,sizes_2, _typeSignal}
|
|
,{4413,sizes_2, _typeSignal}
|
|
,{4411,sizes_2, _typeSignal}
|
|
,{4409,sizes_2, _typeSignal}
|
|
,{4407,sizes_2, _typeSignal}
|
|
,{4405,sizes_2, _typeSignal}
|
|
,{4401,sizes_2, _typeSignal}
|
|
,{4403,sizes_2, _typeSignal}
|
|
,{4399,sizes_2, _typeSignal}
|
|
,{4397,sizes_2, _typeSignal}
|
|
,{4395,sizes_2, _typeSignal}
|
|
,{4357,sizes_2_16, _typeSignal}
|
|
,{4393,sizes_2, _typeSignal}
|
|
,{4389,sizes_4, _typeSignal}
|
|
,{4427,sizes_0, _typeSignal}
|
|
,{4428,sizes_0, _typeSignal}
|
|
,{4429,sizes_0, _typeSignal}
|
|
,{4430,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_39[10] = {
|
|
{4437,sizes_0, _typeSignal}
|
|
,{4439,sizes_0, _typeSignal}
|
|
,{4438,sizes_0, _typeSignal}
|
|
,{4440,sizes_0, _typeSignal}
|
|
,{4431,sizes_0, _typeSignal}
|
|
,{4433,sizes_0, _typeSignal}
|
|
,{4435,sizes_0, _typeSignal}
|
|
,{4432,sizes_0, _typeSignal}
|
|
,{4434,sizes_0, _typeSignal}
|
|
,{4436,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_40[23] = {
|
|
{4517,sizes_2, _typeSignal}
|
|
,{4515,sizes_2, _typeSignal}
|
|
,{4513,sizes_2, _typeSignal}
|
|
,{4509,sizes_2, _typeSignal}
|
|
,{4511,sizes_2, _typeSignal}
|
|
,{4507,sizes_2, _typeSignal}
|
|
,{4505,sizes_2, _typeSignal}
|
|
,{4503,sizes_2, _typeSignal}
|
|
,{4501,sizes_2, _typeSignal}
|
|
,{4499,sizes_2, _typeSignal}
|
|
,{4497,sizes_2, _typeSignal}
|
|
,{4493,sizes_2, _typeSignal}
|
|
,{4495,sizes_2, _typeSignal}
|
|
,{4491,sizes_2, _typeSignal}
|
|
,{4489,sizes_2, _typeSignal}
|
|
,{4487,sizes_2, _typeSignal}
|
|
,{4449,sizes_2_16, _typeSignal}
|
|
,{4485,sizes_2, _typeSignal}
|
|
,{4481,sizes_4, _typeSignal}
|
|
,{4519,sizes_0, _typeSignal}
|
|
,{4520,sizes_0, _typeSignal}
|
|
,{4521,sizes_0, _typeSignal}
|
|
,{4522,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_40[10] = {
|
|
{4529,sizes_0, _typeSignal}
|
|
,{4531,sizes_0, _typeSignal}
|
|
,{4530,sizes_0, _typeSignal}
|
|
,{4532,sizes_0, _typeSignal}
|
|
,{4523,sizes_0, _typeSignal}
|
|
,{4525,sizes_0, _typeSignal}
|
|
,{4527,sizes_0, _typeSignal}
|
|
,{4524,sizes_0, _typeSignal}
|
|
,{4526,sizes_0, _typeSignal}
|
|
,{4528,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_41[23] = {
|
|
{4609,sizes_2, _typeSignal}
|
|
,{4607,sizes_2, _typeSignal}
|
|
,{4605,sizes_2, _typeSignal}
|
|
,{4601,sizes_2, _typeSignal}
|
|
,{4603,sizes_2, _typeSignal}
|
|
,{4599,sizes_2, _typeSignal}
|
|
,{4597,sizes_2, _typeSignal}
|
|
,{4595,sizes_2, _typeSignal}
|
|
,{4593,sizes_2, _typeSignal}
|
|
,{4591,sizes_2, _typeSignal}
|
|
,{4589,sizes_2, _typeSignal}
|
|
,{4585,sizes_2, _typeSignal}
|
|
,{4587,sizes_2, _typeSignal}
|
|
,{4583,sizes_2, _typeSignal}
|
|
,{4581,sizes_2, _typeSignal}
|
|
,{4579,sizes_2, _typeSignal}
|
|
,{4541,sizes_2_16, _typeSignal}
|
|
,{4577,sizes_2, _typeSignal}
|
|
,{4573,sizes_4, _typeSignal}
|
|
,{4611,sizes_0, _typeSignal}
|
|
,{4612,sizes_0, _typeSignal}
|
|
,{4613,sizes_0, _typeSignal}
|
|
,{4614,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_41[10] = {
|
|
{4621,sizes_0, _typeSignal}
|
|
,{4623,sizes_0, _typeSignal}
|
|
,{4622,sizes_0, _typeSignal}
|
|
,{4624,sizes_0, _typeSignal}
|
|
,{4615,sizes_0, _typeSignal}
|
|
,{4617,sizes_0, _typeSignal}
|
|
,{4619,sizes_0, _typeSignal}
|
|
,{4616,sizes_0, _typeSignal}
|
|
,{4618,sizes_0, _typeSignal}
|
|
,{4620,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_42[23] = {
|
|
{4701,sizes_2, _typeSignal}
|
|
,{4699,sizes_2, _typeSignal}
|
|
,{4697,sizes_2, _typeSignal}
|
|
,{4693,sizes_2, _typeSignal}
|
|
,{4695,sizes_2, _typeSignal}
|
|
,{4691,sizes_2, _typeSignal}
|
|
,{4689,sizes_2, _typeSignal}
|
|
,{4687,sizes_2, _typeSignal}
|
|
,{4685,sizes_2, _typeSignal}
|
|
,{4683,sizes_2, _typeSignal}
|
|
,{4681,sizes_2, _typeSignal}
|
|
,{4677,sizes_2, _typeSignal}
|
|
,{4679,sizes_2, _typeSignal}
|
|
,{4675,sizes_2, _typeSignal}
|
|
,{4673,sizes_2, _typeSignal}
|
|
,{4671,sizes_2, _typeSignal}
|
|
,{4633,sizes_2_16, _typeSignal}
|
|
,{4669,sizes_2, _typeSignal}
|
|
,{4665,sizes_4, _typeSignal}
|
|
,{4703,sizes_0, _typeSignal}
|
|
,{4704,sizes_0, _typeSignal}
|
|
,{4705,sizes_0, _typeSignal}
|
|
,{4706,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_42[10] = {
|
|
{4713,sizes_0, _typeSignal}
|
|
,{4715,sizes_0, _typeSignal}
|
|
,{4714,sizes_0, _typeSignal}
|
|
,{4716,sizes_0, _typeSignal}
|
|
,{4707,sizes_0, _typeSignal}
|
|
,{4709,sizes_0, _typeSignal}
|
|
,{4711,sizes_0, _typeSignal}
|
|
,{4708,sizes_0, _typeSignal}
|
|
,{4710,sizes_0, _typeSignal}
|
|
,{4712,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_43[23] = {
|
|
{4793,sizes_2, _typeSignal}
|
|
,{4791,sizes_2, _typeSignal}
|
|
,{4789,sizes_2, _typeSignal}
|
|
,{4785,sizes_2, _typeSignal}
|
|
,{4787,sizes_2, _typeSignal}
|
|
,{4783,sizes_2, _typeSignal}
|
|
,{4781,sizes_2, _typeSignal}
|
|
,{4779,sizes_2, _typeSignal}
|
|
,{4777,sizes_2, _typeSignal}
|
|
,{4775,sizes_2, _typeSignal}
|
|
,{4773,sizes_2, _typeSignal}
|
|
,{4769,sizes_2, _typeSignal}
|
|
,{4771,sizes_2, _typeSignal}
|
|
,{4767,sizes_2, _typeSignal}
|
|
,{4765,sizes_2, _typeSignal}
|
|
,{4763,sizes_2, _typeSignal}
|
|
,{4725,sizes_2_16, _typeSignal}
|
|
,{4761,sizes_2, _typeSignal}
|
|
,{4757,sizes_4, _typeSignal}
|
|
,{4795,sizes_0, _typeSignal}
|
|
,{4796,sizes_0, _typeSignal}
|
|
,{4797,sizes_0, _typeSignal}
|
|
,{4798,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_43[10] = {
|
|
{4805,sizes_0, _typeSignal}
|
|
,{4807,sizes_0, _typeSignal}
|
|
,{4806,sizes_0, _typeSignal}
|
|
,{4808,sizes_0, _typeSignal}
|
|
,{4799,sizes_0, _typeSignal}
|
|
,{4801,sizes_0, _typeSignal}
|
|
,{4803,sizes_0, _typeSignal}
|
|
,{4800,sizes_0, _typeSignal}
|
|
,{4802,sizes_0, _typeSignal}
|
|
,{4804,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_44[23] = {
|
|
{4885,sizes_2, _typeSignal}
|
|
,{4883,sizes_2, _typeSignal}
|
|
,{4881,sizes_2, _typeSignal}
|
|
,{4877,sizes_2, _typeSignal}
|
|
,{4879,sizes_2, _typeSignal}
|
|
,{4875,sizes_2, _typeSignal}
|
|
,{4873,sizes_2, _typeSignal}
|
|
,{4871,sizes_2, _typeSignal}
|
|
,{4869,sizes_2, _typeSignal}
|
|
,{4867,sizes_2, _typeSignal}
|
|
,{4865,sizes_2, _typeSignal}
|
|
,{4861,sizes_2, _typeSignal}
|
|
,{4863,sizes_2, _typeSignal}
|
|
,{4859,sizes_2, _typeSignal}
|
|
,{4857,sizes_2, _typeSignal}
|
|
,{4855,sizes_2, _typeSignal}
|
|
,{4817,sizes_2_16, _typeSignal}
|
|
,{4853,sizes_2, _typeSignal}
|
|
,{4849,sizes_4, _typeSignal}
|
|
,{4887,sizes_0, _typeSignal}
|
|
,{4888,sizes_0, _typeSignal}
|
|
,{4889,sizes_0, _typeSignal}
|
|
,{4890,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_44[10] = {
|
|
{4897,sizes_0, _typeSignal}
|
|
,{4899,sizes_0, _typeSignal}
|
|
,{4898,sizes_0, _typeSignal}
|
|
,{4900,sizes_0, _typeSignal}
|
|
,{4891,sizes_0, _typeSignal}
|
|
,{4893,sizes_0, _typeSignal}
|
|
,{4895,sizes_0, _typeSignal}
|
|
,{4892,sizes_0, _typeSignal}
|
|
,{4894,sizes_0, _typeSignal}
|
|
,{4896,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_45[23] = {
|
|
{4977,sizes_2, _typeSignal}
|
|
,{4975,sizes_2, _typeSignal}
|
|
,{4973,sizes_2, _typeSignal}
|
|
,{4969,sizes_2, _typeSignal}
|
|
,{4971,sizes_2, _typeSignal}
|
|
,{4967,sizes_2, _typeSignal}
|
|
,{4965,sizes_2, _typeSignal}
|
|
,{4963,sizes_2, _typeSignal}
|
|
,{4961,sizes_2, _typeSignal}
|
|
,{4959,sizes_2, _typeSignal}
|
|
,{4957,sizes_2, _typeSignal}
|
|
,{4953,sizes_2, _typeSignal}
|
|
,{4955,sizes_2, _typeSignal}
|
|
,{4951,sizes_2, _typeSignal}
|
|
,{4949,sizes_2, _typeSignal}
|
|
,{4947,sizes_2, _typeSignal}
|
|
,{4909,sizes_2_16, _typeSignal}
|
|
,{4945,sizes_2, _typeSignal}
|
|
,{4941,sizes_4, _typeSignal}
|
|
,{4979,sizes_0, _typeSignal}
|
|
,{4980,sizes_0, _typeSignal}
|
|
,{4981,sizes_0, _typeSignal}
|
|
,{4982,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_45[10] = {
|
|
{4989,sizes_0, _typeSignal}
|
|
,{4991,sizes_0, _typeSignal}
|
|
,{4990,sizes_0, _typeSignal}
|
|
,{4992,sizes_0, _typeSignal}
|
|
,{4983,sizes_0, _typeSignal}
|
|
,{4985,sizes_0, _typeSignal}
|
|
,{4987,sizes_0, _typeSignal}
|
|
,{4984,sizes_0, _typeSignal}
|
|
,{4986,sizes_0, _typeSignal}
|
|
,{4988,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_46[23] = {
|
|
{5069,sizes_2, _typeSignal}
|
|
,{5067,sizes_2, _typeSignal}
|
|
,{5065,sizes_2, _typeSignal}
|
|
,{5061,sizes_2, _typeSignal}
|
|
,{5063,sizes_2, _typeSignal}
|
|
,{5059,sizes_2, _typeSignal}
|
|
,{5057,sizes_2, _typeSignal}
|
|
,{5055,sizes_2, _typeSignal}
|
|
,{5053,sizes_2, _typeSignal}
|
|
,{5051,sizes_2, _typeSignal}
|
|
,{5049,sizes_2, _typeSignal}
|
|
,{5045,sizes_2, _typeSignal}
|
|
,{5047,sizes_2, _typeSignal}
|
|
,{5043,sizes_2, _typeSignal}
|
|
,{5041,sizes_2, _typeSignal}
|
|
,{5039,sizes_2, _typeSignal}
|
|
,{5001,sizes_2_16, _typeSignal}
|
|
,{5037,sizes_2, _typeSignal}
|
|
,{5033,sizes_4, _typeSignal}
|
|
,{5071,sizes_0, _typeSignal}
|
|
,{5072,sizes_0, _typeSignal}
|
|
,{5073,sizes_0, _typeSignal}
|
|
,{5074,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_46[10] = {
|
|
{5081,sizes_0, _typeSignal}
|
|
,{5083,sizes_0, _typeSignal}
|
|
,{5082,sizes_0, _typeSignal}
|
|
,{5084,sizes_0, _typeSignal}
|
|
,{5075,sizes_0, _typeSignal}
|
|
,{5077,sizes_0, _typeSignal}
|
|
,{5079,sizes_0, _typeSignal}
|
|
,{5076,sizes_0, _typeSignal}
|
|
,{5078,sizes_0, _typeSignal}
|
|
,{5080,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_47[23] = {
|
|
{5161,sizes_2, _typeSignal}
|
|
,{5159,sizes_2, _typeSignal}
|
|
,{5157,sizes_2, _typeSignal}
|
|
,{5153,sizes_2, _typeSignal}
|
|
,{5155,sizes_2, _typeSignal}
|
|
,{5151,sizes_2, _typeSignal}
|
|
,{5149,sizes_2, _typeSignal}
|
|
,{5147,sizes_2, _typeSignal}
|
|
,{5145,sizes_2, _typeSignal}
|
|
,{5143,sizes_2, _typeSignal}
|
|
,{5141,sizes_2, _typeSignal}
|
|
,{5137,sizes_2, _typeSignal}
|
|
,{5139,sizes_2, _typeSignal}
|
|
,{5135,sizes_2, _typeSignal}
|
|
,{5133,sizes_2, _typeSignal}
|
|
,{5131,sizes_2, _typeSignal}
|
|
,{5093,sizes_2_16, _typeSignal}
|
|
,{5129,sizes_2, _typeSignal}
|
|
,{5125,sizes_4, _typeSignal}
|
|
,{5163,sizes_0, _typeSignal}
|
|
,{5164,sizes_0, _typeSignal}
|
|
,{5165,sizes_0, _typeSignal}
|
|
,{5166,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_47[10] = {
|
|
{5173,sizes_0, _typeSignal}
|
|
,{5175,sizes_0, _typeSignal}
|
|
,{5174,sizes_0, _typeSignal}
|
|
,{5176,sizes_0, _typeSignal}
|
|
,{5167,sizes_0, _typeSignal}
|
|
,{5169,sizes_0, _typeSignal}
|
|
,{5171,sizes_0, _typeSignal}
|
|
,{5168,sizes_0, _typeSignal}
|
|
,{5170,sizes_0, _typeSignal}
|
|
,{5172,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_48[23] = {
|
|
{5253,sizes_2, _typeSignal}
|
|
,{5251,sizes_2, _typeSignal}
|
|
,{5249,sizes_2, _typeSignal}
|
|
,{5245,sizes_2, _typeSignal}
|
|
,{5247,sizes_2, _typeSignal}
|
|
,{5243,sizes_2, _typeSignal}
|
|
,{5241,sizes_2, _typeSignal}
|
|
,{5239,sizes_2, _typeSignal}
|
|
,{5237,sizes_2, _typeSignal}
|
|
,{5235,sizes_2, _typeSignal}
|
|
,{5233,sizes_2, _typeSignal}
|
|
,{5229,sizes_2, _typeSignal}
|
|
,{5231,sizes_2, _typeSignal}
|
|
,{5227,sizes_2, _typeSignal}
|
|
,{5225,sizes_2, _typeSignal}
|
|
,{5223,sizes_2, _typeSignal}
|
|
,{5185,sizes_2_16, _typeSignal}
|
|
,{5221,sizes_2, _typeSignal}
|
|
,{5217,sizes_4, _typeSignal}
|
|
,{5255,sizes_0, _typeSignal}
|
|
,{5256,sizes_0, _typeSignal}
|
|
,{5257,sizes_0, _typeSignal}
|
|
,{5258,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_48[10] = {
|
|
{5265,sizes_0, _typeSignal}
|
|
,{5267,sizes_0, _typeSignal}
|
|
,{5266,sizes_0, _typeSignal}
|
|
,{5268,sizes_0, _typeSignal}
|
|
,{5259,sizes_0, _typeSignal}
|
|
,{5261,sizes_0, _typeSignal}
|
|
,{5263,sizes_0, _typeSignal}
|
|
,{5260,sizes_0, _typeSignal}
|
|
,{5262,sizes_0, _typeSignal}
|
|
,{5264,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_49[23] = {
|
|
{5345,sizes_2, _typeSignal}
|
|
,{5343,sizes_2, _typeSignal}
|
|
,{5341,sizes_2, _typeSignal}
|
|
,{5337,sizes_2, _typeSignal}
|
|
,{5339,sizes_2, _typeSignal}
|
|
,{5335,sizes_2, _typeSignal}
|
|
,{5333,sizes_2, _typeSignal}
|
|
,{5331,sizes_2, _typeSignal}
|
|
,{5329,sizes_2, _typeSignal}
|
|
,{5327,sizes_2, _typeSignal}
|
|
,{5325,sizes_2, _typeSignal}
|
|
,{5321,sizes_2, _typeSignal}
|
|
,{5323,sizes_2, _typeSignal}
|
|
,{5319,sizes_2, _typeSignal}
|
|
,{5317,sizes_2, _typeSignal}
|
|
,{5315,sizes_2, _typeSignal}
|
|
,{5277,sizes_2_16, _typeSignal}
|
|
,{5313,sizes_2, _typeSignal}
|
|
,{5309,sizes_4, _typeSignal}
|
|
,{5347,sizes_0, _typeSignal}
|
|
,{5348,sizes_0, _typeSignal}
|
|
,{5349,sizes_0, _typeSignal}
|
|
,{5350,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_49[10] = {
|
|
{5357,sizes_0, _typeSignal}
|
|
,{5359,sizes_0, _typeSignal}
|
|
,{5358,sizes_0, _typeSignal}
|
|
,{5360,sizes_0, _typeSignal}
|
|
,{5351,sizes_0, _typeSignal}
|
|
,{5353,sizes_0, _typeSignal}
|
|
,{5355,sizes_0, _typeSignal}
|
|
,{5352,sizes_0, _typeSignal}
|
|
,{5354,sizes_0, _typeSignal}
|
|
,{5356,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_50[23] = {
|
|
{5437,sizes_2, _typeSignal}
|
|
,{5435,sizes_2, _typeSignal}
|
|
,{5433,sizes_2, _typeSignal}
|
|
,{5429,sizes_2, _typeSignal}
|
|
,{5431,sizes_2, _typeSignal}
|
|
,{5427,sizes_2, _typeSignal}
|
|
,{5425,sizes_2, _typeSignal}
|
|
,{5423,sizes_2, _typeSignal}
|
|
,{5421,sizes_2, _typeSignal}
|
|
,{5419,sizes_2, _typeSignal}
|
|
,{5417,sizes_2, _typeSignal}
|
|
,{5413,sizes_2, _typeSignal}
|
|
,{5415,sizes_2, _typeSignal}
|
|
,{5411,sizes_2, _typeSignal}
|
|
,{5409,sizes_2, _typeSignal}
|
|
,{5407,sizes_2, _typeSignal}
|
|
,{5369,sizes_2_16, _typeSignal}
|
|
,{5405,sizes_2, _typeSignal}
|
|
,{5401,sizes_4, _typeSignal}
|
|
,{5439,sizes_0, _typeSignal}
|
|
,{5440,sizes_0, _typeSignal}
|
|
,{5441,sizes_0, _typeSignal}
|
|
,{5442,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_50[10] = {
|
|
{5449,sizes_0, _typeSignal}
|
|
,{5451,sizes_0, _typeSignal}
|
|
,{5450,sizes_0, _typeSignal}
|
|
,{5452,sizes_0, _typeSignal}
|
|
,{5443,sizes_0, _typeSignal}
|
|
,{5445,sizes_0, _typeSignal}
|
|
,{5447,sizes_0, _typeSignal}
|
|
,{5444,sizes_0, _typeSignal}
|
|
,{5446,sizes_0, _typeSignal}
|
|
,{5448,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_51[23] = {
|
|
{5529,sizes_2, _typeSignal}
|
|
,{5527,sizes_2, _typeSignal}
|
|
,{5525,sizes_2, _typeSignal}
|
|
,{5521,sizes_2, _typeSignal}
|
|
,{5523,sizes_2, _typeSignal}
|
|
,{5519,sizes_2, _typeSignal}
|
|
,{5517,sizes_2, _typeSignal}
|
|
,{5515,sizes_2, _typeSignal}
|
|
,{5513,sizes_2, _typeSignal}
|
|
,{5511,sizes_2, _typeSignal}
|
|
,{5509,sizes_2, _typeSignal}
|
|
,{5505,sizes_2, _typeSignal}
|
|
,{5507,sizes_2, _typeSignal}
|
|
,{5503,sizes_2, _typeSignal}
|
|
,{5501,sizes_2, _typeSignal}
|
|
,{5499,sizes_2, _typeSignal}
|
|
,{5461,sizes_2_16, _typeSignal}
|
|
,{5497,sizes_2, _typeSignal}
|
|
,{5493,sizes_4, _typeSignal}
|
|
,{5531,sizes_0, _typeSignal}
|
|
,{5532,sizes_0, _typeSignal}
|
|
,{5533,sizes_0, _typeSignal}
|
|
,{5534,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_51[10] = {
|
|
{5541,sizes_0, _typeSignal}
|
|
,{5543,sizes_0, _typeSignal}
|
|
,{5542,sizes_0, _typeSignal}
|
|
,{5544,sizes_0, _typeSignal}
|
|
,{5535,sizes_0, _typeSignal}
|
|
,{5537,sizes_0, _typeSignal}
|
|
,{5539,sizes_0, _typeSignal}
|
|
,{5536,sizes_0, _typeSignal}
|
|
,{5538,sizes_0, _typeSignal}
|
|
,{5540,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_52[23] = {
|
|
{5621,sizes_2, _typeSignal}
|
|
,{5619,sizes_2, _typeSignal}
|
|
,{5617,sizes_2, _typeSignal}
|
|
,{5613,sizes_2, _typeSignal}
|
|
,{5615,sizes_2, _typeSignal}
|
|
,{5611,sizes_2, _typeSignal}
|
|
,{5609,sizes_2, _typeSignal}
|
|
,{5607,sizes_2, _typeSignal}
|
|
,{5605,sizes_2, _typeSignal}
|
|
,{5603,sizes_2, _typeSignal}
|
|
,{5601,sizes_2, _typeSignal}
|
|
,{5597,sizes_2, _typeSignal}
|
|
,{5599,sizes_2, _typeSignal}
|
|
,{5595,sizes_2, _typeSignal}
|
|
,{5593,sizes_2, _typeSignal}
|
|
,{5591,sizes_2, _typeSignal}
|
|
,{5553,sizes_2_16, _typeSignal}
|
|
,{5589,sizes_2, _typeSignal}
|
|
,{5585,sizes_4, _typeSignal}
|
|
,{5623,sizes_0, _typeSignal}
|
|
,{5624,sizes_0, _typeSignal}
|
|
,{5625,sizes_0, _typeSignal}
|
|
,{5626,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_52[10] = {
|
|
{5633,sizes_0, _typeSignal}
|
|
,{5635,sizes_0, _typeSignal}
|
|
,{5634,sizes_0, _typeSignal}
|
|
,{5636,sizes_0, _typeSignal}
|
|
,{5627,sizes_0, _typeSignal}
|
|
,{5629,sizes_0, _typeSignal}
|
|
,{5631,sizes_0, _typeSignal}
|
|
,{5628,sizes_0, _typeSignal}
|
|
,{5630,sizes_0, _typeSignal}
|
|
,{5632,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_53[23] = {
|
|
{5713,sizes_2, _typeSignal}
|
|
,{5711,sizes_2, _typeSignal}
|
|
,{5709,sizes_2, _typeSignal}
|
|
,{5705,sizes_2, _typeSignal}
|
|
,{5707,sizes_2, _typeSignal}
|
|
,{5703,sizes_2, _typeSignal}
|
|
,{5701,sizes_2, _typeSignal}
|
|
,{5699,sizes_2, _typeSignal}
|
|
,{5697,sizes_2, _typeSignal}
|
|
,{5695,sizes_2, _typeSignal}
|
|
,{5693,sizes_2, _typeSignal}
|
|
,{5689,sizes_2, _typeSignal}
|
|
,{5691,sizes_2, _typeSignal}
|
|
,{5687,sizes_2, _typeSignal}
|
|
,{5685,sizes_2, _typeSignal}
|
|
,{5683,sizes_2, _typeSignal}
|
|
,{5645,sizes_2_16, _typeSignal}
|
|
,{5681,sizes_2, _typeSignal}
|
|
,{5677,sizes_4, _typeSignal}
|
|
,{5715,sizes_0, _typeSignal}
|
|
,{5716,sizes_0, _typeSignal}
|
|
,{5717,sizes_0, _typeSignal}
|
|
,{5718,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_53[10] = {
|
|
{5725,sizes_0, _typeSignal}
|
|
,{5727,sizes_0, _typeSignal}
|
|
,{5726,sizes_0, _typeSignal}
|
|
,{5728,sizes_0, _typeSignal}
|
|
,{5719,sizes_0, _typeSignal}
|
|
,{5721,sizes_0, _typeSignal}
|
|
,{5723,sizes_0, _typeSignal}
|
|
,{5720,sizes_0, _typeSignal}
|
|
,{5722,sizes_0, _typeSignal}
|
|
,{5724,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_54[23] = {
|
|
{5805,sizes_2, _typeSignal}
|
|
,{5803,sizes_2, _typeSignal}
|
|
,{5801,sizes_2, _typeSignal}
|
|
,{5797,sizes_2, _typeSignal}
|
|
,{5799,sizes_2, _typeSignal}
|
|
,{5795,sizes_2, _typeSignal}
|
|
,{5793,sizes_2, _typeSignal}
|
|
,{5791,sizes_2, _typeSignal}
|
|
,{5789,sizes_2, _typeSignal}
|
|
,{5787,sizes_2, _typeSignal}
|
|
,{5785,sizes_2, _typeSignal}
|
|
,{5781,sizes_2, _typeSignal}
|
|
,{5783,sizes_2, _typeSignal}
|
|
,{5779,sizes_2, _typeSignal}
|
|
,{5777,sizes_2, _typeSignal}
|
|
,{5775,sizes_2, _typeSignal}
|
|
,{5737,sizes_2_16, _typeSignal}
|
|
,{5773,sizes_2, _typeSignal}
|
|
,{5769,sizes_4, _typeSignal}
|
|
,{5807,sizes_0, _typeSignal}
|
|
,{5808,sizes_0, _typeSignal}
|
|
,{5809,sizes_0, _typeSignal}
|
|
,{5810,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_54[10] = {
|
|
{5817,sizes_0, _typeSignal}
|
|
,{5819,sizes_0, _typeSignal}
|
|
,{5818,sizes_0, _typeSignal}
|
|
,{5820,sizes_0, _typeSignal}
|
|
,{5811,sizes_0, _typeSignal}
|
|
,{5813,sizes_0, _typeSignal}
|
|
,{5815,sizes_0, _typeSignal}
|
|
,{5812,sizes_0, _typeSignal}
|
|
,{5814,sizes_0, _typeSignal}
|
|
,{5816,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_55[23] = {
|
|
{5897,sizes_2, _typeSignal}
|
|
,{5895,sizes_2, _typeSignal}
|
|
,{5893,sizes_2, _typeSignal}
|
|
,{5889,sizes_2, _typeSignal}
|
|
,{5891,sizes_2, _typeSignal}
|
|
,{5887,sizes_2, _typeSignal}
|
|
,{5885,sizes_2, _typeSignal}
|
|
,{5883,sizes_2, _typeSignal}
|
|
,{5881,sizes_2, _typeSignal}
|
|
,{5879,sizes_2, _typeSignal}
|
|
,{5877,sizes_2, _typeSignal}
|
|
,{5873,sizes_2, _typeSignal}
|
|
,{5875,sizes_2, _typeSignal}
|
|
,{5871,sizes_2, _typeSignal}
|
|
,{5869,sizes_2, _typeSignal}
|
|
,{5867,sizes_2, _typeSignal}
|
|
,{5829,sizes_2_16, _typeSignal}
|
|
,{5865,sizes_2, _typeSignal}
|
|
,{5861,sizes_4, _typeSignal}
|
|
,{5899,sizes_0, _typeSignal}
|
|
,{5900,sizes_0, _typeSignal}
|
|
,{5901,sizes_0, _typeSignal}
|
|
,{5902,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_55[10] = {
|
|
{5909,sizes_0, _typeSignal}
|
|
,{5911,sizes_0, _typeSignal}
|
|
,{5910,sizes_0, _typeSignal}
|
|
,{5912,sizes_0, _typeSignal}
|
|
,{5903,sizes_0, _typeSignal}
|
|
,{5905,sizes_0, _typeSignal}
|
|
,{5907,sizes_0, _typeSignal}
|
|
,{5904,sizes_0, _typeSignal}
|
|
,{5906,sizes_0, _typeSignal}
|
|
,{5908,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_56[23] = {
|
|
{5989,sizes_2, _typeSignal}
|
|
,{5987,sizes_2, _typeSignal}
|
|
,{5985,sizes_2, _typeSignal}
|
|
,{5981,sizes_2, _typeSignal}
|
|
,{5983,sizes_2, _typeSignal}
|
|
,{5979,sizes_2, _typeSignal}
|
|
,{5977,sizes_2, _typeSignal}
|
|
,{5975,sizes_2, _typeSignal}
|
|
,{5973,sizes_2, _typeSignal}
|
|
,{5971,sizes_2, _typeSignal}
|
|
,{5969,sizes_2, _typeSignal}
|
|
,{5965,sizes_2, _typeSignal}
|
|
,{5967,sizes_2, _typeSignal}
|
|
,{5963,sizes_2, _typeSignal}
|
|
,{5961,sizes_2, _typeSignal}
|
|
,{5959,sizes_2, _typeSignal}
|
|
,{5921,sizes_2_16, _typeSignal}
|
|
,{5957,sizes_2, _typeSignal}
|
|
,{5953,sizes_4, _typeSignal}
|
|
,{5991,sizes_0, _typeSignal}
|
|
,{5992,sizes_0, _typeSignal}
|
|
,{5993,sizes_0, _typeSignal}
|
|
,{5994,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_56[10] = {
|
|
{6001,sizes_0, _typeSignal}
|
|
,{6003,sizes_0, _typeSignal}
|
|
,{6002,sizes_0, _typeSignal}
|
|
,{6004,sizes_0, _typeSignal}
|
|
,{5995,sizes_0, _typeSignal}
|
|
,{5997,sizes_0, _typeSignal}
|
|
,{5999,sizes_0, _typeSignal}
|
|
,{5996,sizes_0, _typeSignal}
|
|
,{5998,sizes_0, _typeSignal}
|
|
,{6000,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_57[23] = {
|
|
{6081,sizes_2, _typeSignal}
|
|
,{6079,sizes_2, _typeSignal}
|
|
,{6077,sizes_2, _typeSignal}
|
|
,{6073,sizes_2, _typeSignal}
|
|
,{6075,sizes_2, _typeSignal}
|
|
,{6071,sizes_2, _typeSignal}
|
|
,{6069,sizes_2, _typeSignal}
|
|
,{6067,sizes_2, _typeSignal}
|
|
,{6065,sizes_2, _typeSignal}
|
|
,{6063,sizes_2, _typeSignal}
|
|
,{6061,sizes_2, _typeSignal}
|
|
,{6057,sizes_2, _typeSignal}
|
|
,{6059,sizes_2, _typeSignal}
|
|
,{6055,sizes_2, _typeSignal}
|
|
,{6053,sizes_2, _typeSignal}
|
|
,{6051,sizes_2, _typeSignal}
|
|
,{6013,sizes_2_16, _typeSignal}
|
|
,{6049,sizes_2, _typeSignal}
|
|
,{6045,sizes_4, _typeSignal}
|
|
,{6083,sizes_0, _typeSignal}
|
|
,{6084,sizes_0, _typeSignal}
|
|
,{6085,sizes_0, _typeSignal}
|
|
,{6086,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_57[10] = {
|
|
{6093,sizes_0, _typeSignal}
|
|
,{6095,sizes_0, _typeSignal}
|
|
,{6094,sizes_0, _typeSignal}
|
|
,{6096,sizes_0, _typeSignal}
|
|
,{6087,sizes_0, _typeSignal}
|
|
,{6089,sizes_0, _typeSignal}
|
|
,{6091,sizes_0, _typeSignal}
|
|
,{6088,sizes_0, _typeSignal}
|
|
,{6090,sizes_0, _typeSignal}
|
|
,{6092,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_58[23] = {
|
|
{6173,sizes_2, _typeSignal}
|
|
,{6171,sizes_2, _typeSignal}
|
|
,{6169,sizes_2, _typeSignal}
|
|
,{6165,sizes_2, _typeSignal}
|
|
,{6167,sizes_2, _typeSignal}
|
|
,{6163,sizes_2, _typeSignal}
|
|
,{6161,sizes_2, _typeSignal}
|
|
,{6159,sizes_2, _typeSignal}
|
|
,{6157,sizes_2, _typeSignal}
|
|
,{6155,sizes_2, _typeSignal}
|
|
,{6153,sizes_2, _typeSignal}
|
|
,{6149,sizes_2, _typeSignal}
|
|
,{6151,sizes_2, _typeSignal}
|
|
,{6147,sizes_2, _typeSignal}
|
|
,{6145,sizes_2, _typeSignal}
|
|
,{6143,sizes_2, _typeSignal}
|
|
,{6105,sizes_2_16, _typeSignal}
|
|
,{6141,sizes_2, _typeSignal}
|
|
,{6137,sizes_4, _typeSignal}
|
|
,{6175,sizes_0, _typeSignal}
|
|
,{6176,sizes_0, _typeSignal}
|
|
,{6177,sizes_0, _typeSignal}
|
|
,{6178,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_58[10] = {
|
|
{6185,sizes_0, _typeSignal}
|
|
,{6187,sizes_0, _typeSignal}
|
|
,{6186,sizes_0, _typeSignal}
|
|
,{6188,sizes_0, _typeSignal}
|
|
,{6179,sizes_0, _typeSignal}
|
|
,{6181,sizes_0, _typeSignal}
|
|
,{6183,sizes_0, _typeSignal}
|
|
,{6180,sizes_0, _typeSignal}
|
|
,{6182,sizes_0, _typeSignal}
|
|
,{6184,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_59[23] = {
|
|
{6265,sizes_2, _typeSignal}
|
|
,{6263,sizes_2, _typeSignal}
|
|
,{6261,sizes_2, _typeSignal}
|
|
,{6257,sizes_2, _typeSignal}
|
|
,{6259,sizes_2, _typeSignal}
|
|
,{6255,sizes_2, _typeSignal}
|
|
,{6253,sizes_2, _typeSignal}
|
|
,{6251,sizes_2, _typeSignal}
|
|
,{6249,sizes_2, _typeSignal}
|
|
,{6247,sizes_2, _typeSignal}
|
|
,{6245,sizes_2, _typeSignal}
|
|
,{6241,sizes_2, _typeSignal}
|
|
,{6243,sizes_2, _typeSignal}
|
|
,{6239,sizes_2, _typeSignal}
|
|
,{6237,sizes_2, _typeSignal}
|
|
,{6235,sizes_2, _typeSignal}
|
|
,{6197,sizes_2_16, _typeSignal}
|
|
,{6233,sizes_2, _typeSignal}
|
|
,{6229,sizes_4, _typeSignal}
|
|
,{6267,sizes_0, _typeSignal}
|
|
,{6268,sizes_0, _typeSignal}
|
|
,{6269,sizes_0, _typeSignal}
|
|
,{6270,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_59[10] = {
|
|
{6277,sizes_0, _typeSignal}
|
|
,{6279,sizes_0, _typeSignal}
|
|
,{6278,sizes_0, _typeSignal}
|
|
,{6280,sizes_0, _typeSignal}
|
|
,{6271,sizes_0, _typeSignal}
|
|
,{6273,sizes_0, _typeSignal}
|
|
,{6275,sizes_0, _typeSignal}
|
|
,{6272,sizes_0, _typeSignal}
|
|
,{6274,sizes_0, _typeSignal}
|
|
,{6276,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_60[23] = {
|
|
{6357,sizes_2, _typeSignal}
|
|
,{6355,sizes_2, _typeSignal}
|
|
,{6353,sizes_2, _typeSignal}
|
|
,{6349,sizes_2, _typeSignal}
|
|
,{6351,sizes_2, _typeSignal}
|
|
,{6347,sizes_2, _typeSignal}
|
|
,{6345,sizes_2, _typeSignal}
|
|
,{6343,sizes_2, _typeSignal}
|
|
,{6341,sizes_2, _typeSignal}
|
|
,{6339,sizes_2, _typeSignal}
|
|
,{6337,sizes_2, _typeSignal}
|
|
,{6333,sizes_2, _typeSignal}
|
|
,{6335,sizes_2, _typeSignal}
|
|
,{6331,sizes_2, _typeSignal}
|
|
,{6329,sizes_2, _typeSignal}
|
|
,{6327,sizes_2, _typeSignal}
|
|
,{6289,sizes_2_16, _typeSignal}
|
|
,{6325,sizes_2, _typeSignal}
|
|
,{6321,sizes_4, _typeSignal}
|
|
,{6359,sizes_0, _typeSignal}
|
|
,{6360,sizes_0, _typeSignal}
|
|
,{6361,sizes_0, _typeSignal}
|
|
,{6362,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_60[10] = {
|
|
{6369,sizes_0, _typeSignal}
|
|
,{6371,sizes_0, _typeSignal}
|
|
,{6370,sizes_0, _typeSignal}
|
|
,{6372,sizes_0, _typeSignal}
|
|
,{6363,sizes_0, _typeSignal}
|
|
,{6365,sizes_0, _typeSignal}
|
|
,{6367,sizes_0, _typeSignal}
|
|
,{6364,sizes_0, _typeSignal}
|
|
,{6366,sizes_0, _typeSignal}
|
|
,{6368,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_61[23] = {
|
|
{6449,sizes_2, _typeSignal}
|
|
,{6447,sizes_2, _typeSignal}
|
|
,{6445,sizes_2, _typeSignal}
|
|
,{6441,sizes_2, _typeSignal}
|
|
,{6443,sizes_2, _typeSignal}
|
|
,{6439,sizes_2, _typeSignal}
|
|
,{6437,sizes_2, _typeSignal}
|
|
,{6435,sizes_2, _typeSignal}
|
|
,{6433,sizes_2, _typeSignal}
|
|
,{6431,sizes_2, _typeSignal}
|
|
,{6429,sizes_2, _typeSignal}
|
|
,{6425,sizes_2, _typeSignal}
|
|
,{6427,sizes_2, _typeSignal}
|
|
,{6423,sizes_2, _typeSignal}
|
|
,{6421,sizes_2, _typeSignal}
|
|
,{6419,sizes_2, _typeSignal}
|
|
,{6381,sizes_2_16, _typeSignal}
|
|
,{6417,sizes_2, _typeSignal}
|
|
,{6413,sizes_4, _typeSignal}
|
|
,{6451,sizes_0, _typeSignal}
|
|
,{6452,sizes_0, _typeSignal}
|
|
,{6453,sizes_0, _typeSignal}
|
|
,{6454,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_61[10] = {
|
|
{6461,sizes_0, _typeSignal}
|
|
,{6463,sizes_0, _typeSignal}
|
|
,{6462,sizes_0, _typeSignal}
|
|
,{6464,sizes_0, _typeSignal}
|
|
,{6455,sizes_0, _typeSignal}
|
|
,{6457,sizes_0, _typeSignal}
|
|
,{6459,sizes_0, _typeSignal}
|
|
,{6456,sizes_0, _typeSignal}
|
|
,{6458,sizes_0, _typeSignal}
|
|
,{6460,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_62[23] = {
|
|
{6541,sizes_2, _typeSignal}
|
|
,{6539,sizes_2, _typeSignal}
|
|
,{6537,sizes_2, _typeSignal}
|
|
,{6533,sizes_2, _typeSignal}
|
|
,{6535,sizes_2, _typeSignal}
|
|
,{6531,sizes_2, _typeSignal}
|
|
,{6529,sizes_2, _typeSignal}
|
|
,{6527,sizes_2, _typeSignal}
|
|
,{6525,sizes_2, _typeSignal}
|
|
,{6523,sizes_2, _typeSignal}
|
|
,{6521,sizes_2, _typeSignal}
|
|
,{6517,sizes_2, _typeSignal}
|
|
,{6519,sizes_2, _typeSignal}
|
|
,{6515,sizes_2, _typeSignal}
|
|
,{6513,sizes_2, _typeSignal}
|
|
,{6511,sizes_2, _typeSignal}
|
|
,{6473,sizes_2_16, _typeSignal}
|
|
,{6509,sizes_2, _typeSignal}
|
|
,{6505,sizes_4, _typeSignal}
|
|
,{6543,sizes_0, _typeSignal}
|
|
,{6544,sizes_0, _typeSignal}
|
|
,{6545,sizes_0, _typeSignal}
|
|
,{6546,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_62[10] = {
|
|
{6553,sizes_0, _typeSignal}
|
|
,{6555,sizes_0, _typeSignal}
|
|
,{6554,sizes_0, _typeSignal}
|
|
,{6556,sizes_0, _typeSignal}
|
|
,{6547,sizes_0, _typeSignal}
|
|
,{6549,sizes_0, _typeSignal}
|
|
,{6551,sizes_0, _typeSignal}
|
|
,{6548,sizes_0, _typeSignal}
|
|
,{6550,sizes_0, _typeSignal}
|
|
,{6552,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_63[5] = {
|
|
{257,sizes_0, _typeComponent}
|
|
,{6811,sizes_2, _typeSignal}
|
|
,{256,sizes_0, _typeComponent}
|
|
,{6817,sizes_2, _typeSignal}
|
|
,{6813,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_64[5] = {
|
|
{259,sizes_0, _typeComponent}
|
|
,{6903,sizes_2, _typeSignal}
|
|
,{258,sizes_0, _typeComponent}
|
|
,{6909,sizes_2, _typeSignal}
|
|
,{6905,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_65[5] = {
|
|
{261,sizes_0, _typeComponent}
|
|
,{6995,sizes_2, _typeSignal}
|
|
,{260,sizes_0, _typeComponent}
|
|
,{7001,sizes_2, _typeSignal}
|
|
,{6997,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_66[5] = {
|
|
{263,sizes_0, _typeComponent}
|
|
,{7087,sizes_2, _typeSignal}
|
|
,{262,sizes_0, _typeComponent}
|
|
,{7093,sizes_2, _typeSignal}
|
|
,{7089,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_67[5] = {
|
|
{265,sizes_0, _typeComponent}
|
|
,{7179,sizes_2, _typeSignal}
|
|
,{264,sizes_0, _typeComponent}
|
|
,{7185,sizes_2, _typeSignal}
|
|
,{7181,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_68[5] = {
|
|
{267,sizes_0, _typeComponent}
|
|
,{7271,sizes_2, _typeSignal}
|
|
,{266,sizes_0, _typeComponent}
|
|
,{7277,sizes_2, _typeSignal}
|
|
,{7273,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_69[5] = {
|
|
{269,sizes_0, _typeComponent}
|
|
,{7363,sizes_2, _typeSignal}
|
|
,{268,sizes_0, _typeComponent}
|
|
,{7369,sizes_2, _typeSignal}
|
|
,{7365,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_70[5] = {
|
|
{271,sizes_0, _typeComponent}
|
|
,{7455,sizes_2, _typeSignal}
|
|
,{270,sizes_0, _typeComponent}
|
|
,{7461,sizes_2, _typeSignal}
|
|
,{7457,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_71[5] = {
|
|
{273,sizes_0, _typeComponent}
|
|
,{7547,sizes_2, _typeSignal}
|
|
,{272,sizes_0, _typeComponent}
|
|
,{7553,sizes_2, _typeSignal}
|
|
,{7549,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_72[5] = {
|
|
{275,sizes_0, _typeComponent}
|
|
,{7639,sizes_2, _typeSignal}
|
|
,{274,sizes_0, _typeComponent}
|
|
,{7645,sizes_2, _typeSignal}
|
|
,{7641,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_73[5] = {
|
|
{277,sizes_0, _typeComponent}
|
|
,{7731,sizes_2, _typeSignal}
|
|
,{276,sizes_0, _typeComponent}
|
|
,{7737,sizes_2, _typeSignal}
|
|
,{7733,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_74[5] = {
|
|
{279,sizes_0, _typeComponent}
|
|
,{7823,sizes_2, _typeSignal}
|
|
,{278,sizes_0, _typeComponent}
|
|
,{7829,sizes_2, _typeSignal}
|
|
,{7825,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_75[5] = {
|
|
{281,sizes_0, _typeComponent}
|
|
,{7915,sizes_2, _typeSignal}
|
|
,{280,sizes_0, _typeComponent}
|
|
,{7921,sizes_2, _typeSignal}
|
|
,{7917,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_76[5] = {
|
|
{283,sizes_0, _typeComponent}
|
|
,{8007,sizes_2, _typeSignal}
|
|
,{282,sizes_0, _typeComponent}
|
|
,{8013,sizes_2, _typeSignal}
|
|
,{8009,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_77[5] = {
|
|
{285,sizes_0, _typeComponent}
|
|
,{8099,sizes_2, _typeSignal}
|
|
,{284,sizes_0, _typeComponent}
|
|
,{8105,sizes_2, _typeSignal}
|
|
,{8101,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_78[5] = {
|
|
{287,sizes_0, _typeComponent}
|
|
,{8191,sizes_2, _typeSignal}
|
|
,{286,sizes_0, _typeComponent}
|
|
,{8197,sizes_2, _typeSignal}
|
|
,{8193,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_79[5] = {
|
|
{289,sizes_0, _typeComponent}
|
|
,{8283,sizes_2, _typeSignal}
|
|
,{288,sizes_0, _typeComponent}
|
|
,{8289,sizes_2, _typeSignal}
|
|
,{8285,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_80[5] = {
|
|
{291,sizes_0, _typeComponent}
|
|
,{8375,sizes_2, _typeSignal}
|
|
,{290,sizes_0, _typeComponent}
|
|
,{8381,sizes_2, _typeSignal}
|
|
,{8377,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_81[5] = {
|
|
{293,sizes_0, _typeComponent}
|
|
,{8467,sizes_2, _typeSignal}
|
|
,{292,sizes_0, _typeComponent}
|
|
,{8473,sizes_2, _typeSignal}
|
|
,{8469,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_82[5] = {
|
|
{295,sizes_0, _typeComponent}
|
|
,{8559,sizes_2, _typeSignal}
|
|
,{294,sizes_0, _typeComponent}
|
|
,{8565,sizes_2, _typeSignal}
|
|
,{8561,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_83[5] = {
|
|
{297,sizes_0, _typeComponent}
|
|
,{8651,sizes_2, _typeSignal}
|
|
,{296,sizes_0, _typeComponent}
|
|
,{8657,sizes_2, _typeSignal}
|
|
,{8653,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_84[5] = {
|
|
{299,sizes_0, _typeComponent}
|
|
,{8743,sizes_2, _typeSignal}
|
|
,{298,sizes_0, _typeComponent}
|
|
,{8749,sizes_2, _typeSignal}
|
|
,{8745,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_85[5] = {
|
|
{301,sizes_0, _typeComponent}
|
|
,{8835,sizes_2, _typeSignal}
|
|
,{300,sizes_0, _typeComponent}
|
|
,{8841,sizes_2, _typeSignal}
|
|
,{8837,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_86[5] = {
|
|
{303,sizes_0, _typeComponent}
|
|
,{8927,sizes_2, _typeSignal}
|
|
,{302,sizes_0, _typeComponent}
|
|
,{8933,sizes_2, _typeSignal}
|
|
,{8929,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_87[5] = {
|
|
{305,sizes_0, _typeComponent}
|
|
,{9019,sizes_2, _typeSignal}
|
|
,{304,sizes_0, _typeComponent}
|
|
,{9025,sizes_2, _typeSignal}
|
|
,{9021,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_88[5] = {
|
|
{307,sizes_0, _typeComponent}
|
|
,{9111,sizes_2, _typeSignal}
|
|
,{306,sizes_0, _typeComponent}
|
|
,{9117,sizes_2, _typeSignal}
|
|
,{9113,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_89[5] = {
|
|
{309,sizes_0, _typeComponent}
|
|
,{9203,sizes_2, _typeSignal}
|
|
,{308,sizes_0, _typeComponent}
|
|
,{9209,sizes_2, _typeSignal}
|
|
,{9205,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_90[5] = {
|
|
{311,sizes_0, _typeComponent}
|
|
,{9295,sizes_2, _typeSignal}
|
|
,{310,sizes_0, _typeComponent}
|
|
,{9301,sizes_2, _typeSignal}
|
|
,{9297,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_91[5] = {
|
|
{313,sizes_0, _typeComponent}
|
|
,{9387,sizes_2, _typeSignal}
|
|
,{312,sizes_0, _typeComponent}
|
|
,{9393,sizes_2, _typeSignal}
|
|
,{9389,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_92[5] = {
|
|
{315,sizes_0, _typeComponent}
|
|
,{9479,sizes_2, _typeSignal}
|
|
,{314,sizes_0, _typeComponent}
|
|
,{9485,sizes_2, _typeSignal}
|
|
,{9481,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_93[5] = {
|
|
{317,sizes_0, _typeComponent}
|
|
,{9571,sizes_2, _typeSignal}
|
|
,{316,sizes_0, _typeComponent}
|
|
,{9577,sizes_2, _typeSignal}
|
|
,{9573,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_94[5] = {
|
|
{319,sizes_0, _typeComponent}
|
|
,{9663,sizes_2, _typeSignal}
|
|
,{318,sizes_0, _typeComponent}
|
|
,{9669,sizes_2, _typeSignal}
|
|
,{9665,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_95[5] = {
|
|
{321,sizes_0, _typeComponent}
|
|
,{9755,sizes_2, _typeSignal}
|
|
,{320,sizes_0, _typeComponent}
|
|
,{9761,sizes_2, _typeSignal}
|
|
,{9757,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_96[5] = {
|
|
{323,sizes_0, _typeComponent}
|
|
,{9847,sizes_2, _typeSignal}
|
|
,{322,sizes_0, _typeComponent}
|
|
,{9853,sizes_2, _typeSignal}
|
|
,{9849,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_97[5] = {
|
|
{325,sizes_0, _typeComponent}
|
|
,{9939,sizes_2, _typeSignal}
|
|
,{324,sizes_0, _typeComponent}
|
|
,{9945,sizes_2, _typeSignal}
|
|
,{9941,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_98[5] = {
|
|
{327,sizes_0, _typeComponent}
|
|
,{10031,sizes_2, _typeSignal}
|
|
,{326,sizes_0, _typeComponent}
|
|
,{10037,sizes_2, _typeSignal}
|
|
,{10033,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_99[5] = {
|
|
{329,sizes_0, _typeComponent}
|
|
,{10123,sizes_2, _typeSignal}
|
|
,{328,sizes_0, _typeComponent}
|
|
,{10129,sizes_2, _typeSignal}
|
|
,{10125,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_100[5] = {
|
|
{331,sizes_0, _typeComponent}
|
|
,{10215,sizes_2, _typeSignal}
|
|
,{330,sizes_0, _typeComponent}
|
|
,{10221,sizes_2, _typeSignal}
|
|
,{10217,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_101[5] = {
|
|
{333,sizes_0, _typeComponent}
|
|
,{10307,sizes_2, _typeSignal}
|
|
,{332,sizes_0, _typeComponent}
|
|
,{10313,sizes_2, _typeSignal}
|
|
,{10309,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_102[5] = {
|
|
{335,sizes_0, _typeComponent}
|
|
,{10399,sizes_2, _typeSignal}
|
|
,{334,sizes_0, _typeComponent}
|
|
,{10405,sizes_2, _typeSignal}
|
|
,{10401,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_103[5] = {
|
|
{337,sizes_0, _typeComponent}
|
|
,{10491,sizes_2, _typeSignal}
|
|
,{336,sizes_0, _typeComponent}
|
|
,{10497,sizes_2, _typeSignal}
|
|
,{10493,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_104[5] = {
|
|
{339,sizes_0, _typeComponent}
|
|
,{10583,sizes_2, _typeSignal}
|
|
,{338,sizes_0, _typeComponent}
|
|
,{10589,sizes_2, _typeSignal}
|
|
,{10585,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_105[5] = {
|
|
{341,sizes_0, _typeComponent}
|
|
,{10675,sizes_2, _typeSignal}
|
|
,{340,sizes_0, _typeComponent}
|
|
,{10681,sizes_2, _typeSignal}
|
|
,{10677,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_106[5] = {
|
|
{343,sizes_0, _typeComponent}
|
|
,{10767,sizes_2, _typeSignal}
|
|
,{342,sizes_0, _typeComponent}
|
|
,{10773,sizes_2, _typeSignal}
|
|
,{10769,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_107[5] = {
|
|
{345,sizes_0, _typeComponent}
|
|
,{10859,sizes_2, _typeSignal}
|
|
,{344,sizes_0, _typeComponent}
|
|
,{10865,sizes_2, _typeSignal}
|
|
,{10861,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_108[5] = {
|
|
{347,sizes_0, _typeComponent}
|
|
,{10951,sizes_2, _typeSignal}
|
|
,{346,sizes_0, _typeComponent}
|
|
,{10957,sizes_2, _typeSignal}
|
|
,{10953,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_109[5] = {
|
|
{349,sizes_0, _typeComponent}
|
|
,{11043,sizes_2, _typeSignal}
|
|
,{348,sizes_0, _typeComponent}
|
|
,{11049,sizes_2, _typeSignal}
|
|
,{11045,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_110[5] = {
|
|
{351,sizes_0, _typeComponent}
|
|
,{11135,sizes_2, _typeSignal}
|
|
,{350,sizes_0, _typeComponent}
|
|
,{11141,sizes_2, _typeSignal}
|
|
,{11137,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_111[5] = {
|
|
{353,sizes_0, _typeComponent}
|
|
,{11227,sizes_2, _typeSignal}
|
|
,{352,sizes_0, _typeComponent}
|
|
,{11233,sizes_2, _typeSignal}
|
|
,{11229,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_112[5] = {
|
|
{355,sizes_0, _typeComponent}
|
|
,{11319,sizes_2, _typeSignal}
|
|
,{354,sizes_0, _typeComponent}
|
|
,{11325,sizes_2, _typeSignal}
|
|
,{11321,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_113[5] = {
|
|
{357,sizes_0, _typeComponent}
|
|
,{11411,sizes_2, _typeSignal}
|
|
,{356,sizes_0, _typeComponent}
|
|
,{11417,sizes_2, _typeSignal}
|
|
,{11413,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_114[5] = {
|
|
{359,sizes_0, _typeComponent}
|
|
,{11503,sizes_2, _typeSignal}
|
|
,{358,sizes_0, _typeComponent}
|
|
,{11509,sizes_2, _typeSignal}
|
|
,{11505,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_115[5] = {
|
|
{361,sizes_0, _typeComponent}
|
|
,{11595,sizes_2, _typeSignal}
|
|
,{360,sizes_0, _typeComponent}
|
|
,{11601,sizes_2, _typeSignal}
|
|
,{11597,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_116[5] = {
|
|
{363,sizes_0, _typeComponent}
|
|
,{11687,sizes_2, _typeSignal}
|
|
,{362,sizes_0, _typeComponent}
|
|
,{11693,sizes_2, _typeSignal}
|
|
,{11689,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_117[5] = {
|
|
{365,sizes_0, _typeComponent}
|
|
,{11779,sizes_2, _typeSignal}
|
|
,{364,sizes_0, _typeComponent}
|
|
,{11785,sizes_2, _typeSignal}
|
|
,{11781,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_118[5] = {
|
|
{367,sizes_0, _typeComponent}
|
|
,{11871,sizes_2, _typeSignal}
|
|
,{366,sizes_0, _typeComponent}
|
|
,{11877,sizes_2, _typeSignal}
|
|
,{11873,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_119[5] = {
|
|
{369,sizes_0, _typeComponent}
|
|
,{11963,sizes_2, _typeSignal}
|
|
,{368,sizes_0, _typeComponent}
|
|
,{11969,sizes_2, _typeSignal}
|
|
,{11965,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_120[5] = {
|
|
{371,sizes_0, _typeComponent}
|
|
,{12055,sizes_2, _typeSignal}
|
|
,{370,sizes_0, _typeComponent}
|
|
,{12061,sizes_2, _typeSignal}
|
|
,{12057,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_121[5] = {
|
|
{373,sizes_0, _typeComponent}
|
|
,{12147,sizes_2, _typeSignal}
|
|
,{372,sizes_0, _typeComponent}
|
|
,{12153,sizes_2, _typeSignal}
|
|
,{12149,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_122[5] = {
|
|
{375,sizes_0, _typeComponent}
|
|
,{12239,sizes_2, _typeSignal}
|
|
,{374,sizes_0, _typeComponent}
|
|
,{12245,sizes_2, _typeSignal}
|
|
,{12241,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_123[5] = {
|
|
{377,sizes_0, _typeComponent}
|
|
,{12331,sizes_2, _typeSignal}
|
|
,{376,sizes_0, _typeComponent}
|
|
,{12337,sizes_2, _typeSignal}
|
|
,{12333,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_124[5] = {
|
|
{379,sizes_0, _typeComponent}
|
|
,{12423,sizes_2, _typeSignal}
|
|
,{378,sizes_0, _typeComponent}
|
|
,{12429,sizes_2, _typeSignal}
|
|
,{12425,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableEscalarMulWindow_125[5] = {
|
|
{381,sizes_0, _typeComponent}
|
|
,{12515,sizes_2, _typeSignal}
|
|
,{380,sizes_0, _typeComponent}
|
|
,{12521,sizes_2, _typeSignal}
|
|
,{12517,sizes_4, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_63[23] = {
|
|
{6887,sizes_2, _typeSignal}
|
|
,{6885,sizes_2, _typeSignal}
|
|
,{6883,sizes_2, _typeSignal}
|
|
,{6879,sizes_2, _typeSignal}
|
|
,{6881,sizes_2, _typeSignal}
|
|
,{6877,sizes_2, _typeSignal}
|
|
,{6875,sizes_2, _typeSignal}
|
|
,{6873,sizes_2, _typeSignal}
|
|
,{6871,sizes_2, _typeSignal}
|
|
,{6869,sizes_2, _typeSignal}
|
|
,{6867,sizes_2, _typeSignal}
|
|
,{6863,sizes_2, _typeSignal}
|
|
,{6865,sizes_2, _typeSignal}
|
|
,{6861,sizes_2, _typeSignal}
|
|
,{6859,sizes_2, _typeSignal}
|
|
,{6857,sizes_2, _typeSignal}
|
|
,{6819,sizes_2_16, _typeSignal}
|
|
,{6855,sizes_2, _typeSignal}
|
|
,{6851,sizes_4, _typeSignal}
|
|
,{6889,sizes_0, _typeSignal}
|
|
,{6890,sizes_0, _typeSignal}
|
|
,{6891,sizes_0, _typeSignal}
|
|
,{6892,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_63[10] = {
|
|
{6899,sizes_0, _typeSignal}
|
|
,{6901,sizes_0, _typeSignal}
|
|
,{6900,sizes_0, _typeSignal}
|
|
,{6902,sizes_0, _typeSignal}
|
|
,{6893,sizes_0, _typeSignal}
|
|
,{6895,sizes_0, _typeSignal}
|
|
,{6897,sizes_0, _typeSignal}
|
|
,{6894,sizes_0, _typeSignal}
|
|
,{6896,sizes_0, _typeSignal}
|
|
,{6898,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_64[23] = {
|
|
{6979,sizes_2, _typeSignal}
|
|
,{6977,sizes_2, _typeSignal}
|
|
,{6975,sizes_2, _typeSignal}
|
|
,{6971,sizes_2, _typeSignal}
|
|
,{6973,sizes_2, _typeSignal}
|
|
,{6969,sizes_2, _typeSignal}
|
|
,{6967,sizes_2, _typeSignal}
|
|
,{6965,sizes_2, _typeSignal}
|
|
,{6963,sizes_2, _typeSignal}
|
|
,{6961,sizes_2, _typeSignal}
|
|
,{6959,sizes_2, _typeSignal}
|
|
,{6955,sizes_2, _typeSignal}
|
|
,{6957,sizes_2, _typeSignal}
|
|
,{6953,sizes_2, _typeSignal}
|
|
,{6951,sizes_2, _typeSignal}
|
|
,{6949,sizes_2, _typeSignal}
|
|
,{6911,sizes_2_16, _typeSignal}
|
|
,{6947,sizes_2, _typeSignal}
|
|
,{6943,sizes_4, _typeSignal}
|
|
,{6981,sizes_0, _typeSignal}
|
|
,{6982,sizes_0, _typeSignal}
|
|
,{6983,sizes_0, _typeSignal}
|
|
,{6984,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_64[10] = {
|
|
{6991,sizes_0, _typeSignal}
|
|
,{6993,sizes_0, _typeSignal}
|
|
,{6992,sizes_0, _typeSignal}
|
|
,{6994,sizes_0, _typeSignal}
|
|
,{6985,sizes_0, _typeSignal}
|
|
,{6987,sizes_0, _typeSignal}
|
|
,{6989,sizes_0, _typeSignal}
|
|
,{6986,sizes_0, _typeSignal}
|
|
,{6988,sizes_0, _typeSignal}
|
|
,{6990,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_65[23] = {
|
|
{7071,sizes_2, _typeSignal}
|
|
,{7069,sizes_2, _typeSignal}
|
|
,{7067,sizes_2, _typeSignal}
|
|
,{7063,sizes_2, _typeSignal}
|
|
,{7065,sizes_2, _typeSignal}
|
|
,{7061,sizes_2, _typeSignal}
|
|
,{7059,sizes_2, _typeSignal}
|
|
,{7057,sizes_2, _typeSignal}
|
|
,{7055,sizes_2, _typeSignal}
|
|
,{7053,sizes_2, _typeSignal}
|
|
,{7051,sizes_2, _typeSignal}
|
|
,{7047,sizes_2, _typeSignal}
|
|
,{7049,sizes_2, _typeSignal}
|
|
,{7045,sizes_2, _typeSignal}
|
|
,{7043,sizes_2, _typeSignal}
|
|
,{7041,sizes_2, _typeSignal}
|
|
,{7003,sizes_2_16, _typeSignal}
|
|
,{7039,sizes_2, _typeSignal}
|
|
,{7035,sizes_4, _typeSignal}
|
|
,{7073,sizes_0, _typeSignal}
|
|
,{7074,sizes_0, _typeSignal}
|
|
,{7075,sizes_0, _typeSignal}
|
|
,{7076,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_65[10] = {
|
|
{7083,sizes_0, _typeSignal}
|
|
,{7085,sizes_0, _typeSignal}
|
|
,{7084,sizes_0, _typeSignal}
|
|
,{7086,sizes_0, _typeSignal}
|
|
,{7077,sizes_0, _typeSignal}
|
|
,{7079,sizes_0, _typeSignal}
|
|
,{7081,sizes_0, _typeSignal}
|
|
,{7078,sizes_0, _typeSignal}
|
|
,{7080,sizes_0, _typeSignal}
|
|
,{7082,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_66[23] = {
|
|
{7163,sizes_2, _typeSignal}
|
|
,{7161,sizes_2, _typeSignal}
|
|
,{7159,sizes_2, _typeSignal}
|
|
,{7155,sizes_2, _typeSignal}
|
|
,{7157,sizes_2, _typeSignal}
|
|
,{7153,sizes_2, _typeSignal}
|
|
,{7151,sizes_2, _typeSignal}
|
|
,{7149,sizes_2, _typeSignal}
|
|
,{7147,sizes_2, _typeSignal}
|
|
,{7145,sizes_2, _typeSignal}
|
|
,{7143,sizes_2, _typeSignal}
|
|
,{7139,sizes_2, _typeSignal}
|
|
,{7141,sizes_2, _typeSignal}
|
|
,{7137,sizes_2, _typeSignal}
|
|
,{7135,sizes_2, _typeSignal}
|
|
,{7133,sizes_2, _typeSignal}
|
|
,{7095,sizes_2_16, _typeSignal}
|
|
,{7131,sizes_2, _typeSignal}
|
|
,{7127,sizes_4, _typeSignal}
|
|
,{7165,sizes_0, _typeSignal}
|
|
,{7166,sizes_0, _typeSignal}
|
|
,{7167,sizes_0, _typeSignal}
|
|
,{7168,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_66[10] = {
|
|
{7175,sizes_0, _typeSignal}
|
|
,{7177,sizes_0, _typeSignal}
|
|
,{7176,sizes_0, _typeSignal}
|
|
,{7178,sizes_0, _typeSignal}
|
|
,{7169,sizes_0, _typeSignal}
|
|
,{7171,sizes_0, _typeSignal}
|
|
,{7173,sizes_0, _typeSignal}
|
|
,{7170,sizes_0, _typeSignal}
|
|
,{7172,sizes_0, _typeSignal}
|
|
,{7174,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_67[23] = {
|
|
{7255,sizes_2, _typeSignal}
|
|
,{7253,sizes_2, _typeSignal}
|
|
,{7251,sizes_2, _typeSignal}
|
|
,{7247,sizes_2, _typeSignal}
|
|
,{7249,sizes_2, _typeSignal}
|
|
,{7245,sizes_2, _typeSignal}
|
|
,{7243,sizes_2, _typeSignal}
|
|
,{7241,sizes_2, _typeSignal}
|
|
,{7239,sizes_2, _typeSignal}
|
|
,{7237,sizes_2, _typeSignal}
|
|
,{7235,sizes_2, _typeSignal}
|
|
,{7231,sizes_2, _typeSignal}
|
|
,{7233,sizes_2, _typeSignal}
|
|
,{7229,sizes_2, _typeSignal}
|
|
,{7227,sizes_2, _typeSignal}
|
|
,{7225,sizes_2, _typeSignal}
|
|
,{7187,sizes_2_16, _typeSignal}
|
|
,{7223,sizes_2, _typeSignal}
|
|
,{7219,sizes_4, _typeSignal}
|
|
,{7257,sizes_0, _typeSignal}
|
|
,{7258,sizes_0, _typeSignal}
|
|
,{7259,sizes_0, _typeSignal}
|
|
,{7260,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_67[10] = {
|
|
{7267,sizes_0, _typeSignal}
|
|
,{7269,sizes_0, _typeSignal}
|
|
,{7268,sizes_0, _typeSignal}
|
|
,{7270,sizes_0, _typeSignal}
|
|
,{7261,sizes_0, _typeSignal}
|
|
,{7263,sizes_0, _typeSignal}
|
|
,{7265,sizes_0, _typeSignal}
|
|
,{7262,sizes_0, _typeSignal}
|
|
,{7264,sizes_0, _typeSignal}
|
|
,{7266,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_68[23] = {
|
|
{7347,sizes_2, _typeSignal}
|
|
,{7345,sizes_2, _typeSignal}
|
|
,{7343,sizes_2, _typeSignal}
|
|
,{7339,sizes_2, _typeSignal}
|
|
,{7341,sizes_2, _typeSignal}
|
|
,{7337,sizes_2, _typeSignal}
|
|
,{7335,sizes_2, _typeSignal}
|
|
,{7333,sizes_2, _typeSignal}
|
|
,{7331,sizes_2, _typeSignal}
|
|
,{7329,sizes_2, _typeSignal}
|
|
,{7327,sizes_2, _typeSignal}
|
|
,{7323,sizes_2, _typeSignal}
|
|
,{7325,sizes_2, _typeSignal}
|
|
,{7321,sizes_2, _typeSignal}
|
|
,{7319,sizes_2, _typeSignal}
|
|
,{7317,sizes_2, _typeSignal}
|
|
,{7279,sizes_2_16, _typeSignal}
|
|
,{7315,sizes_2, _typeSignal}
|
|
,{7311,sizes_4, _typeSignal}
|
|
,{7349,sizes_0, _typeSignal}
|
|
,{7350,sizes_0, _typeSignal}
|
|
,{7351,sizes_0, _typeSignal}
|
|
,{7352,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_68[10] = {
|
|
{7359,sizes_0, _typeSignal}
|
|
,{7361,sizes_0, _typeSignal}
|
|
,{7360,sizes_0, _typeSignal}
|
|
,{7362,sizes_0, _typeSignal}
|
|
,{7353,sizes_0, _typeSignal}
|
|
,{7355,sizes_0, _typeSignal}
|
|
,{7357,sizes_0, _typeSignal}
|
|
,{7354,sizes_0, _typeSignal}
|
|
,{7356,sizes_0, _typeSignal}
|
|
,{7358,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_69[23] = {
|
|
{7439,sizes_2, _typeSignal}
|
|
,{7437,sizes_2, _typeSignal}
|
|
,{7435,sizes_2, _typeSignal}
|
|
,{7431,sizes_2, _typeSignal}
|
|
,{7433,sizes_2, _typeSignal}
|
|
,{7429,sizes_2, _typeSignal}
|
|
,{7427,sizes_2, _typeSignal}
|
|
,{7425,sizes_2, _typeSignal}
|
|
,{7423,sizes_2, _typeSignal}
|
|
,{7421,sizes_2, _typeSignal}
|
|
,{7419,sizes_2, _typeSignal}
|
|
,{7415,sizes_2, _typeSignal}
|
|
,{7417,sizes_2, _typeSignal}
|
|
,{7413,sizes_2, _typeSignal}
|
|
,{7411,sizes_2, _typeSignal}
|
|
,{7409,sizes_2, _typeSignal}
|
|
,{7371,sizes_2_16, _typeSignal}
|
|
,{7407,sizes_2, _typeSignal}
|
|
,{7403,sizes_4, _typeSignal}
|
|
,{7441,sizes_0, _typeSignal}
|
|
,{7442,sizes_0, _typeSignal}
|
|
,{7443,sizes_0, _typeSignal}
|
|
,{7444,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_69[10] = {
|
|
{7451,sizes_0, _typeSignal}
|
|
,{7453,sizes_0, _typeSignal}
|
|
,{7452,sizes_0, _typeSignal}
|
|
,{7454,sizes_0, _typeSignal}
|
|
,{7445,sizes_0, _typeSignal}
|
|
,{7447,sizes_0, _typeSignal}
|
|
,{7449,sizes_0, _typeSignal}
|
|
,{7446,sizes_0, _typeSignal}
|
|
,{7448,sizes_0, _typeSignal}
|
|
,{7450,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_70[23] = {
|
|
{7531,sizes_2, _typeSignal}
|
|
,{7529,sizes_2, _typeSignal}
|
|
,{7527,sizes_2, _typeSignal}
|
|
,{7523,sizes_2, _typeSignal}
|
|
,{7525,sizes_2, _typeSignal}
|
|
,{7521,sizes_2, _typeSignal}
|
|
,{7519,sizes_2, _typeSignal}
|
|
,{7517,sizes_2, _typeSignal}
|
|
,{7515,sizes_2, _typeSignal}
|
|
,{7513,sizes_2, _typeSignal}
|
|
,{7511,sizes_2, _typeSignal}
|
|
,{7507,sizes_2, _typeSignal}
|
|
,{7509,sizes_2, _typeSignal}
|
|
,{7505,sizes_2, _typeSignal}
|
|
,{7503,sizes_2, _typeSignal}
|
|
,{7501,sizes_2, _typeSignal}
|
|
,{7463,sizes_2_16, _typeSignal}
|
|
,{7499,sizes_2, _typeSignal}
|
|
,{7495,sizes_4, _typeSignal}
|
|
,{7533,sizes_0, _typeSignal}
|
|
,{7534,sizes_0, _typeSignal}
|
|
,{7535,sizes_0, _typeSignal}
|
|
,{7536,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_70[10] = {
|
|
{7543,sizes_0, _typeSignal}
|
|
,{7545,sizes_0, _typeSignal}
|
|
,{7544,sizes_0, _typeSignal}
|
|
,{7546,sizes_0, _typeSignal}
|
|
,{7537,sizes_0, _typeSignal}
|
|
,{7539,sizes_0, _typeSignal}
|
|
,{7541,sizes_0, _typeSignal}
|
|
,{7538,sizes_0, _typeSignal}
|
|
,{7540,sizes_0, _typeSignal}
|
|
,{7542,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_71[23] = {
|
|
{7623,sizes_2, _typeSignal}
|
|
,{7621,sizes_2, _typeSignal}
|
|
,{7619,sizes_2, _typeSignal}
|
|
,{7615,sizes_2, _typeSignal}
|
|
,{7617,sizes_2, _typeSignal}
|
|
,{7613,sizes_2, _typeSignal}
|
|
,{7611,sizes_2, _typeSignal}
|
|
,{7609,sizes_2, _typeSignal}
|
|
,{7607,sizes_2, _typeSignal}
|
|
,{7605,sizes_2, _typeSignal}
|
|
,{7603,sizes_2, _typeSignal}
|
|
,{7599,sizes_2, _typeSignal}
|
|
,{7601,sizes_2, _typeSignal}
|
|
,{7597,sizes_2, _typeSignal}
|
|
,{7595,sizes_2, _typeSignal}
|
|
,{7593,sizes_2, _typeSignal}
|
|
,{7555,sizes_2_16, _typeSignal}
|
|
,{7591,sizes_2, _typeSignal}
|
|
,{7587,sizes_4, _typeSignal}
|
|
,{7625,sizes_0, _typeSignal}
|
|
,{7626,sizes_0, _typeSignal}
|
|
,{7627,sizes_0, _typeSignal}
|
|
,{7628,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_71[10] = {
|
|
{7635,sizes_0, _typeSignal}
|
|
,{7637,sizes_0, _typeSignal}
|
|
,{7636,sizes_0, _typeSignal}
|
|
,{7638,sizes_0, _typeSignal}
|
|
,{7629,sizes_0, _typeSignal}
|
|
,{7631,sizes_0, _typeSignal}
|
|
,{7633,sizes_0, _typeSignal}
|
|
,{7630,sizes_0, _typeSignal}
|
|
,{7632,sizes_0, _typeSignal}
|
|
,{7634,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_72[23] = {
|
|
{7715,sizes_2, _typeSignal}
|
|
,{7713,sizes_2, _typeSignal}
|
|
,{7711,sizes_2, _typeSignal}
|
|
,{7707,sizes_2, _typeSignal}
|
|
,{7709,sizes_2, _typeSignal}
|
|
,{7705,sizes_2, _typeSignal}
|
|
,{7703,sizes_2, _typeSignal}
|
|
,{7701,sizes_2, _typeSignal}
|
|
,{7699,sizes_2, _typeSignal}
|
|
,{7697,sizes_2, _typeSignal}
|
|
,{7695,sizes_2, _typeSignal}
|
|
,{7691,sizes_2, _typeSignal}
|
|
,{7693,sizes_2, _typeSignal}
|
|
,{7689,sizes_2, _typeSignal}
|
|
,{7687,sizes_2, _typeSignal}
|
|
,{7685,sizes_2, _typeSignal}
|
|
,{7647,sizes_2_16, _typeSignal}
|
|
,{7683,sizes_2, _typeSignal}
|
|
,{7679,sizes_4, _typeSignal}
|
|
,{7717,sizes_0, _typeSignal}
|
|
,{7718,sizes_0, _typeSignal}
|
|
,{7719,sizes_0, _typeSignal}
|
|
,{7720,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_72[10] = {
|
|
{7727,sizes_0, _typeSignal}
|
|
,{7729,sizes_0, _typeSignal}
|
|
,{7728,sizes_0, _typeSignal}
|
|
,{7730,sizes_0, _typeSignal}
|
|
,{7721,sizes_0, _typeSignal}
|
|
,{7723,sizes_0, _typeSignal}
|
|
,{7725,sizes_0, _typeSignal}
|
|
,{7722,sizes_0, _typeSignal}
|
|
,{7724,sizes_0, _typeSignal}
|
|
,{7726,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_73[23] = {
|
|
{7807,sizes_2, _typeSignal}
|
|
,{7805,sizes_2, _typeSignal}
|
|
,{7803,sizes_2, _typeSignal}
|
|
,{7799,sizes_2, _typeSignal}
|
|
,{7801,sizes_2, _typeSignal}
|
|
,{7797,sizes_2, _typeSignal}
|
|
,{7795,sizes_2, _typeSignal}
|
|
,{7793,sizes_2, _typeSignal}
|
|
,{7791,sizes_2, _typeSignal}
|
|
,{7789,sizes_2, _typeSignal}
|
|
,{7787,sizes_2, _typeSignal}
|
|
,{7783,sizes_2, _typeSignal}
|
|
,{7785,sizes_2, _typeSignal}
|
|
,{7781,sizes_2, _typeSignal}
|
|
,{7779,sizes_2, _typeSignal}
|
|
,{7777,sizes_2, _typeSignal}
|
|
,{7739,sizes_2_16, _typeSignal}
|
|
,{7775,sizes_2, _typeSignal}
|
|
,{7771,sizes_4, _typeSignal}
|
|
,{7809,sizes_0, _typeSignal}
|
|
,{7810,sizes_0, _typeSignal}
|
|
,{7811,sizes_0, _typeSignal}
|
|
,{7812,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_73[10] = {
|
|
{7819,sizes_0, _typeSignal}
|
|
,{7821,sizes_0, _typeSignal}
|
|
,{7820,sizes_0, _typeSignal}
|
|
,{7822,sizes_0, _typeSignal}
|
|
,{7813,sizes_0, _typeSignal}
|
|
,{7815,sizes_0, _typeSignal}
|
|
,{7817,sizes_0, _typeSignal}
|
|
,{7814,sizes_0, _typeSignal}
|
|
,{7816,sizes_0, _typeSignal}
|
|
,{7818,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_74[23] = {
|
|
{7899,sizes_2, _typeSignal}
|
|
,{7897,sizes_2, _typeSignal}
|
|
,{7895,sizes_2, _typeSignal}
|
|
,{7891,sizes_2, _typeSignal}
|
|
,{7893,sizes_2, _typeSignal}
|
|
,{7889,sizes_2, _typeSignal}
|
|
,{7887,sizes_2, _typeSignal}
|
|
,{7885,sizes_2, _typeSignal}
|
|
,{7883,sizes_2, _typeSignal}
|
|
,{7881,sizes_2, _typeSignal}
|
|
,{7879,sizes_2, _typeSignal}
|
|
,{7875,sizes_2, _typeSignal}
|
|
,{7877,sizes_2, _typeSignal}
|
|
,{7873,sizes_2, _typeSignal}
|
|
,{7871,sizes_2, _typeSignal}
|
|
,{7869,sizes_2, _typeSignal}
|
|
,{7831,sizes_2_16, _typeSignal}
|
|
,{7867,sizes_2, _typeSignal}
|
|
,{7863,sizes_4, _typeSignal}
|
|
,{7901,sizes_0, _typeSignal}
|
|
,{7902,sizes_0, _typeSignal}
|
|
,{7903,sizes_0, _typeSignal}
|
|
,{7904,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_74[10] = {
|
|
{7911,sizes_0, _typeSignal}
|
|
,{7913,sizes_0, _typeSignal}
|
|
,{7912,sizes_0, _typeSignal}
|
|
,{7914,sizes_0, _typeSignal}
|
|
,{7905,sizes_0, _typeSignal}
|
|
,{7907,sizes_0, _typeSignal}
|
|
,{7909,sizes_0, _typeSignal}
|
|
,{7906,sizes_0, _typeSignal}
|
|
,{7908,sizes_0, _typeSignal}
|
|
,{7910,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_75[23] = {
|
|
{7991,sizes_2, _typeSignal}
|
|
,{7989,sizes_2, _typeSignal}
|
|
,{7987,sizes_2, _typeSignal}
|
|
,{7983,sizes_2, _typeSignal}
|
|
,{7985,sizes_2, _typeSignal}
|
|
,{7981,sizes_2, _typeSignal}
|
|
,{7979,sizes_2, _typeSignal}
|
|
,{7977,sizes_2, _typeSignal}
|
|
,{7975,sizes_2, _typeSignal}
|
|
,{7973,sizes_2, _typeSignal}
|
|
,{7971,sizes_2, _typeSignal}
|
|
,{7967,sizes_2, _typeSignal}
|
|
,{7969,sizes_2, _typeSignal}
|
|
,{7965,sizes_2, _typeSignal}
|
|
,{7963,sizes_2, _typeSignal}
|
|
,{7961,sizes_2, _typeSignal}
|
|
,{7923,sizes_2_16, _typeSignal}
|
|
,{7959,sizes_2, _typeSignal}
|
|
,{7955,sizes_4, _typeSignal}
|
|
,{7993,sizes_0, _typeSignal}
|
|
,{7994,sizes_0, _typeSignal}
|
|
,{7995,sizes_0, _typeSignal}
|
|
,{7996,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_75[10] = {
|
|
{8003,sizes_0, _typeSignal}
|
|
,{8005,sizes_0, _typeSignal}
|
|
,{8004,sizes_0, _typeSignal}
|
|
,{8006,sizes_0, _typeSignal}
|
|
,{7997,sizes_0, _typeSignal}
|
|
,{7999,sizes_0, _typeSignal}
|
|
,{8001,sizes_0, _typeSignal}
|
|
,{7998,sizes_0, _typeSignal}
|
|
,{8000,sizes_0, _typeSignal}
|
|
,{8002,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_76[23] = {
|
|
{8083,sizes_2, _typeSignal}
|
|
,{8081,sizes_2, _typeSignal}
|
|
,{8079,sizes_2, _typeSignal}
|
|
,{8075,sizes_2, _typeSignal}
|
|
,{8077,sizes_2, _typeSignal}
|
|
,{8073,sizes_2, _typeSignal}
|
|
,{8071,sizes_2, _typeSignal}
|
|
,{8069,sizes_2, _typeSignal}
|
|
,{8067,sizes_2, _typeSignal}
|
|
,{8065,sizes_2, _typeSignal}
|
|
,{8063,sizes_2, _typeSignal}
|
|
,{8059,sizes_2, _typeSignal}
|
|
,{8061,sizes_2, _typeSignal}
|
|
,{8057,sizes_2, _typeSignal}
|
|
,{8055,sizes_2, _typeSignal}
|
|
,{8053,sizes_2, _typeSignal}
|
|
,{8015,sizes_2_16, _typeSignal}
|
|
,{8051,sizes_2, _typeSignal}
|
|
,{8047,sizes_4, _typeSignal}
|
|
,{8085,sizes_0, _typeSignal}
|
|
,{8086,sizes_0, _typeSignal}
|
|
,{8087,sizes_0, _typeSignal}
|
|
,{8088,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_76[10] = {
|
|
{8095,sizes_0, _typeSignal}
|
|
,{8097,sizes_0, _typeSignal}
|
|
,{8096,sizes_0, _typeSignal}
|
|
,{8098,sizes_0, _typeSignal}
|
|
,{8089,sizes_0, _typeSignal}
|
|
,{8091,sizes_0, _typeSignal}
|
|
,{8093,sizes_0, _typeSignal}
|
|
,{8090,sizes_0, _typeSignal}
|
|
,{8092,sizes_0, _typeSignal}
|
|
,{8094,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_77[23] = {
|
|
{8175,sizes_2, _typeSignal}
|
|
,{8173,sizes_2, _typeSignal}
|
|
,{8171,sizes_2, _typeSignal}
|
|
,{8167,sizes_2, _typeSignal}
|
|
,{8169,sizes_2, _typeSignal}
|
|
,{8165,sizes_2, _typeSignal}
|
|
,{8163,sizes_2, _typeSignal}
|
|
,{8161,sizes_2, _typeSignal}
|
|
,{8159,sizes_2, _typeSignal}
|
|
,{8157,sizes_2, _typeSignal}
|
|
,{8155,sizes_2, _typeSignal}
|
|
,{8151,sizes_2, _typeSignal}
|
|
,{8153,sizes_2, _typeSignal}
|
|
,{8149,sizes_2, _typeSignal}
|
|
,{8147,sizes_2, _typeSignal}
|
|
,{8145,sizes_2, _typeSignal}
|
|
,{8107,sizes_2_16, _typeSignal}
|
|
,{8143,sizes_2, _typeSignal}
|
|
,{8139,sizes_4, _typeSignal}
|
|
,{8177,sizes_0, _typeSignal}
|
|
,{8178,sizes_0, _typeSignal}
|
|
,{8179,sizes_0, _typeSignal}
|
|
,{8180,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_77[10] = {
|
|
{8187,sizes_0, _typeSignal}
|
|
,{8189,sizes_0, _typeSignal}
|
|
,{8188,sizes_0, _typeSignal}
|
|
,{8190,sizes_0, _typeSignal}
|
|
,{8181,sizes_0, _typeSignal}
|
|
,{8183,sizes_0, _typeSignal}
|
|
,{8185,sizes_0, _typeSignal}
|
|
,{8182,sizes_0, _typeSignal}
|
|
,{8184,sizes_0, _typeSignal}
|
|
,{8186,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_78[23] = {
|
|
{8267,sizes_2, _typeSignal}
|
|
,{8265,sizes_2, _typeSignal}
|
|
,{8263,sizes_2, _typeSignal}
|
|
,{8259,sizes_2, _typeSignal}
|
|
,{8261,sizes_2, _typeSignal}
|
|
,{8257,sizes_2, _typeSignal}
|
|
,{8255,sizes_2, _typeSignal}
|
|
,{8253,sizes_2, _typeSignal}
|
|
,{8251,sizes_2, _typeSignal}
|
|
,{8249,sizes_2, _typeSignal}
|
|
,{8247,sizes_2, _typeSignal}
|
|
,{8243,sizes_2, _typeSignal}
|
|
,{8245,sizes_2, _typeSignal}
|
|
,{8241,sizes_2, _typeSignal}
|
|
,{8239,sizes_2, _typeSignal}
|
|
,{8237,sizes_2, _typeSignal}
|
|
,{8199,sizes_2_16, _typeSignal}
|
|
,{8235,sizes_2, _typeSignal}
|
|
,{8231,sizes_4, _typeSignal}
|
|
,{8269,sizes_0, _typeSignal}
|
|
,{8270,sizes_0, _typeSignal}
|
|
,{8271,sizes_0, _typeSignal}
|
|
,{8272,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_78[10] = {
|
|
{8279,sizes_0, _typeSignal}
|
|
,{8281,sizes_0, _typeSignal}
|
|
,{8280,sizes_0, _typeSignal}
|
|
,{8282,sizes_0, _typeSignal}
|
|
,{8273,sizes_0, _typeSignal}
|
|
,{8275,sizes_0, _typeSignal}
|
|
,{8277,sizes_0, _typeSignal}
|
|
,{8274,sizes_0, _typeSignal}
|
|
,{8276,sizes_0, _typeSignal}
|
|
,{8278,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_79[23] = {
|
|
{8359,sizes_2, _typeSignal}
|
|
,{8357,sizes_2, _typeSignal}
|
|
,{8355,sizes_2, _typeSignal}
|
|
,{8351,sizes_2, _typeSignal}
|
|
,{8353,sizes_2, _typeSignal}
|
|
,{8349,sizes_2, _typeSignal}
|
|
,{8347,sizes_2, _typeSignal}
|
|
,{8345,sizes_2, _typeSignal}
|
|
,{8343,sizes_2, _typeSignal}
|
|
,{8341,sizes_2, _typeSignal}
|
|
,{8339,sizes_2, _typeSignal}
|
|
,{8335,sizes_2, _typeSignal}
|
|
,{8337,sizes_2, _typeSignal}
|
|
,{8333,sizes_2, _typeSignal}
|
|
,{8331,sizes_2, _typeSignal}
|
|
,{8329,sizes_2, _typeSignal}
|
|
,{8291,sizes_2_16, _typeSignal}
|
|
,{8327,sizes_2, _typeSignal}
|
|
,{8323,sizes_4, _typeSignal}
|
|
,{8361,sizes_0, _typeSignal}
|
|
,{8362,sizes_0, _typeSignal}
|
|
,{8363,sizes_0, _typeSignal}
|
|
,{8364,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_79[10] = {
|
|
{8371,sizes_0, _typeSignal}
|
|
,{8373,sizes_0, _typeSignal}
|
|
,{8372,sizes_0, _typeSignal}
|
|
,{8374,sizes_0, _typeSignal}
|
|
,{8365,sizes_0, _typeSignal}
|
|
,{8367,sizes_0, _typeSignal}
|
|
,{8369,sizes_0, _typeSignal}
|
|
,{8366,sizes_0, _typeSignal}
|
|
,{8368,sizes_0, _typeSignal}
|
|
,{8370,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_80[23] = {
|
|
{8451,sizes_2, _typeSignal}
|
|
,{8449,sizes_2, _typeSignal}
|
|
,{8447,sizes_2, _typeSignal}
|
|
,{8443,sizes_2, _typeSignal}
|
|
,{8445,sizes_2, _typeSignal}
|
|
,{8441,sizes_2, _typeSignal}
|
|
,{8439,sizes_2, _typeSignal}
|
|
,{8437,sizes_2, _typeSignal}
|
|
,{8435,sizes_2, _typeSignal}
|
|
,{8433,sizes_2, _typeSignal}
|
|
,{8431,sizes_2, _typeSignal}
|
|
,{8427,sizes_2, _typeSignal}
|
|
,{8429,sizes_2, _typeSignal}
|
|
,{8425,sizes_2, _typeSignal}
|
|
,{8423,sizes_2, _typeSignal}
|
|
,{8421,sizes_2, _typeSignal}
|
|
,{8383,sizes_2_16, _typeSignal}
|
|
,{8419,sizes_2, _typeSignal}
|
|
,{8415,sizes_4, _typeSignal}
|
|
,{8453,sizes_0, _typeSignal}
|
|
,{8454,sizes_0, _typeSignal}
|
|
,{8455,sizes_0, _typeSignal}
|
|
,{8456,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_80[10] = {
|
|
{8463,sizes_0, _typeSignal}
|
|
,{8465,sizes_0, _typeSignal}
|
|
,{8464,sizes_0, _typeSignal}
|
|
,{8466,sizes_0, _typeSignal}
|
|
,{8457,sizes_0, _typeSignal}
|
|
,{8459,sizes_0, _typeSignal}
|
|
,{8461,sizes_0, _typeSignal}
|
|
,{8458,sizes_0, _typeSignal}
|
|
,{8460,sizes_0, _typeSignal}
|
|
,{8462,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_81[23] = {
|
|
{8543,sizes_2, _typeSignal}
|
|
,{8541,sizes_2, _typeSignal}
|
|
,{8539,sizes_2, _typeSignal}
|
|
,{8535,sizes_2, _typeSignal}
|
|
,{8537,sizes_2, _typeSignal}
|
|
,{8533,sizes_2, _typeSignal}
|
|
,{8531,sizes_2, _typeSignal}
|
|
,{8529,sizes_2, _typeSignal}
|
|
,{8527,sizes_2, _typeSignal}
|
|
,{8525,sizes_2, _typeSignal}
|
|
,{8523,sizes_2, _typeSignal}
|
|
,{8519,sizes_2, _typeSignal}
|
|
,{8521,sizes_2, _typeSignal}
|
|
,{8517,sizes_2, _typeSignal}
|
|
,{8515,sizes_2, _typeSignal}
|
|
,{8513,sizes_2, _typeSignal}
|
|
,{8475,sizes_2_16, _typeSignal}
|
|
,{8511,sizes_2, _typeSignal}
|
|
,{8507,sizes_4, _typeSignal}
|
|
,{8545,sizes_0, _typeSignal}
|
|
,{8546,sizes_0, _typeSignal}
|
|
,{8547,sizes_0, _typeSignal}
|
|
,{8548,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_81[10] = {
|
|
{8555,sizes_0, _typeSignal}
|
|
,{8557,sizes_0, _typeSignal}
|
|
,{8556,sizes_0, _typeSignal}
|
|
,{8558,sizes_0, _typeSignal}
|
|
,{8549,sizes_0, _typeSignal}
|
|
,{8551,sizes_0, _typeSignal}
|
|
,{8553,sizes_0, _typeSignal}
|
|
,{8550,sizes_0, _typeSignal}
|
|
,{8552,sizes_0, _typeSignal}
|
|
,{8554,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_82[23] = {
|
|
{8635,sizes_2, _typeSignal}
|
|
,{8633,sizes_2, _typeSignal}
|
|
,{8631,sizes_2, _typeSignal}
|
|
,{8627,sizes_2, _typeSignal}
|
|
,{8629,sizes_2, _typeSignal}
|
|
,{8625,sizes_2, _typeSignal}
|
|
,{8623,sizes_2, _typeSignal}
|
|
,{8621,sizes_2, _typeSignal}
|
|
,{8619,sizes_2, _typeSignal}
|
|
,{8617,sizes_2, _typeSignal}
|
|
,{8615,sizes_2, _typeSignal}
|
|
,{8611,sizes_2, _typeSignal}
|
|
,{8613,sizes_2, _typeSignal}
|
|
,{8609,sizes_2, _typeSignal}
|
|
,{8607,sizes_2, _typeSignal}
|
|
,{8605,sizes_2, _typeSignal}
|
|
,{8567,sizes_2_16, _typeSignal}
|
|
,{8603,sizes_2, _typeSignal}
|
|
,{8599,sizes_4, _typeSignal}
|
|
,{8637,sizes_0, _typeSignal}
|
|
,{8638,sizes_0, _typeSignal}
|
|
,{8639,sizes_0, _typeSignal}
|
|
,{8640,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_82[10] = {
|
|
{8647,sizes_0, _typeSignal}
|
|
,{8649,sizes_0, _typeSignal}
|
|
,{8648,sizes_0, _typeSignal}
|
|
,{8650,sizes_0, _typeSignal}
|
|
,{8641,sizes_0, _typeSignal}
|
|
,{8643,sizes_0, _typeSignal}
|
|
,{8645,sizes_0, _typeSignal}
|
|
,{8642,sizes_0, _typeSignal}
|
|
,{8644,sizes_0, _typeSignal}
|
|
,{8646,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_83[23] = {
|
|
{8727,sizes_2, _typeSignal}
|
|
,{8725,sizes_2, _typeSignal}
|
|
,{8723,sizes_2, _typeSignal}
|
|
,{8719,sizes_2, _typeSignal}
|
|
,{8721,sizes_2, _typeSignal}
|
|
,{8717,sizes_2, _typeSignal}
|
|
,{8715,sizes_2, _typeSignal}
|
|
,{8713,sizes_2, _typeSignal}
|
|
,{8711,sizes_2, _typeSignal}
|
|
,{8709,sizes_2, _typeSignal}
|
|
,{8707,sizes_2, _typeSignal}
|
|
,{8703,sizes_2, _typeSignal}
|
|
,{8705,sizes_2, _typeSignal}
|
|
,{8701,sizes_2, _typeSignal}
|
|
,{8699,sizes_2, _typeSignal}
|
|
,{8697,sizes_2, _typeSignal}
|
|
,{8659,sizes_2_16, _typeSignal}
|
|
,{8695,sizes_2, _typeSignal}
|
|
,{8691,sizes_4, _typeSignal}
|
|
,{8729,sizes_0, _typeSignal}
|
|
,{8730,sizes_0, _typeSignal}
|
|
,{8731,sizes_0, _typeSignal}
|
|
,{8732,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_83[10] = {
|
|
{8739,sizes_0, _typeSignal}
|
|
,{8741,sizes_0, _typeSignal}
|
|
,{8740,sizes_0, _typeSignal}
|
|
,{8742,sizes_0, _typeSignal}
|
|
,{8733,sizes_0, _typeSignal}
|
|
,{8735,sizes_0, _typeSignal}
|
|
,{8737,sizes_0, _typeSignal}
|
|
,{8734,sizes_0, _typeSignal}
|
|
,{8736,sizes_0, _typeSignal}
|
|
,{8738,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_84[23] = {
|
|
{8819,sizes_2, _typeSignal}
|
|
,{8817,sizes_2, _typeSignal}
|
|
,{8815,sizes_2, _typeSignal}
|
|
,{8811,sizes_2, _typeSignal}
|
|
,{8813,sizes_2, _typeSignal}
|
|
,{8809,sizes_2, _typeSignal}
|
|
,{8807,sizes_2, _typeSignal}
|
|
,{8805,sizes_2, _typeSignal}
|
|
,{8803,sizes_2, _typeSignal}
|
|
,{8801,sizes_2, _typeSignal}
|
|
,{8799,sizes_2, _typeSignal}
|
|
,{8795,sizes_2, _typeSignal}
|
|
,{8797,sizes_2, _typeSignal}
|
|
,{8793,sizes_2, _typeSignal}
|
|
,{8791,sizes_2, _typeSignal}
|
|
,{8789,sizes_2, _typeSignal}
|
|
,{8751,sizes_2_16, _typeSignal}
|
|
,{8787,sizes_2, _typeSignal}
|
|
,{8783,sizes_4, _typeSignal}
|
|
,{8821,sizes_0, _typeSignal}
|
|
,{8822,sizes_0, _typeSignal}
|
|
,{8823,sizes_0, _typeSignal}
|
|
,{8824,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_84[10] = {
|
|
{8831,sizes_0, _typeSignal}
|
|
,{8833,sizes_0, _typeSignal}
|
|
,{8832,sizes_0, _typeSignal}
|
|
,{8834,sizes_0, _typeSignal}
|
|
,{8825,sizes_0, _typeSignal}
|
|
,{8827,sizes_0, _typeSignal}
|
|
,{8829,sizes_0, _typeSignal}
|
|
,{8826,sizes_0, _typeSignal}
|
|
,{8828,sizes_0, _typeSignal}
|
|
,{8830,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_85[23] = {
|
|
{8911,sizes_2, _typeSignal}
|
|
,{8909,sizes_2, _typeSignal}
|
|
,{8907,sizes_2, _typeSignal}
|
|
,{8903,sizes_2, _typeSignal}
|
|
,{8905,sizes_2, _typeSignal}
|
|
,{8901,sizes_2, _typeSignal}
|
|
,{8899,sizes_2, _typeSignal}
|
|
,{8897,sizes_2, _typeSignal}
|
|
,{8895,sizes_2, _typeSignal}
|
|
,{8893,sizes_2, _typeSignal}
|
|
,{8891,sizes_2, _typeSignal}
|
|
,{8887,sizes_2, _typeSignal}
|
|
,{8889,sizes_2, _typeSignal}
|
|
,{8885,sizes_2, _typeSignal}
|
|
,{8883,sizes_2, _typeSignal}
|
|
,{8881,sizes_2, _typeSignal}
|
|
,{8843,sizes_2_16, _typeSignal}
|
|
,{8879,sizes_2, _typeSignal}
|
|
,{8875,sizes_4, _typeSignal}
|
|
,{8913,sizes_0, _typeSignal}
|
|
,{8914,sizes_0, _typeSignal}
|
|
,{8915,sizes_0, _typeSignal}
|
|
,{8916,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_85[10] = {
|
|
{8923,sizes_0, _typeSignal}
|
|
,{8925,sizes_0, _typeSignal}
|
|
,{8924,sizes_0, _typeSignal}
|
|
,{8926,sizes_0, _typeSignal}
|
|
,{8917,sizes_0, _typeSignal}
|
|
,{8919,sizes_0, _typeSignal}
|
|
,{8921,sizes_0, _typeSignal}
|
|
,{8918,sizes_0, _typeSignal}
|
|
,{8920,sizes_0, _typeSignal}
|
|
,{8922,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_86[23] = {
|
|
{9003,sizes_2, _typeSignal}
|
|
,{9001,sizes_2, _typeSignal}
|
|
,{8999,sizes_2, _typeSignal}
|
|
,{8995,sizes_2, _typeSignal}
|
|
,{8997,sizes_2, _typeSignal}
|
|
,{8993,sizes_2, _typeSignal}
|
|
,{8991,sizes_2, _typeSignal}
|
|
,{8989,sizes_2, _typeSignal}
|
|
,{8987,sizes_2, _typeSignal}
|
|
,{8985,sizes_2, _typeSignal}
|
|
,{8983,sizes_2, _typeSignal}
|
|
,{8979,sizes_2, _typeSignal}
|
|
,{8981,sizes_2, _typeSignal}
|
|
,{8977,sizes_2, _typeSignal}
|
|
,{8975,sizes_2, _typeSignal}
|
|
,{8973,sizes_2, _typeSignal}
|
|
,{8935,sizes_2_16, _typeSignal}
|
|
,{8971,sizes_2, _typeSignal}
|
|
,{8967,sizes_4, _typeSignal}
|
|
,{9005,sizes_0, _typeSignal}
|
|
,{9006,sizes_0, _typeSignal}
|
|
,{9007,sizes_0, _typeSignal}
|
|
,{9008,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_86[10] = {
|
|
{9015,sizes_0, _typeSignal}
|
|
,{9017,sizes_0, _typeSignal}
|
|
,{9016,sizes_0, _typeSignal}
|
|
,{9018,sizes_0, _typeSignal}
|
|
,{9009,sizes_0, _typeSignal}
|
|
,{9011,sizes_0, _typeSignal}
|
|
,{9013,sizes_0, _typeSignal}
|
|
,{9010,sizes_0, _typeSignal}
|
|
,{9012,sizes_0, _typeSignal}
|
|
,{9014,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_87[23] = {
|
|
{9095,sizes_2, _typeSignal}
|
|
,{9093,sizes_2, _typeSignal}
|
|
,{9091,sizes_2, _typeSignal}
|
|
,{9087,sizes_2, _typeSignal}
|
|
,{9089,sizes_2, _typeSignal}
|
|
,{9085,sizes_2, _typeSignal}
|
|
,{9083,sizes_2, _typeSignal}
|
|
,{9081,sizes_2, _typeSignal}
|
|
,{9079,sizes_2, _typeSignal}
|
|
,{9077,sizes_2, _typeSignal}
|
|
,{9075,sizes_2, _typeSignal}
|
|
,{9071,sizes_2, _typeSignal}
|
|
,{9073,sizes_2, _typeSignal}
|
|
,{9069,sizes_2, _typeSignal}
|
|
,{9067,sizes_2, _typeSignal}
|
|
,{9065,sizes_2, _typeSignal}
|
|
,{9027,sizes_2_16, _typeSignal}
|
|
,{9063,sizes_2, _typeSignal}
|
|
,{9059,sizes_4, _typeSignal}
|
|
,{9097,sizes_0, _typeSignal}
|
|
,{9098,sizes_0, _typeSignal}
|
|
,{9099,sizes_0, _typeSignal}
|
|
,{9100,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_87[10] = {
|
|
{9107,sizes_0, _typeSignal}
|
|
,{9109,sizes_0, _typeSignal}
|
|
,{9108,sizes_0, _typeSignal}
|
|
,{9110,sizes_0, _typeSignal}
|
|
,{9101,sizes_0, _typeSignal}
|
|
,{9103,sizes_0, _typeSignal}
|
|
,{9105,sizes_0, _typeSignal}
|
|
,{9102,sizes_0, _typeSignal}
|
|
,{9104,sizes_0, _typeSignal}
|
|
,{9106,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_88[23] = {
|
|
{9187,sizes_2, _typeSignal}
|
|
,{9185,sizes_2, _typeSignal}
|
|
,{9183,sizes_2, _typeSignal}
|
|
,{9179,sizes_2, _typeSignal}
|
|
,{9181,sizes_2, _typeSignal}
|
|
,{9177,sizes_2, _typeSignal}
|
|
,{9175,sizes_2, _typeSignal}
|
|
,{9173,sizes_2, _typeSignal}
|
|
,{9171,sizes_2, _typeSignal}
|
|
,{9169,sizes_2, _typeSignal}
|
|
,{9167,sizes_2, _typeSignal}
|
|
,{9163,sizes_2, _typeSignal}
|
|
,{9165,sizes_2, _typeSignal}
|
|
,{9161,sizes_2, _typeSignal}
|
|
,{9159,sizes_2, _typeSignal}
|
|
,{9157,sizes_2, _typeSignal}
|
|
,{9119,sizes_2_16, _typeSignal}
|
|
,{9155,sizes_2, _typeSignal}
|
|
,{9151,sizes_4, _typeSignal}
|
|
,{9189,sizes_0, _typeSignal}
|
|
,{9190,sizes_0, _typeSignal}
|
|
,{9191,sizes_0, _typeSignal}
|
|
,{9192,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_88[10] = {
|
|
{9199,sizes_0, _typeSignal}
|
|
,{9201,sizes_0, _typeSignal}
|
|
,{9200,sizes_0, _typeSignal}
|
|
,{9202,sizes_0, _typeSignal}
|
|
,{9193,sizes_0, _typeSignal}
|
|
,{9195,sizes_0, _typeSignal}
|
|
,{9197,sizes_0, _typeSignal}
|
|
,{9194,sizes_0, _typeSignal}
|
|
,{9196,sizes_0, _typeSignal}
|
|
,{9198,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_89[23] = {
|
|
{9279,sizes_2, _typeSignal}
|
|
,{9277,sizes_2, _typeSignal}
|
|
,{9275,sizes_2, _typeSignal}
|
|
,{9271,sizes_2, _typeSignal}
|
|
,{9273,sizes_2, _typeSignal}
|
|
,{9269,sizes_2, _typeSignal}
|
|
,{9267,sizes_2, _typeSignal}
|
|
,{9265,sizes_2, _typeSignal}
|
|
,{9263,sizes_2, _typeSignal}
|
|
,{9261,sizes_2, _typeSignal}
|
|
,{9259,sizes_2, _typeSignal}
|
|
,{9255,sizes_2, _typeSignal}
|
|
,{9257,sizes_2, _typeSignal}
|
|
,{9253,sizes_2, _typeSignal}
|
|
,{9251,sizes_2, _typeSignal}
|
|
,{9249,sizes_2, _typeSignal}
|
|
,{9211,sizes_2_16, _typeSignal}
|
|
,{9247,sizes_2, _typeSignal}
|
|
,{9243,sizes_4, _typeSignal}
|
|
,{9281,sizes_0, _typeSignal}
|
|
,{9282,sizes_0, _typeSignal}
|
|
,{9283,sizes_0, _typeSignal}
|
|
,{9284,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_89[10] = {
|
|
{9291,sizes_0, _typeSignal}
|
|
,{9293,sizes_0, _typeSignal}
|
|
,{9292,sizes_0, _typeSignal}
|
|
,{9294,sizes_0, _typeSignal}
|
|
,{9285,sizes_0, _typeSignal}
|
|
,{9287,sizes_0, _typeSignal}
|
|
,{9289,sizes_0, _typeSignal}
|
|
,{9286,sizes_0, _typeSignal}
|
|
,{9288,sizes_0, _typeSignal}
|
|
,{9290,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_90[23] = {
|
|
{9371,sizes_2, _typeSignal}
|
|
,{9369,sizes_2, _typeSignal}
|
|
,{9367,sizes_2, _typeSignal}
|
|
,{9363,sizes_2, _typeSignal}
|
|
,{9365,sizes_2, _typeSignal}
|
|
,{9361,sizes_2, _typeSignal}
|
|
,{9359,sizes_2, _typeSignal}
|
|
,{9357,sizes_2, _typeSignal}
|
|
,{9355,sizes_2, _typeSignal}
|
|
,{9353,sizes_2, _typeSignal}
|
|
,{9351,sizes_2, _typeSignal}
|
|
,{9347,sizes_2, _typeSignal}
|
|
,{9349,sizes_2, _typeSignal}
|
|
,{9345,sizes_2, _typeSignal}
|
|
,{9343,sizes_2, _typeSignal}
|
|
,{9341,sizes_2, _typeSignal}
|
|
,{9303,sizes_2_16, _typeSignal}
|
|
,{9339,sizes_2, _typeSignal}
|
|
,{9335,sizes_4, _typeSignal}
|
|
,{9373,sizes_0, _typeSignal}
|
|
,{9374,sizes_0, _typeSignal}
|
|
,{9375,sizes_0, _typeSignal}
|
|
,{9376,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_90[10] = {
|
|
{9383,sizes_0, _typeSignal}
|
|
,{9385,sizes_0, _typeSignal}
|
|
,{9384,sizes_0, _typeSignal}
|
|
,{9386,sizes_0, _typeSignal}
|
|
,{9377,sizes_0, _typeSignal}
|
|
,{9379,sizes_0, _typeSignal}
|
|
,{9381,sizes_0, _typeSignal}
|
|
,{9378,sizes_0, _typeSignal}
|
|
,{9380,sizes_0, _typeSignal}
|
|
,{9382,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_91[23] = {
|
|
{9463,sizes_2, _typeSignal}
|
|
,{9461,sizes_2, _typeSignal}
|
|
,{9459,sizes_2, _typeSignal}
|
|
,{9455,sizes_2, _typeSignal}
|
|
,{9457,sizes_2, _typeSignal}
|
|
,{9453,sizes_2, _typeSignal}
|
|
,{9451,sizes_2, _typeSignal}
|
|
,{9449,sizes_2, _typeSignal}
|
|
,{9447,sizes_2, _typeSignal}
|
|
,{9445,sizes_2, _typeSignal}
|
|
,{9443,sizes_2, _typeSignal}
|
|
,{9439,sizes_2, _typeSignal}
|
|
,{9441,sizes_2, _typeSignal}
|
|
,{9437,sizes_2, _typeSignal}
|
|
,{9435,sizes_2, _typeSignal}
|
|
,{9433,sizes_2, _typeSignal}
|
|
,{9395,sizes_2_16, _typeSignal}
|
|
,{9431,sizes_2, _typeSignal}
|
|
,{9427,sizes_4, _typeSignal}
|
|
,{9465,sizes_0, _typeSignal}
|
|
,{9466,sizes_0, _typeSignal}
|
|
,{9467,sizes_0, _typeSignal}
|
|
,{9468,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_91[10] = {
|
|
{9475,sizes_0, _typeSignal}
|
|
,{9477,sizes_0, _typeSignal}
|
|
,{9476,sizes_0, _typeSignal}
|
|
,{9478,sizes_0, _typeSignal}
|
|
,{9469,sizes_0, _typeSignal}
|
|
,{9471,sizes_0, _typeSignal}
|
|
,{9473,sizes_0, _typeSignal}
|
|
,{9470,sizes_0, _typeSignal}
|
|
,{9472,sizes_0, _typeSignal}
|
|
,{9474,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_92[23] = {
|
|
{9555,sizes_2, _typeSignal}
|
|
,{9553,sizes_2, _typeSignal}
|
|
,{9551,sizes_2, _typeSignal}
|
|
,{9547,sizes_2, _typeSignal}
|
|
,{9549,sizes_2, _typeSignal}
|
|
,{9545,sizes_2, _typeSignal}
|
|
,{9543,sizes_2, _typeSignal}
|
|
,{9541,sizes_2, _typeSignal}
|
|
,{9539,sizes_2, _typeSignal}
|
|
,{9537,sizes_2, _typeSignal}
|
|
,{9535,sizes_2, _typeSignal}
|
|
,{9531,sizes_2, _typeSignal}
|
|
,{9533,sizes_2, _typeSignal}
|
|
,{9529,sizes_2, _typeSignal}
|
|
,{9527,sizes_2, _typeSignal}
|
|
,{9525,sizes_2, _typeSignal}
|
|
,{9487,sizes_2_16, _typeSignal}
|
|
,{9523,sizes_2, _typeSignal}
|
|
,{9519,sizes_4, _typeSignal}
|
|
,{9557,sizes_0, _typeSignal}
|
|
,{9558,sizes_0, _typeSignal}
|
|
,{9559,sizes_0, _typeSignal}
|
|
,{9560,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_92[10] = {
|
|
{9567,sizes_0, _typeSignal}
|
|
,{9569,sizes_0, _typeSignal}
|
|
,{9568,sizes_0, _typeSignal}
|
|
,{9570,sizes_0, _typeSignal}
|
|
,{9561,sizes_0, _typeSignal}
|
|
,{9563,sizes_0, _typeSignal}
|
|
,{9565,sizes_0, _typeSignal}
|
|
,{9562,sizes_0, _typeSignal}
|
|
,{9564,sizes_0, _typeSignal}
|
|
,{9566,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_93[23] = {
|
|
{9647,sizes_2, _typeSignal}
|
|
,{9645,sizes_2, _typeSignal}
|
|
,{9643,sizes_2, _typeSignal}
|
|
,{9639,sizes_2, _typeSignal}
|
|
,{9641,sizes_2, _typeSignal}
|
|
,{9637,sizes_2, _typeSignal}
|
|
,{9635,sizes_2, _typeSignal}
|
|
,{9633,sizes_2, _typeSignal}
|
|
,{9631,sizes_2, _typeSignal}
|
|
,{9629,sizes_2, _typeSignal}
|
|
,{9627,sizes_2, _typeSignal}
|
|
,{9623,sizes_2, _typeSignal}
|
|
,{9625,sizes_2, _typeSignal}
|
|
,{9621,sizes_2, _typeSignal}
|
|
,{9619,sizes_2, _typeSignal}
|
|
,{9617,sizes_2, _typeSignal}
|
|
,{9579,sizes_2_16, _typeSignal}
|
|
,{9615,sizes_2, _typeSignal}
|
|
,{9611,sizes_4, _typeSignal}
|
|
,{9649,sizes_0, _typeSignal}
|
|
,{9650,sizes_0, _typeSignal}
|
|
,{9651,sizes_0, _typeSignal}
|
|
,{9652,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_93[10] = {
|
|
{9659,sizes_0, _typeSignal}
|
|
,{9661,sizes_0, _typeSignal}
|
|
,{9660,sizes_0, _typeSignal}
|
|
,{9662,sizes_0, _typeSignal}
|
|
,{9653,sizes_0, _typeSignal}
|
|
,{9655,sizes_0, _typeSignal}
|
|
,{9657,sizes_0, _typeSignal}
|
|
,{9654,sizes_0, _typeSignal}
|
|
,{9656,sizes_0, _typeSignal}
|
|
,{9658,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_94[23] = {
|
|
{9739,sizes_2, _typeSignal}
|
|
,{9737,sizes_2, _typeSignal}
|
|
,{9735,sizes_2, _typeSignal}
|
|
,{9731,sizes_2, _typeSignal}
|
|
,{9733,sizes_2, _typeSignal}
|
|
,{9729,sizes_2, _typeSignal}
|
|
,{9727,sizes_2, _typeSignal}
|
|
,{9725,sizes_2, _typeSignal}
|
|
,{9723,sizes_2, _typeSignal}
|
|
,{9721,sizes_2, _typeSignal}
|
|
,{9719,sizes_2, _typeSignal}
|
|
,{9715,sizes_2, _typeSignal}
|
|
,{9717,sizes_2, _typeSignal}
|
|
,{9713,sizes_2, _typeSignal}
|
|
,{9711,sizes_2, _typeSignal}
|
|
,{9709,sizes_2, _typeSignal}
|
|
,{9671,sizes_2_16, _typeSignal}
|
|
,{9707,sizes_2, _typeSignal}
|
|
,{9703,sizes_4, _typeSignal}
|
|
,{9741,sizes_0, _typeSignal}
|
|
,{9742,sizes_0, _typeSignal}
|
|
,{9743,sizes_0, _typeSignal}
|
|
,{9744,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_94[10] = {
|
|
{9751,sizes_0, _typeSignal}
|
|
,{9753,sizes_0, _typeSignal}
|
|
,{9752,sizes_0, _typeSignal}
|
|
,{9754,sizes_0, _typeSignal}
|
|
,{9745,sizes_0, _typeSignal}
|
|
,{9747,sizes_0, _typeSignal}
|
|
,{9749,sizes_0, _typeSignal}
|
|
,{9746,sizes_0, _typeSignal}
|
|
,{9748,sizes_0, _typeSignal}
|
|
,{9750,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_95[23] = {
|
|
{9831,sizes_2, _typeSignal}
|
|
,{9829,sizes_2, _typeSignal}
|
|
,{9827,sizes_2, _typeSignal}
|
|
,{9823,sizes_2, _typeSignal}
|
|
,{9825,sizes_2, _typeSignal}
|
|
,{9821,sizes_2, _typeSignal}
|
|
,{9819,sizes_2, _typeSignal}
|
|
,{9817,sizes_2, _typeSignal}
|
|
,{9815,sizes_2, _typeSignal}
|
|
,{9813,sizes_2, _typeSignal}
|
|
,{9811,sizes_2, _typeSignal}
|
|
,{9807,sizes_2, _typeSignal}
|
|
,{9809,sizes_2, _typeSignal}
|
|
,{9805,sizes_2, _typeSignal}
|
|
,{9803,sizes_2, _typeSignal}
|
|
,{9801,sizes_2, _typeSignal}
|
|
,{9763,sizes_2_16, _typeSignal}
|
|
,{9799,sizes_2, _typeSignal}
|
|
,{9795,sizes_4, _typeSignal}
|
|
,{9833,sizes_0, _typeSignal}
|
|
,{9834,sizes_0, _typeSignal}
|
|
,{9835,sizes_0, _typeSignal}
|
|
,{9836,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_95[10] = {
|
|
{9843,sizes_0, _typeSignal}
|
|
,{9845,sizes_0, _typeSignal}
|
|
,{9844,sizes_0, _typeSignal}
|
|
,{9846,sizes_0, _typeSignal}
|
|
,{9837,sizes_0, _typeSignal}
|
|
,{9839,sizes_0, _typeSignal}
|
|
,{9841,sizes_0, _typeSignal}
|
|
,{9838,sizes_0, _typeSignal}
|
|
,{9840,sizes_0, _typeSignal}
|
|
,{9842,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_96[23] = {
|
|
{9923,sizes_2, _typeSignal}
|
|
,{9921,sizes_2, _typeSignal}
|
|
,{9919,sizes_2, _typeSignal}
|
|
,{9915,sizes_2, _typeSignal}
|
|
,{9917,sizes_2, _typeSignal}
|
|
,{9913,sizes_2, _typeSignal}
|
|
,{9911,sizes_2, _typeSignal}
|
|
,{9909,sizes_2, _typeSignal}
|
|
,{9907,sizes_2, _typeSignal}
|
|
,{9905,sizes_2, _typeSignal}
|
|
,{9903,sizes_2, _typeSignal}
|
|
,{9899,sizes_2, _typeSignal}
|
|
,{9901,sizes_2, _typeSignal}
|
|
,{9897,sizes_2, _typeSignal}
|
|
,{9895,sizes_2, _typeSignal}
|
|
,{9893,sizes_2, _typeSignal}
|
|
,{9855,sizes_2_16, _typeSignal}
|
|
,{9891,sizes_2, _typeSignal}
|
|
,{9887,sizes_4, _typeSignal}
|
|
,{9925,sizes_0, _typeSignal}
|
|
,{9926,sizes_0, _typeSignal}
|
|
,{9927,sizes_0, _typeSignal}
|
|
,{9928,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_96[10] = {
|
|
{9935,sizes_0, _typeSignal}
|
|
,{9937,sizes_0, _typeSignal}
|
|
,{9936,sizes_0, _typeSignal}
|
|
,{9938,sizes_0, _typeSignal}
|
|
,{9929,sizes_0, _typeSignal}
|
|
,{9931,sizes_0, _typeSignal}
|
|
,{9933,sizes_0, _typeSignal}
|
|
,{9930,sizes_0, _typeSignal}
|
|
,{9932,sizes_0, _typeSignal}
|
|
,{9934,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_97[23] = {
|
|
{10015,sizes_2, _typeSignal}
|
|
,{10013,sizes_2, _typeSignal}
|
|
,{10011,sizes_2, _typeSignal}
|
|
,{10007,sizes_2, _typeSignal}
|
|
,{10009,sizes_2, _typeSignal}
|
|
,{10005,sizes_2, _typeSignal}
|
|
,{10003,sizes_2, _typeSignal}
|
|
,{10001,sizes_2, _typeSignal}
|
|
,{9999,sizes_2, _typeSignal}
|
|
,{9997,sizes_2, _typeSignal}
|
|
,{9995,sizes_2, _typeSignal}
|
|
,{9991,sizes_2, _typeSignal}
|
|
,{9993,sizes_2, _typeSignal}
|
|
,{9989,sizes_2, _typeSignal}
|
|
,{9987,sizes_2, _typeSignal}
|
|
,{9985,sizes_2, _typeSignal}
|
|
,{9947,sizes_2_16, _typeSignal}
|
|
,{9983,sizes_2, _typeSignal}
|
|
,{9979,sizes_4, _typeSignal}
|
|
,{10017,sizes_0, _typeSignal}
|
|
,{10018,sizes_0, _typeSignal}
|
|
,{10019,sizes_0, _typeSignal}
|
|
,{10020,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_97[10] = {
|
|
{10027,sizes_0, _typeSignal}
|
|
,{10029,sizes_0, _typeSignal}
|
|
,{10028,sizes_0, _typeSignal}
|
|
,{10030,sizes_0, _typeSignal}
|
|
,{10021,sizes_0, _typeSignal}
|
|
,{10023,sizes_0, _typeSignal}
|
|
,{10025,sizes_0, _typeSignal}
|
|
,{10022,sizes_0, _typeSignal}
|
|
,{10024,sizes_0, _typeSignal}
|
|
,{10026,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_98[23] = {
|
|
{10107,sizes_2, _typeSignal}
|
|
,{10105,sizes_2, _typeSignal}
|
|
,{10103,sizes_2, _typeSignal}
|
|
,{10099,sizes_2, _typeSignal}
|
|
,{10101,sizes_2, _typeSignal}
|
|
,{10097,sizes_2, _typeSignal}
|
|
,{10095,sizes_2, _typeSignal}
|
|
,{10093,sizes_2, _typeSignal}
|
|
,{10091,sizes_2, _typeSignal}
|
|
,{10089,sizes_2, _typeSignal}
|
|
,{10087,sizes_2, _typeSignal}
|
|
,{10083,sizes_2, _typeSignal}
|
|
,{10085,sizes_2, _typeSignal}
|
|
,{10081,sizes_2, _typeSignal}
|
|
,{10079,sizes_2, _typeSignal}
|
|
,{10077,sizes_2, _typeSignal}
|
|
,{10039,sizes_2_16, _typeSignal}
|
|
,{10075,sizes_2, _typeSignal}
|
|
,{10071,sizes_4, _typeSignal}
|
|
,{10109,sizes_0, _typeSignal}
|
|
,{10110,sizes_0, _typeSignal}
|
|
,{10111,sizes_0, _typeSignal}
|
|
,{10112,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_98[10] = {
|
|
{10119,sizes_0, _typeSignal}
|
|
,{10121,sizes_0, _typeSignal}
|
|
,{10120,sizes_0, _typeSignal}
|
|
,{10122,sizes_0, _typeSignal}
|
|
,{10113,sizes_0, _typeSignal}
|
|
,{10115,sizes_0, _typeSignal}
|
|
,{10117,sizes_0, _typeSignal}
|
|
,{10114,sizes_0, _typeSignal}
|
|
,{10116,sizes_0, _typeSignal}
|
|
,{10118,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_99[23] = {
|
|
{10199,sizes_2, _typeSignal}
|
|
,{10197,sizes_2, _typeSignal}
|
|
,{10195,sizes_2, _typeSignal}
|
|
,{10191,sizes_2, _typeSignal}
|
|
,{10193,sizes_2, _typeSignal}
|
|
,{10189,sizes_2, _typeSignal}
|
|
,{10187,sizes_2, _typeSignal}
|
|
,{10185,sizes_2, _typeSignal}
|
|
,{10183,sizes_2, _typeSignal}
|
|
,{10181,sizes_2, _typeSignal}
|
|
,{10179,sizes_2, _typeSignal}
|
|
,{10175,sizes_2, _typeSignal}
|
|
,{10177,sizes_2, _typeSignal}
|
|
,{10173,sizes_2, _typeSignal}
|
|
,{10171,sizes_2, _typeSignal}
|
|
,{10169,sizes_2, _typeSignal}
|
|
,{10131,sizes_2_16, _typeSignal}
|
|
,{10167,sizes_2, _typeSignal}
|
|
,{10163,sizes_4, _typeSignal}
|
|
,{10201,sizes_0, _typeSignal}
|
|
,{10202,sizes_0, _typeSignal}
|
|
,{10203,sizes_0, _typeSignal}
|
|
,{10204,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_99[10] = {
|
|
{10211,sizes_0, _typeSignal}
|
|
,{10213,sizes_0, _typeSignal}
|
|
,{10212,sizes_0, _typeSignal}
|
|
,{10214,sizes_0, _typeSignal}
|
|
,{10205,sizes_0, _typeSignal}
|
|
,{10207,sizes_0, _typeSignal}
|
|
,{10209,sizes_0, _typeSignal}
|
|
,{10206,sizes_0, _typeSignal}
|
|
,{10208,sizes_0, _typeSignal}
|
|
,{10210,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_100[23] = {
|
|
{10291,sizes_2, _typeSignal}
|
|
,{10289,sizes_2, _typeSignal}
|
|
,{10287,sizes_2, _typeSignal}
|
|
,{10283,sizes_2, _typeSignal}
|
|
,{10285,sizes_2, _typeSignal}
|
|
,{10281,sizes_2, _typeSignal}
|
|
,{10279,sizes_2, _typeSignal}
|
|
,{10277,sizes_2, _typeSignal}
|
|
,{10275,sizes_2, _typeSignal}
|
|
,{10273,sizes_2, _typeSignal}
|
|
,{10271,sizes_2, _typeSignal}
|
|
,{10267,sizes_2, _typeSignal}
|
|
,{10269,sizes_2, _typeSignal}
|
|
,{10265,sizes_2, _typeSignal}
|
|
,{10263,sizes_2, _typeSignal}
|
|
,{10261,sizes_2, _typeSignal}
|
|
,{10223,sizes_2_16, _typeSignal}
|
|
,{10259,sizes_2, _typeSignal}
|
|
,{10255,sizes_4, _typeSignal}
|
|
,{10293,sizes_0, _typeSignal}
|
|
,{10294,sizes_0, _typeSignal}
|
|
,{10295,sizes_0, _typeSignal}
|
|
,{10296,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_100[10] = {
|
|
{10303,sizes_0, _typeSignal}
|
|
,{10305,sizes_0, _typeSignal}
|
|
,{10304,sizes_0, _typeSignal}
|
|
,{10306,sizes_0, _typeSignal}
|
|
,{10297,sizes_0, _typeSignal}
|
|
,{10299,sizes_0, _typeSignal}
|
|
,{10301,sizes_0, _typeSignal}
|
|
,{10298,sizes_0, _typeSignal}
|
|
,{10300,sizes_0, _typeSignal}
|
|
,{10302,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_101[23] = {
|
|
{10383,sizes_2, _typeSignal}
|
|
,{10381,sizes_2, _typeSignal}
|
|
,{10379,sizes_2, _typeSignal}
|
|
,{10375,sizes_2, _typeSignal}
|
|
,{10377,sizes_2, _typeSignal}
|
|
,{10373,sizes_2, _typeSignal}
|
|
,{10371,sizes_2, _typeSignal}
|
|
,{10369,sizes_2, _typeSignal}
|
|
,{10367,sizes_2, _typeSignal}
|
|
,{10365,sizes_2, _typeSignal}
|
|
,{10363,sizes_2, _typeSignal}
|
|
,{10359,sizes_2, _typeSignal}
|
|
,{10361,sizes_2, _typeSignal}
|
|
,{10357,sizes_2, _typeSignal}
|
|
,{10355,sizes_2, _typeSignal}
|
|
,{10353,sizes_2, _typeSignal}
|
|
,{10315,sizes_2_16, _typeSignal}
|
|
,{10351,sizes_2, _typeSignal}
|
|
,{10347,sizes_4, _typeSignal}
|
|
,{10385,sizes_0, _typeSignal}
|
|
,{10386,sizes_0, _typeSignal}
|
|
,{10387,sizes_0, _typeSignal}
|
|
,{10388,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_101[10] = {
|
|
{10395,sizes_0, _typeSignal}
|
|
,{10397,sizes_0, _typeSignal}
|
|
,{10396,sizes_0, _typeSignal}
|
|
,{10398,sizes_0, _typeSignal}
|
|
,{10389,sizes_0, _typeSignal}
|
|
,{10391,sizes_0, _typeSignal}
|
|
,{10393,sizes_0, _typeSignal}
|
|
,{10390,sizes_0, _typeSignal}
|
|
,{10392,sizes_0, _typeSignal}
|
|
,{10394,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_102[23] = {
|
|
{10475,sizes_2, _typeSignal}
|
|
,{10473,sizes_2, _typeSignal}
|
|
,{10471,sizes_2, _typeSignal}
|
|
,{10467,sizes_2, _typeSignal}
|
|
,{10469,sizes_2, _typeSignal}
|
|
,{10465,sizes_2, _typeSignal}
|
|
,{10463,sizes_2, _typeSignal}
|
|
,{10461,sizes_2, _typeSignal}
|
|
,{10459,sizes_2, _typeSignal}
|
|
,{10457,sizes_2, _typeSignal}
|
|
,{10455,sizes_2, _typeSignal}
|
|
,{10451,sizes_2, _typeSignal}
|
|
,{10453,sizes_2, _typeSignal}
|
|
,{10449,sizes_2, _typeSignal}
|
|
,{10447,sizes_2, _typeSignal}
|
|
,{10445,sizes_2, _typeSignal}
|
|
,{10407,sizes_2_16, _typeSignal}
|
|
,{10443,sizes_2, _typeSignal}
|
|
,{10439,sizes_4, _typeSignal}
|
|
,{10477,sizes_0, _typeSignal}
|
|
,{10478,sizes_0, _typeSignal}
|
|
,{10479,sizes_0, _typeSignal}
|
|
,{10480,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_102[10] = {
|
|
{10487,sizes_0, _typeSignal}
|
|
,{10489,sizes_0, _typeSignal}
|
|
,{10488,sizes_0, _typeSignal}
|
|
,{10490,sizes_0, _typeSignal}
|
|
,{10481,sizes_0, _typeSignal}
|
|
,{10483,sizes_0, _typeSignal}
|
|
,{10485,sizes_0, _typeSignal}
|
|
,{10482,sizes_0, _typeSignal}
|
|
,{10484,sizes_0, _typeSignal}
|
|
,{10486,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_103[23] = {
|
|
{10567,sizes_2, _typeSignal}
|
|
,{10565,sizes_2, _typeSignal}
|
|
,{10563,sizes_2, _typeSignal}
|
|
,{10559,sizes_2, _typeSignal}
|
|
,{10561,sizes_2, _typeSignal}
|
|
,{10557,sizes_2, _typeSignal}
|
|
,{10555,sizes_2, _typeSignal}
|
|
,{10553,sizes_2, _typeSignal}
|
|
,{10551,sizes_2, _typeSignal}
|
|
,{10549,sizes_2, _typeSignal}
|
|
,{10547,sizes_2, _typeSignal}
|
|
,{10543,sizes_2, _typeSignal}
|
|
,{10545,sizes_2, _typeSignal}
|
|
,{10541,sizes_2, _typeSignal}
|
|
,{10539,sizes_2, _typeSignal}
|
|
,{10537,sizes_2, _typeSignal}
|
|
,{10499,sizes_2_16, _typeSignal}
|
|
,{10535,sizes_2, _typeSignal}
|
|
,{10531,sizes_4, _typeSignal}
|
|
,{10569,sizes_0, _typeSignal}
|
|
,{10570,sizes_0, _typeSignal}
|
|
,{10571,sizes_0, _typeSignal}
|
|
,{10572,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_103[10] = {
|
|
{10579,sizes_0, _typeSignal}
|
|
,{10581,sizes_0, _typeSignal}
|
|
,{10580,sizes_0, _typeSignal}
|
|
,{10582,sizes_0, _typeSignal}
|
|
,{10573,sizes_0, _typeSignal}
|
|
,{10575,sizes_0, _typeSignal}
|
|
,{10577,sizes_0, _typeSignal}
|
|
,{10574,sizes_0, _typeSignal}
|
|
,{10576,sizes_0, _typeSignal}
|
|
,{10578,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_104[23] = {
|
|
{10659,sizes_2, _typeSignal}
|
|
,{10657,sizes_2, _typeSignal}
|
|
,{10655,sizes_2, _typeSignal}
|
|
,{10651,sizes_2, _typeSignal}
|
|
,{10653,sizes_2, _typeSignal}
|
|
,{10649,sizes_2, _typeSignal}
|
|
,{10647,sizes_2, _typeSignal}
|
|
,{10645,sizes_2, _typeSignal}
|
|
,{10643,sizes_2, _typeSignal}
|
|
,{10641,sizes_2, _typeSignal}
|
|
,{10639,sizes_2, _typeSignal}
|
|
,{10635,sizes_2, _typeSignal}
|
|
,{10637,sizes_2, _typeSignal}
|
|
,{10633,sizes_2, _typeSignal}
|
|
,{10631,sizes_2, _typeSignal}
|
|
,{10629,sizes_2, _typeSignal}
|
|
,{10591,sizes_2_16, _typeSignal}
|
|
,{10627,sizes_2, _typeSignal}
|
|
,{10623,sizes_4, _typeSignal}
|
|
,{10661,sizes_0, _typeSignal}
|
|
,{10662,sizes_0, _typeSignal}
|
|
,{10663,sizes_0, _typeSignal}
|
|
,{10664,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_104[10] = {
|
|
{10671,sizes_0, _typeSignal}
|
|
,{10673,sizes_0, _typeSignal}
|
|
,{10672,sizes_0, _typeSignal}
|
|
,{10674,sizes_0, _typeSignal}
|
|
,{10665,sizes_0, _typeSignal}
|
|
,{10667,sizes_0, _typeSignal}
|
|
,{10669,sizes_0, _typeSignal}
|
|
,{10666,sizes_0, _typeSignal}
|
|
,{10668,sizes_0, _typeSignal}
|
|
,{10670,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_105[23] = {
|
|
{10751,sizes_2, _typeSignal}
|
|
,{10749,sizes_2, _typeSignal}
|
|
,{10747,sizes_2, _typeSignal}
|
|
,{10743,sizes_2, _typeSignal}
|
|
,{10745,sizes_2, _typeSignal}
|
|
,{10741,sizes_2, _typeSignal}
|
|
,{10739,sizes_2, _typeSignal}
|
|
,{10737,sizes_2, _typeSignal}
|
|
,{10735,sizes_2, _typeSignal}
|
|
,{10733,sizes_2, _typeSignal}
|
|
,{10731,sizes_2, _typeSignal}
|
|
,{10727,sizes_2, _typeSignal}
|
|
,{10729,sizes_2, _typeSignal}
|
|
,{10725,sizes_2, _typeSignal}
|
|
,{10723,sizes_2, _typeSignal}
|
|
,{10721,sizes_2, _typeSignal}
|
|
,{10683,sizes_2_16, _typeSignal}
|
|
,{10719,sizes_2, _typeSignal}
|
|
,{10715,sizes_4, _typeSignal}
|
|
,{10753,sizes_0, _typeSignal}
|
|
,{10754,sizes_0, _typeSignal}
|
|
,{10755,sizes_0, _typeSignal}
|
|
,{10756,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_105[10] = {
|
|
{10763,sizes_0, _typeSignal}
|
|
,{10765,sizes_0, _typeSignal}
|
|
,{10764,sizes_0, _typeSignal}
|
|
,{10766,sizes_0, _typeSignal}
|
|
,{10757,sizes_0, _typeSignal}
|
|
,{10759,sizes_0, _typeSignal}
|
|
,{10761,sizes_0, _typeSignal}
|
|
,{10758,sizes_0, _typeSignal}
|
|
,{10760,sizes_0, _typeSignal}
|
|
,{10762,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_106[23] = {
|
|
{10843,sizes_2, _typeSignal}
|
|
,{10841,sizes_2, _typeSignal}
|
|
,{10839,sizes_2, _typeSignal}
|
|
,{10835,sizes_2, _typeSignal}
|
|
,{10837,sizes_2, _typeSignal}
|
|
,{10833,sizes_2, _typeSignal}
|
|
,{10831,sizes_2, _typeSignal}
|
|
,{10829,sizes_2, _typeSignal}
|
|
,{10827,sizes_2, _typeSignal}
|
|
,{10825,sizes_2, _typeSignal}
|
|
,{10823,sizes_2, _typeSignal}
|
|
,{10819,sizes_2, _typeSignal}
|
|
,{10821,sizes_2, _typeSignal}
|
|
,{10817,sizes_2, _typeSignal}
|
|
,{10815,sizes_2, _typeSignal}
|
|
,{10813,sizes_2, _typeSignal}
|
|
,{10775,sizes_2_16, _typeSignal}
|
|
,{10811,sizes_2, _typeSignal}
|
|
,{10807,sizes_4, _typeSignal}
|
|
,{10845,sizes_0, _typeSignal}
|
|
,{10846,sizes_0, _typeSignal}
|
|
,{10847,sizes_0, _typeSignal}
|
|
,{10848,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_106[10] = {
|
|
{10855,sizes_0, _typeSignal}
|
|
,{10857,sizes_0, _typeSignal}
|
|
,{10856,sizes_0, _typeSignal}
|
|
,{10858,sizes_0, _typeSignal}
|
|
,{10849,sizes_0, _typeSignal}
|
|
,{10851,sizes_0, _typeSignal}
|
|
,{10853,sizes_0, _typeSignal}
|
|
,{10850,sizes_0, _typeSignal}
|
|
,{10852,sizes_0, _typeSignal}
|
|
,{10854,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_107[23] = {
|
|
{10935,sizes_2, _typeSignal}
|
|
,{10933,sizes_2, _typeSignal}
|
|
,{10931,sizes_2, _typeSignal}
|
|
,{10927,sizes_2, _typeSignal}
|
|
,{10929,sizes_2, _typeSignal}
|
|
,{10925,sizes_2, _typeSignal}
|
|
,{10923,sizes_2, _typeSignal}
|
|
,{10921,sizes_2, _typeSignal}
|
|
,{10919,sizes_2, _typeSignal}
|
|
,{10917,sizes_2, _typeSignal}
|
|
,{10915,sizes_2, _typeSignal}
|
|
,{10911,sizes_2, _typeSignal}
|
|
,{10913,sizes_2, _typeSignal}
|
|
,{10909,sizes_2, _typeSignal}
|
|
,{10907,sizes_2, _typeSignal}
|
|
,{10905,sizes_2, _typeSignal}
|
|
,{10867,sizes_2_16, _typeSignal}
|
|
,{10903,sizes_2, _typeSignal}
|
|
,{10899,sizes_4, _typeSignal}
|
|
,{10937,sizes_0, _typeSignal}
|
|
,{10938,sizes_0, _typeSignal}
|
|
,{10939,sizes_0, _typeSignal}
|
|
,{10940,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_107[10] = {
|
|
{10947,sizes_0, _typeSignal}
|
|
,{10949,sizes_0, _typeSignal}
|
|
,{10948,sizes_0, _typeSignal}
|
|
,{10950,sizes_0, _typeSignal}
|
|
,{10941,sizes_0, _typeSignal}
|
|
,{10943,sizes_0, _typeSignal}
|
|
,{10945,sizes_0, _typeSignal}
|
|
,{10942,sizes_0, _typeSignal}
|
|
,{10944,sizes_0, _typeSignal}
|
|
,{10946,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_108[23] = {
|
|
{11027,sizes_2, _typeSignal}
|
|
,{11025,sizes_2, _typeSignal}
|
|
,{11023,sizes_2, _typeSignal}
|
|
,{11019,sizes_2, _typeSignal}
|
|
,{11021,sizes_2, _typeSignal}
|
|
,{11017,sizes_2, _typeSignal}
|
|
,{11015,sizes_2, _typeSignal}
|
|
,{11013,sizes_2, _typeSignal}
|
|
,{11011,sizes_2, _typeSignal}
|
|
,{11009,sizes_2, _typeSignal}
|
|
,{11007,sizes_2, _typeSignal}
|
|
,{11003,sizes_2, _typeSignal}
|
|
,{11005,sizes_2, _typeSignal}
|
|
,{11001,sizes_2, _typeSignal}
|
|
,{10999,sizes_2, _typeSignal}
|
|
,{10997,sizes_2, _typeSignal}
|
|
,{10959,sizes_2_16, _typeSignal}
|
|
,{10995,sizes_2, _typeSignal}
|
|
,{10991,sizes_4, _typeSignal}
|
|
,{11029,sizes_0, _typeSignal}
|
|
,{11030,sizes_0, _typeSignal}
|
|
,{11031,sizes_0, _typeSignal}
|
|
,{11032,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_108[10] = {
|
|
{11039,sizes_0, _typeSignal}
|
|
,{11041,sizes_0, _typeSignal}
|
|
,{11040,sizes_0, _typeSignal}
|
|
,{11042,sizes_0, _typeSignal}
|
|
,{11033,sizes_0, _typeSignal}
|
|
,{11035,sizes_0, _typeSignal}
|
|
,{11037,sizes_0, _typeSignal}
|
|
,{11034,sizes_0, _typeSignal}
|
|
,{11036,sizes_0, _typeSignal}
|
|
,{11038,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_109[23] = {
|
|
{11119,sizes_2, _typeSignal}
|
|
,{11117,sizes_2, _typeSignal}
|
|
,{11115,sizes_2, _typeSignal}
|
|
,{11111,sizes_2, _typeSignal}
|
|
,{11113,sizes_2, _typeSignal}
|
|
,{11109,sizes_2, _typeSignal}
|
|
,{11107,sizes_2, _typeSignal}
|
|
,{11105,sizes_2, _typeSignal}
|
|
,{11103,sizes_2, _typeSignal}
|
|
,{11101,sizes_2, _typeSignal}
|
|
,{11099,sizes_2, _typeSignal}
|
|
,{11095,sizes_2, _typeSignal}
|
|
,{11097,sizes_2, _typeSignal}
|
|
,{11093,sizes_2, _typeSignal}
|
|
,{11091,sizes_2, _typeSignal}
|
|
,{11089,sizes_2, _typeSignal}
|
|
,{11051,sizes_2_16, _typeSignal}
|
|
,{11087,sizes_2, _typeSignal}
|
|
,{11083,sizes_4, _typeSignal}
|
|
,{11121,sizes_0, _typeSignal}
|
|
,{11122,sizes_0, _typeSignal}
|
|
,{11123,sizes_0, _typeSignal}
|
|
,{11124,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_109[10] = {
|
|
{11131,sizes_0, _typeSignal}
|
|
,{11133,sizes_0, _typeSignal}
|
|
,{11132,sizes_0, _typeSignal}
|
|
,{11134,sizes_0, _typeSignal}
|
|
,{11125,sizes_0, _typeSignal}
|
|
,{11127,sizes_0, _typeSignal}
|
|
,{11129,sizes_0, _typeSignal}
|
|
,{11126,sizes_0, _typeSignal}
|
|
,{11128,sizes_0, _typeSignal}
|
|
,{11130,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_110[23] = {
|
|
{11211,sizes_2, _typeSignal}
|
|
,{11209,sizes_2, _typeSignal}
|
|
,{11207,sizes_2, _typeSignal}
|
|
,{11203,sizes_2, _typeSignal}
|
|
,{11205,sizes_2, _typeSignal}
|
|
,{11201,sizes_2, _typeSignal}
|
|
,{11199,sizes_2, _typeSignal}
|
|
,{11197,sizes_2, _typeSignal}
|
|
,{11195,sizes_2, _typeSignal}
|
|
,{11193,sizes_2, _typeSignal}
|
|
,{11191,sizes_2, _typeSignal}
|
|
,{11187,sizes_2, _typeSignal}
|
|
,{11189,sizes_2, _typeSignal}
|
|
,{11185,sizes_2, _typeSignal}
|
|
,{11183,sizes_2, _typeSignal}
|
|
,{11181,sizes_2, _typeSignal}
|
|
,{11143,sizes_2_16, _typeSignal}
|
|
,{11179,sizes_2, _typeSignal}
|
|
,{11175,sizes_4, _typeSignal}
|
|
,{11213,sizes_0, _typeSignal}
|
|
,{11214,sizes_0, _typeSignal}
|
|
,{11215,sizes_0, _typeSignal}
|
|
,{11216,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_110[10] = {
|
|
{11223,sizes_0, _typeSignal}
|
|
,{11225,sizes_0, _typeSignal}
|
|
,{11224,sizes_0, _typeSignal}
|
|
,{11226,sizes_0, _typeSignal}
|
|
,{11217,sizes_0, _typeSignal}
|
|
,{11219,sizes_0, _typeSignal}
|
|
,{11221,sizes_0, _typeSignal}
|
|
,{11218,sizes_0, _typeSignal}
|
|
,{11220,sizes_0, _typeSignal}
|
|
,{11222,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_111[23] = {
|
|
{11303,sizes_2, _typeSignal}
|
|
,{11301,sizes_2, _typeSignal}
|
|
,{11299,sizes_2, _typeSignal}
|
|
,{11295,sizes_2, _typeSignal}
|
|
,{11297,sizes_2, _typeSignal}
|
|
,{11293,sizes_2, _typeSignal}
|
|
,{11291,sizes_2, _typeSignal}
|
|
,{11289,sizes_2, _typeSignal}
|
|
,{11287,sizes_2, _typeSignal}
|
|
,{11285,sizes_2, _typeSignal}
|
|
,{11283,sizes_2, _typeSignal}
|
|
,{11279,sizes_2, _typeSignal}
|
|
,{11281,sizes_2, _typeSignal}
|
|
,{11277,sizes_2, _typeSignal}
|
|
,{11275,sizes_2, _typeSignal}
|
|
,{11273,sizes_2, _typeSignal}
|
|
,{11235,sizes_2_16, _typeSignal}
|
|
,{11271,sizes_2, _typeSignal}
|
|
,{11267,sizes_4, _typeSignal}
|
|
,{11305,sizes_0, _typeSignal}
|
|
,{11306,sizes_0, _typeSignal}
|
|
,{11307,sizes_0, _typeSignal}
|
|
,{11308,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_111[10] = {
|
|
{11315,sizes_0, _typeSignal}
|
|
,{11317,sizes_0, _typeSignal}
|
|
,{11316,sizes_0, _typeSignal}
|
|
,{11318,sizes_0, _typeSignal}
|
|
,{11309,sizes_0, _typeSignal}
|
|
,{11311,sizes_0, _typeSignal}
|
|
,{11313,sizes_0, _typeSignal}
|
|
,{11310,sizes_0, _typeSignal}
|
|
,{11312,sizes_0, _typeSignal}
|
|
,{11314,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_112[23] = {
|
|
{11395,sizes_2, _typeSignal}
|
|
,{11393,sizes_2, _typeSignal}
|
|
,{11391,sizes_2, _typeSignal}
|
|
,{11387,sizes_2, _typeSignal}
|
|
,{11389,sizes_2, _typeSignal}
|
|
,{11385,sizes_2, _typeSignal}
|
|
,{11383,sizes_2, _typeSignal}
|
|
,{11381,sizes_2, _typeSignal}
|
|
,{11379,sizes_2, _typeSignal}
|
|
,{11377,sizes_2, _typeSignal}
|
|
,{11375,sizes_2, _typeSignal}
|
|
,{11371,sizes_2, _typeSignal}
|
|
,{11373,sizes_2, _typeSignal}
|
|
,{11369,sizes_2, _typeSignal}
|
|
,{11367,sizes_2, _typeSignal}
|
|
,{11365,sizes_2, _typeSignal}
|
|
,{11327,sizes_2_16, _typeSignal}
|
|
,{11363,sizes_2, _typeSignal}
|
|
,{11359,sizes_4, _typeSignal}
|
|
,{11397,sizes_0, _typeSignal}
|
|
,{11398,sizes_0, _typeSignal}
|
|
,{11399,sizes_0, _typeSignal}
|
|
,{11400,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_112[10] = {
|
|
{11407,sizes_0, _typeSignal}
|
|
,{11409,sizes_0, _typeSignal}
|
|
,{11408,sizes_0, _typeSignal}
|
|
,{11410,sizes_0, _typeSignal}
|
|
,{11401,sizes_0, _typeSignal}
|
|
,{11403,sizes_0, _typeSignal}
|
|
,{11405,sizes_0, _typeSignal}
|
|
,{11402,sizes_0, _typeSignal}
|
|
,{11404,sizes_0, _typeSignal}
|
|
,{11406,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_113[23] = {
|
|
{11487,sizes_2, _typeSignal}
|
|
,{11485,sizes_2, _typeSignal}
|
|
,{11483,sizes_2, _typeSignal}
|
|
,{11479,sizes_2, _typeSignal}
|
|
,{11481,sizes_2, _typeSignal}
|
|
,{11477,sizes_2, _typeSignal}
|
|
,{11475,sizes_2, _typeSignal}
|
|
,{11473,sizes_2, _typeSignal}
|
|
,{11471,sizes_2, _typeSignal}
|
|
,{11469,sizes_2, _typeSignal}
|
|
,{11467,sizes_2, _typeSignal}
|
|
,{11463,sizes_2, _typeSignal}
|
|
,{11465,sizes_2, _typeSignal}
|
|
,{11461,sizes_2, _typeSignal}
|
|
,{11459,sizes_2, _typeSignal}
|
|
,{11457,sizes_2, _typeSignal}
|
|
,{11419,sizes_2_16, _typeSignal}
|
|
,{11455,sizes_2, _typeSignal}
|
|
,{11451,sizes_4, _typeSignal}
|
|
,{11489,sizes_0, _typeSignal}
|
|
,{11490,sizes_0, _typeSignal}
|
|
,{11491,sizes_0, _typeSignal}
|
|
,{11492,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_113[10] = {
|
|
{11499,sizes_0, _typeSignal}
|
|
,{11501,sizes_0, _typeSignal}
|
|
,{11500,sizes_0, _typeSignal}
|
|
,{11502,sizes_0, _typeSignal}
|
|
,{11493,sizes_0, _typeSignal}
|
|
,{11495,sizes_0, _typeSignal}
|
|
,{11497,sizes_0, _typeSignal}
|
|
,{11494,sizes_0, _typeSignal}
|
|
,{11496,sizes_0, _typeSignal}
|
|
,{11498,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_114[23] = {
|
|
{11579,sizes_2, _typeSignal}
|
|
,{11577,sizes_2, _typeSignal}
|
|
,{11575,sizes_2, _typeSignal}
|
|
,{11571,sizes_2, _typeSignal}
|
|
,{11573,sizes_2, _typeSignal}
|
|
,{11569,sizes_2, _typeSignal}
|
|
,{11567,sizes_2, _typeSignal}
|
|
,{11565,sizes_2, _typeSignal}
|
|
,{11563,sizes_2, _typeSignal}
|
|
,{11561,sizes_2, _typeSignal}
|
|
,{11559,sizes_2, _typeSignal}
|
|
,{11555,sizes_2, _typeSignal}
|
|
,{11557,sizes_2, _typeSignal}
|
|
,{11553,sizes_2, _typeSignal}
|
|
,{11551,sizes_2, _typeSignal}
|
|
,{11549,sizes_2, _typeSignal}
|
|
,{11511,sizes_2_16, _typeSignal}
|
|
,{11547,sizes_2, _typeSignal}
|
|
,{11543,sizes_4, _typeSignal}
|
|
,{11581,sizes_0, _typeSignal}
|
|
,{11582,sizes_0, _typeSignal}
|
|
,{11583,sizes_0, _typeSignal}
|
|
,{11584,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_114[10] = {
|
|
{11591,sizes_0, _typeSignal}
|
|
,{11593,sizes_0, _typeSignal}
|
|
,{11592,sizes_0, _typeSignal}
|
|
,{11594,sizes_0, _typeSignal}
|
|
,{11585,sizes_0, _typeSignal}
|
|
,{11587,sizes_0, _typeSignal}
|
|
,{11589,sizes_0, _typeSignal}
|
|
,{11586,sizes_0, _typeSignal}
|
|
,{11588,sizes_0, _typeSignal}
|
|
,{11590,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_115[23] = {
|
|
{11671,sizes_2, _typeSignal}
|
|
,{11669,sizes_2, _typeSignal}
|
|
,{11667,sizes_2, _typeSignal}
|
|
,{11663,sizes_2, _typeSignal}
|
|
,{11665,sizes_2, _typeSignal}
|
|
,{11661,sizes_2, _typeSignal}
|
|
,{11659,sizes_2, _typeSignal}
|
|
,{11657,sizes_2, _typeSignal}
|
|
,{11655,sizes_2, _typeSignal}
|
|
,{11653,sizes_2, _typeSignal}
|
|
,{11651,sizes_2, _typeSignal}
|
|
,{11647,sizes_2, _typeSignal}
|
|
,{11649,sizes_2, _typeSignal}
|
|
,{11645,sizes_2, _typeSignal}
|
|
,{11643,sizes_2, _typeSignal}
|
|
,{11641,sizes_2, _typeSignal}
|
|
,{11603,sizes_2_16, _typeSignal}
|
|
,{11639,sizes_2, _typeSignal}
|
|
,{11635,sizes_4, _typeSignal}
|
|
,{11673,sizes_0, _typeSignal}
|
|
,{11674,sizes_0, _typeSignal}
|
|
,{11675,sizes_0, _typeSignal}
|
|
,{11676,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_115[10] = {
|
|
{11683,sizes_0, _typeSignal}
|
|
,{11685,sizes_0, _typeSignal}
|
|
,{11684,sizes_0, _typeSignal}
|
|
,{11686,sizes_0, _typeSignal}
|
|
,{11677,sizes_0, _typeSignal}
|
|
,{11679,sizes_0, _typeSignal}
|
|
,{11681,sizes_0, _typeSignal}
|
|
,{11678,sizes_0, _typeSignal}
|
|
,{11680,sizes_0, _typeSignal}
|
|
,{11682,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_116[23] = {
|
|
{11763,sizes_2, _typeSignal}
|
|
,{11761,sizes_2, _typeSignal}
|
|
,{11759,sizes_2, _typeSignal}
|
|
,{11755,sizes_2, _typeSignal}
|
|
,{11757,sizes_2, _typeSignal}
|
|
,{11753,sizes_2, _typeSignal}
|
|
,{11751,sizes_2, _typeSignal}
|
|
,{11749,sizes_2, _typeSignal}
|
|
,{11747,sizes_2, _typeSignal}
|
|
,{11745,sizes_2, _typeSignal}
|
|
,{11743,sizes_2, _typeSignal}
|
|
,{11739,sizes_2, _typeSignal}
|
|
,{11741,sizes_2, _typeSignal}
|
|
,{11737,sizes_2, _typeSignal}
|
|
,{11735,sizes_2, _typeSignal}
|
|
,{11733,sizes_2, _typeSignal}
|
|
,{11695,sizes_2_16, _typeSignal}
|
|
,{11731,sizes_2, _typeSignal}
|
|
,{11727,sizes_4, _typeSignal}
|
|
,{11765,sizes_0, _typeSignal}
|
|
,{11766,sizes_0, _typeSignal}
|
|
,{11767,sizes_0, _typeSignal}
|
|
,{11768,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_116[10] = {
|
|
{11775,sizes_0, _typeSignal}
|
|
,{11777,sizes_0, _typeSignal}
|
|
,{11776,sizes_0, _typeSignal}
|
|
,{11778,sizes_0, _typeSignal}
|
|
,{11769,sizes_0, _typeSignal}
|
|
,{11771,sizes_0, _typeSignal}
|
|
,{11773,sizes_0, _typeSignal}
|
|
,{11770,sizes_0, _typeSignal}
|
|
,{11772,sizes_0, _typeSignal}
|
|
,{11774,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_117[23] = {
|
|
{11855,sizes_2, _typeSignal}
|
|
,{11853,sizes_2, _typeSignal}
|
|
,{11851,sizes_2, _typeSignal}
|
|
,{11847,sizes_2, _typeSignal}
|
|
,{11849,sizes_2, _typeSignal}
|
|
,{11845,sizes_2, _typeSignal}
|
|
,{11843,sizes_2, _typeSignal}
|
|
,{11841,sizes_2, _typeSignal}
|
|
,{11839,sizes_2, _typeSignal}
|
|
,{11837,sizes_2, _typeSignal}
|
|
,{11835,sizes_2, _typeSignal}
|
|
,{11831,sizes_2, _typeSignal}
|
|
,{11833,sizes_2, _typeSignal}
|
|
,{11829,sizes_2, _typeSignal}
|
|
,{11827,sizes_2, _typeSignal}
|
|
,{11825,sizes_2, _typeSignal}
|
|
,{11787,sizes_2_16, _typeSignal}
|
|
,{11823,sizes_2, _typeSignal}
|
|
,{11819,sizes_4, _typeSignal}
|
|
,{11857,sizes_0, _typeSignal}
|
|
,{11858,sizes_0, _typeSignal}
|
|
,{11859,sizes_0, _typeSignal}
|
|
,{11860,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_117[10] = {
|
|
{11867,sizes_0, _typeSignal}
|
|
,{11869,sizes_0, _typeSignal}
|
|
,{11868,sizes_0, _typeSignal}
|
|
,{11870,sizes_0, _typeSignal}
|
|
,{11861,sizes_0, _typeSignal}
|
|
,{11863,sizes_0, _typeSignal}
|
|
,{11865,sizes_0, _typeSignal}
|
|
,{11862,sizes_0, _typeSignal}
|
|
,{11864,sizes_0, _typeSignal}
|
|
,{11866,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_118[23] = {
|
|
{11947,sizes_2, _typeSignal}
|
|
,{11945,sizes_2, _typeSignal}
|
|
,{11943,sizes_2, _typeSignal}
|
|
,{11939,sizes_2, _typeSignal}
|
|
,{11941,sizes_2, _typeSignal}
|
|
,{11937,sizes_2, _typeSignal}
|
|
,{11935,sizes_2, _typeSignal}
|
|
,{11933,sizes_2, _typeSignal}
|
|
,{11931,sizes_2, _typeSignal}
|
|
,{11929,sizes_2, _typeSignal}
|
|
,{11927,sizes_2, _typeSignal}
|
|
,{11923,sizes_2, _typeSignal}
|
|
,{11925,sizes_2, _typeSignal}
|
|
,{11921,sizes_2, _typeSignal}
|
|
,{11919,sizes_2, _typeSignal}
|
|
,{11917,sizes_2, _typeSignal}
|
|
,{11879,sizes_2_16, _typeSignal}
|
|
,{11915,sizes_2, _typeSignal}
|
|
,{11911,sizes_4, _typeSignal}
|
|
,{11949,sizes_0, _typeSignal}
|
|
,{11950,sizes_0, _typeSignal}
|
|
,{11951,sizes_0, _typeSignal}
|
|
,{11952,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_118[10] = {
|
|
{11959,sizes_0, _typeSignal}
|
|
,{11961,sizes_0, _typeSignal}
|
|
,{11960,sizes_0, _typeSignal}
|
|
,{11962,sizes_0, _typeSignal}
|
|
,{11953,sizes_0, _typeSignal}
|
|
,{11955,sizes_0, _typeSignal}
|
|
,{11957,sizes_0, _typeSignal}
|
|
,{11954,sizes_0, _typeSignal}
|
|
,{11956,sizes_0, _typeSignal}
|
|
,{11958,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_119[23] = {
|
|
{12039,sizes_2, _typeSignal}
|
|
,{12037,sizes_2, _typeSignal}
|
|
,{12035,sizes_2, _typeSignal}
|
|
,{12031,sizes_2, _typeSignal}
|
|
,{12033,sizes_2, _typeSignal}
|
|
,{12029,sizes_2, _typeSignal}
|
|
,{12027,sizes_2, _typeSignal}
|
|
,{12025,sizes_2, _typeSignal}
|
|
,{12023,sizes_2, _typeSignal}
|
|
,{12021,sizes_2, _typeSignal}
|
|
,{12019,sizes_2, _typeSignal}
|
|
,{12015,sizes_2, _typeSignal}
|
|
,{12017,sizes_2, _typeSignal}
|
|
,{12013,sizes_2, _typeSignal}
|
|
,{12011,sizes_2, _typeSignal}
|
|
,{12009,sizes_2, _typeSignal}
|
|
,{11971,sizes_2_16, _typeSignal}
|
|
,{12007,sizes_2, _typeSignal}
|
|
,{12003,sizes_4, _typeSignal}
|
|
,{12041,sizes_0, _typeSignal}
|
|
,{12042,sizes_0, _typeSignal}
|
|
,{12043,sizes_0, _typeSignal}
|
|
,{12044,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_119[10] = {
|
|
{12051,sizes_0, _typeSignal}
|
|
,{12053,sizes_0, _typeSignal}
|
|
,{12052,sizes_0, _typeSignal}
|
|
,{12054,sizes_0, _typeSignal}
|
|
,{12045,sizes_0, _typeSignal}
|
|
,{12047,sizes_0, _typeSignal}
|
|
,{12049,sizes_0, _typeSignal}
|
|
,{12046,sizes_0, _typeSignal}
|
|
,{12048,sizes_0, _typeSignal}
|
|
,{12050,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_120[23] = {
|
|
{12131,sizes_2, _typeSignal}
|
|
,{12129,sizes_2, _typeSignal}
|
|
,{12127,sizes_2, _typeSignal}
|
|
,{12123,sizes_2, _typeSignal}
|
|
,{12125,sizes_2, _typeSignal}
|
|
,{12121,sizes_2, _typeSignal}
|
|
,{12119,sizes_2, _typeSignal}
|
|
,{12117,sizes_2, _typeSignal}
|
|
,{12115,sizes_2, _typeSignal}
|
|
,{12113,sizes_2, _typeSignal}
|
|
,{12111,sizes_2, _typeSignal}
|
|
,{12107,sizes_2, _typeSignal}
|
|
,{12109,sizes_2, _typeSignal}
|
|
,{12105,sizes_2, _typeSignal}
|
|
,{12103,sizes_2, _typeSignal}
|
|
,{12101,sizes_2, _typeSignal}
|
|
,{12063,sizes_2_16, _typeSignal}
|
|
,{12099,sizes_2, _typeSignal}
|
|
,{12095,sizes_4, _typeSignal}
|
|
,{12133,sizes_0, _typeSignal}
|
|
,{12134,sizes_0, _typeSignal}
|
|
,{12135,sizes_0, _typeSignal}
|
|
,{12136,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_120[10] = {
|
|
{12143,sizes_0, _typeSignal}
|
|
,{12145,sizes_0, _typeSignal}
|
|
,{12144,sizes_0, _typeSignal}
|
|
,{12146,sizes_0, _typeSignal}
|
|
,{12137,sizes_0, _typeSignal}
|
|
,{12139,sizes_0, _typeSignal}
|
|
,{12141,sizes_0, _typeSignal}
|
|
,{12138,sizes_0, _typeSignal}
|
|
,{12140,sizes_0, _typeSignal}
|
|
,{12142,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_121[23] = {
|
|
{12223,sizes_2, _typeSignal}
|
|
,{12221,sizes_2, _typeSignal}
|
|
,{12219,sizes_2, _typeSignal}
|
|
,{12215,sizes_2, _typeSignal}
|
|
,{12217,sizes_2, _typeSignal}
|
|
,{12213,sizes_2, _typeSignal}
|
|
,{12211,sizes_2, _typeSignal}
|
|
,{12209,sizes_2, _typeSignal}
|
|
,{12207,sizes_2, _typeSignal}
|
|
,{12205,sizes_2, _typeSignal}
|
|
,{12203,sizes_2, _typeSignal}
|
|
,{12199,sizes_2, _typeSignal}
|
|
,{12201,sizes_2, _typeSignal}
|
|
,{12197,sizes_2, _typeSignal}
|
|
,{12195,sizes_2, _typeSignal}
|
|
,{12193,sizes_2, _typeSignal}
|
|
,{12155,sizes_2_16, _typeSignal}
|
|
,{12191,sizes_2, _typeSignal}
|
|
,{12187,sizes_4, _typeSignal}
|
|
,{12225,sizes_0, _typeSignal}
|
|
,{12226,sizes_0, _typeSignal}
|
|
,{12227,sizes_0, _typeSignal}
|
|
,{12228,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_121[10] = {
|
|
{12235,sizes_0, _typeSignal}
|
|
,{12237,sizes_0, _typeSignal}
|
|
,{12236,sizes_0, _typeSignal}
|
|
,{12238,sizes_0, _typeSignal}
|
|
,{12229,sizes_0, _typeSignal}
|
|
,{12231,sizes_0, _typeSignal}
|
|
,{12233,sizes_0, _typeSignal}
|
|
,{12230,sizes_0, _typeSignal}
|
|
,{12232,sizes_0, _typeSignal}
|
|
,{12234,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_122[23] = {
|
|
{12315,sizes_2, _typeSignal}
|
|
,{12313,sizes_2, _typeSignal}
|
|
,{12311,sizes_2, _typeSignal}
|
|
,{12307,sizes_2, _typeSignal}
|
|
,{12309,sizes_2, _typeSignal}
|
|
,{12305,sizes_2, _typeSignal}
|
|
,{12303,sizes_2, _typeSignal}
|
|
,{12301,sizes_2, _typeSignal}
|
|
,{12299,sizes_2, _typeSignal}
|
|
,{12297,sizes_2, _typeSignal}
|
|
,{12295,sizes_2, _typeSignal}
|
|
,{12291,sizes_2, _typeSignal}
|
|
,{12293,sizes_2, _typeSignal}
|
|
,{12289,sizes_2, _typeSignal}
|
|
,{12287,sizes_2, _typeSignal}
|
|
,{12285,sizes_2, _typeSignal}
|
|
,{12247,sizes_2_16, _typeSignal}
|
|
,{12283,sizes_2, _typeSignal}
|
|
,{12279,sizes_4, _typeSignal}
|
|
,{12317,sizes_0, _typeSignal}
|
|
,{12318,sizes_0, _typeSignal}
|
|
,{12319,sizes_0, _typeSignal}
|
|
,{12320,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_122[10] = {
|
|
{12327,sizes_0, _typeSignal}
|
|
,{12329,sizes_0, _typeSignal}
|
|
,{12328,sizes_0, _typeSignal}
|
|
,{12330,sizes_0, _typeSignal}
|
|
,{12321,sizes_0, _typeSignal}
|
|
,{12323,sizes_0, _typeSignal}
|
|
,{12325,sizes_0, _typeSignal}
|
|
,{12322,sizes_0, _typeSignal}
|
|
,{12324,sizes_0, _typeSignal}
|
|
,{12326,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_123[23] = {
|
|
{12407,sizes_2, _typeSignal}
|
|
,{12405,sizes_2, _typeSignal}
|
|
,{12403,sizes_2, _typeSignal}
|
|
,{12399,sizes_2, _typeSignal}
|
|
,{12401,sizes_2, _typeSignal}
|
|
,{12397,sizes_2, _typeSignal}
|
|
,{12395,sizes_2, _typeSignal}
|
|
,{12393,sizes_2, _typeSignal}
|
|
,{12391,sizes_2, _typeSignal}
|
|
,{12389,sizes_2, _typeSignal}
|
|
,{12387,sizes_2, _typeSignal}
|
|
,{12383,sizes_2, _typeSignal}
|
|
,{12385,sizes_2, _typeSignal}
|
|
,{12381,sizes_2, _typeSignal}
|
|
,{12379,sizes_2, _typeSignal}
|
|
,{12377,sizes_2, _typeSignal}
|
|
,{12339,sizes_2_16, _typeSignal}
|
|
,{12375,sizes_2, _typeSignal}
|
|
,{12371,sizes_4, _typeSignal}
|
|
,{12409,sizes_0, _typeSignal}
|
|
,{12410,sizes_0, _typeSignal}
|
|
,{12411,sizes_0, _typeSignal}
|
|
,{12412,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_123[10] = {
|
|
{12419,sizes_0, _typeSignal}
|
|
,{12421,sizes_0, _typeSignal}
|
|
,{12420,sizes_0, _typeSignal}
|
|
,{12422,sizes_0, _typeSignal}
|
|
,{12413,sizes_0, _typeSignal}
|
|
,{12415,sizes_0, _typeSignal}
|
|
,{12417,sizes_0, _typeSignal}
|
|
,{12414,sizes_0, _typeSignal}
|
|
,{12416,sizes_0, _typeSignal}
|
|
,{12418,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_124[23] = {
|
|
{12499,sizes_2, _typeSignal}
|
|
,{12497,sizes_2, _typeSignal}
|
|
,{12495,sizes_2, _typeSignal}
|
|
,{12491,sizes_2, _typeSignal}
|
|
,{12493,sizes_2, _typeSignal}
|
|
,{12489,sizes_2, _typeSignal}
|
|
,{12487,sizes_2, _typeSignal}
|
|
,{12485,sizes_2, _typeSignal}
|
|
,{12483,sizes_2, _typeSignal}
|
|
,{12481,sizes_2, _typeSignal}
|
|
,{12479,sizes_2, _typeSignal}
|
|
,{12475,sizes_2, _typeSignal}
|
|
,{12477,sizes_2, _typeSignal}
|
|
,{12473,sizes_2, _typeSignal}
|
|
,{12471,sizes_2, _typeSignal}
|
|
,{12469,sizes_2, _typeSignal}
|
|
,{12431,sizes_2_16, _typeSignal}
|
|
,{12467,sizes_2, _typeSignal}
|
|
,{12463,sizes_4, _typeSignal}
|
|
,{12501,sizes_0, _typeSignal}
|
|
,{12502,sizes_0, _typeSignal}
|
|
,{12503,sizes_0, _typeSignal}
|
|
,{12504,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_124[10] = {
|
|
{12511,sizes_0, _typeSignal}
|
|
,{12513,sizes_0, _typeSignal}
|
|
,{12512,sizes_0, _typeSignal}
|
|
,{12514,sizes_0, _typeSignal}
|
|
,{12505,sizes_0, _typeSignal}
|
|
,{12507,sizes_0, _typeSignal}
|
|
,{12509,sizes_0, _typeSignal}
|
|
,{12506,sizes_0, _typeSignal}
|
|
,{12508,sizes_0, _typeSignal}
|
|
,{12510,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableMultiMux4_125[23] = {
|
|
{12591,sizes_2, _typeSignal}
|
|
,{12589,sizes_2, _typeSignal}
|
|
,{12587,sizes_2, _typeSignal}
|
|
,{12583,sizes_2, _typeSignal}
|
|
,{12585,sizes_2, _typeSignal}
|
|
,{12581,sizes_2, _typeSignal}
|
|
,{12579,sizes_2, _typeSignal}
|
|
,{12577,sizes_2, _typeSignal}
|
|
,{12575,sizes_2, _typeSignal}
|
|
,{12573,sizes_2, _typeSignal}
|
|
,{12571,sizes_2, _typeSignal}
|
|
,{12567,sizes_2, _typeSignal}
|
|
,{12569,sizes_2, _typeSignal}
|
|
,{12565,sizes_2, _typeSignal}
|
|
,{12563,sizes_2, _typeSignal}
|
|
,{12561,sizes_2, _typeSignal}
|
|
,{12523,sizes_2_16, _typeSignal}
|
|
,{12559,sizes_2, _typeSignal}
|
|
,{12555,sizes_4, _typeSignal}
|
|
,{12593,sizes_0, _typeSignal}
|
|
,{12594,sizes_0, _typeSignal}
|
|
,{12595,sizes_0, _typeSignal}
|
|
,{12596,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableBabyAdd_125[10] = {
|
|
{12603,sizes_0, _typeSignal}
|
|
,{12605,sizes_0, _typeSignal}
|
|
,{12604,sizes_0, _typeSignal}
|
|
,{12606,sizes_0, _typeSignal}
|
|
,{12597,sizes_0, _typeSignal}
|
|
,{12599,sizes_0, _typeSignal}
|
|
,{12601,sizes_0, _typeSignal}
|
|
,{12598,sizes_0, _typeSignal}
|
|
,{12600,sizes_0, _typeSignal}
|
|
,{12602,sizes_0, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableNum2Bits[2] = {
|
|
{12607,sizes_0, _typeSignal}
|
|
,{12608,sizes_250, _typeSignal}
|
|
};
|
|
|
|
Circom_ComponentEntry _entryTableNum2Bits_1[2] = {
|
|
{12858,sizes_0, _typeSignal}
|
|
,{12859,sizes_250, _typeSignal}
|
|
};
|
|
|
|
|
|
|
|
// Functions
|
|
|
|
/*
|
|
Main
|
|
*/
|
|
void Main_49e763aed00877a8(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
Circom_Sizes _compSizes;
|
|
int _offset;
|
|
int _sigIdx;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_1;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
int _compIdx_1;
|
|
Circom_Sizes _compSizes_1;
|
|
int _offset_2;
|
|
int _sigIdx_2;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_3;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_2;
|
|
int _offset_7;
|
|
int _compIdx_3;
|
|
Circom_Sizes _compSizes_2;
|
|
int _offset_8;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_3;
|
|
int _offset_10;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_4;
|
|
int _offset_12;
|
|
int _compIdx_5;
|
|
Circom_Sizes _compSizes_3;
|
|
int _offset_13;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_5;
|
|
int _offset_15;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_6;
|
|
int _sigIdx_8;
|
|
Circom_Sizes _sigSizes_6;
|
|
PBigInt _v_7;
|
|
int _offset_20;
|
|
int _compIdx_7;
|
|
Circom_Sizes _compSizes_4;
|
|
int _offset_21;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
PBigInt _v_8;
|
|
int _offset_23;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_10;
|
|
Circom_Sizes _sigSizes_8;
|
|
PBigInt _v_9;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "250", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
int _offset_25;
|
|
int _compIdx_9;
|
|
Circom_Sizes _compSizes_5;
|
|
int _offset_26;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_9;
|
|
PBigInt _v_10;
|
|
int _offset_28;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
PBigInt _v_12;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "250", 10);
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_12;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_32;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_33;
|
|
int _compIdx_11;
|
|
int _sigIdx_14;
|
|
Circom_Sizes _sigSizes_12;
|
|
int _offset_34;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_13;
|
|
int _offset_35;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* component pedersen = Pedersen(250*2) */
|
|
|
|
/* component n2b[2] */
|
|
|
|
/* n2b[0] = Num2Bits(250) */
|
|
|
|
/* n2b[1] = Num2Bits(250) */
|
|
|
|
/* var i */
|
|
|
|
/* in[0] ==> n2b[0].in */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset = _compIdx + 0*_compSizes[1];
|
|
_sigIdx = ctx->getSignalOffset(_offset, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_1 = _sigIdx_1 + 0*_sigSizes[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_1, _sigValue);
|
|
ctx->setSignal(_offset, _sigIdx, _sigValue);
|
|
|
|
/* in[1] ==> n2b[1].in */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset_2 = _compIdx_1 + 1*_compSizes_1[1];
|
|
_sigIdx_2 = ctx->getSignalOffset(_offset_2, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_3 = _sigIdx_3 + 1*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1);
|
|
ctx->setSignal(_offset_2, _sigIdx_2, _sigValue_1);
|
|
|
|
/* for (i=0,i<250,i++) */
|
|
|
|
/* n2b[0].out[i] ==> pedersen.in[i] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_2, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_7 = _sigIdx_4 + 0*_sigSizes_2[1];
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset_8 = _compIdx_3 + 0*_compSizes_2[1];
|
|
_sigIdx_5 = ctx->getSignalOffset(_offset_8, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_3 = ctx->getSignalSizes(_offset_8, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_10 = _sigIdx_5 + 0*_sigSizes_3[1];
|
|
ctx->getSignal(_offset_8, _offset_10, _sigValue_2);
|
|
ctx->setSignal(_compIdx_2, _offset_7, _sigValue_2);
|
|
|
|
/* n2b[1].out[i] ==> pedersen.in[250+i] */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_4, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_12 = _sigIdx_6 + 250*_sigSizes_4[1];
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset_13 = _compIdx_5 + 1*_compSizes_3[1];
|
|
_sigIdx_7 = ctx->getSignalOffset(_offset_13, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_offset_13, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_15 = _sigIdx_7 + 0*_sigSizes_5[1];
|
|
ctx->getSignal(_offset_13, _offset_15, _sigValue_3);
|
|
ctx->setSignal(_compIdx_4, _offset_12, _sigValue_3);
|
|
mpz_set_str(_tmp_3[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_3);
|
|
while (_cond) {
|
|
|
|
/* n2b[0].out[i] ==> pedersen.in[i] */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_6, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(_compIdx_6, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_7 = i + 0;
|
|
_offset_20 = _sigIdx_8 + ctx->field->toInt(_v_7)*_sigSizes_6[1];
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset_21 = _compIdx_7 + 0*_compSizes_4[1];
|
|
_sigIdx_9 = ctx->getSignalOffset(_offset_21, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_7 = ctx->getSignalSizes(_offset_21, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_8 = i + 0;
|
|
_offset_23 = _sigIdx_9 + ctx->field->toInt(_v_8)*_sigSizes_7[1];
|
|
ctx->getSignal(_offset_21, _offset_23, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _offset_20, _sigValue_4);
|
|
|
|
/* n2b[1].out[i] ==> pedersen.in[250+i] */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_8, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_8, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_4,_const,_v_9);
|
|
_offset_25 = _sigIdx_10 + ctx->field->toInt(_tmp_4)*_sigSizes_8[1];
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */);
|
|
_offset_26 = _compIdx_9 + 1*_compSizes_5[1];
|
|
_sigIdx_11 = ctx->getSignalOffset(_offset_26, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_offset_26, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_10 = i + 0;
|
|
_offset_28 = _sigIdx_11 + ctx->field->toInt(_v_10)*_sigSizes_9[1];
|
|
ctx->getSignal(_offset_26, _offset_28, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _offset_25, _sigValue_5);
|
|
_v_11 = i + 0;
|
|
ctx->field->add(_tmp_5, _v_11, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_5, 1);
|
|
_v_12 = i + 0;
|
|
ctx->field->lt(_tmp_6,_v_12,_const_1);
|
|
_cond = ctx->field->isTrue(_tmp_6);
|
|
}
|
|
|
|
/* pedersen.out[0] ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_10, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(_compIdx_10, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_32 = _sigIdx_12 + 0*_sigSizes_10[1];
|
|
ctx->getSignal(_compIdx_10, _offset_32, _sigValue_6);
|
|
_sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_33 = _sigIdx_13 + 0*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_33, _sigValue_6);
|
|
|
|
/* pedersen.out[1] ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_12 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_14 + 1*_sigSizes_12[1];
|
|
ctx->getSignal(_compIdx_11, _offset_34, _sigValue_7);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_15 + 1*_sigSizes_13[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_35, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
Pedersen
|
|
n=500
|
|
*/
|
|
void Pedersen_e89189a40b66818b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
Circom_Sizes _compSizes;
|
|
int _offset_16;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_18;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_21;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_13 = ctx->allocBigInts(1);
|
|
PBigInt j = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
Circom_Sizes _compSizes_1;
|
|
int _offset_27;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_17;
|
|
int _offset_29;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_19;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "0", 10);
|
|
PBigInt _tmp_15 = ctx->allocBigInts(1);
|
|
int _offset_32;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_20;
|
|
PBigInt _tmp_16 = ctx->allocBigInts(1);
|
|
PBigInt _v_21;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "250", 10);
|
|
PBigInt _tmp_17 = ctx->allocBigInts(1);
|
|
int _compIdx_2;
|
|
Circom_Sizes _compSizes_2;
|
|
int _offset_39;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
int _offset_40;
|
|
PBigInt _num_33 = ctx->allocBigInts(1);
|
|
int _compIdx_3;
|
|
Circom_Sizes _compSizes_3;
|
|
int _offset_42;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
int _offset_43;
|
|
PBigInt _num_35 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_20 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
PBigInt nexpbits = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
PBigInt _v_29;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "1", 10);
|
|
PBigInt _tmp_22 = ctx->allocBigInts(1);
|
|
PBigInt _ter;
|
|
PBigInt _v_31 = ctx->allocBigInts(1);
|
|
PBigInt _num_37 = ctx->allocBigInts(1);
|
|
PBigInt _num_38 = ctx->allocBigInts(1);
|
|
PBigInt _v_32;
|
|
PBigInt _v_33;
|
|
PBigInt _tmp_23 = ctx->allocBigInts(1);
|
|
int _cond_2;
|
|
int _compIdx_4;
|
|
Circom_Sizes _compSizes_4;
|
|
PBigInt _v_34;
|
|
int _offset_56;
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_6;
|
|
PBigInt _v_35;
|
|
int _offset_58;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_7;
|
|
PBigInt _v_36;
|
|
PBigInt _const_3;
|
|
_const_3 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_3[0], "250", 10);
|
|
PBigInt _tmp_24 = ctx->allocBigInts(1);
|
|
PBigInt _v_37;
|
|
PBigInt _tmp_25 = ctx->allocBigInts(1);
|
|
int _offset_61;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
PBigInt _v_38;
|
|
PBigInt _tmp_26 = ctx->allocBigInts(1);
|
|
PBigInt _v_39;
|
|
PBigInt _v_40;
|
|
PBigInt _tmp_27 = ctx->allocBigInts(1);
|
|
PBigInt _v_41;
|
|
PBigInt _const_4;
|
|
_const_4 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_4[0], "0", 10);
|
|
PBigInt _tmp_28 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
Circom_Sizes _compSizes_5;
|
|
PBigInt _v_42;
|
|
int _offset_68;
|
|
int _sigIdx_8;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_69;
|
|
PBigInt _num_42 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
Circom_Sizes _compSizes_6;
|
|
PBigInt _v_43;
|
|
int _offset_71;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_72;
|
|
PBigInt _num_44 = ctx->allocBigInts(1);
|
|
int _compIdx_7;
|
|
Circom_Sizes _compSizes_7;
|
|
PBigInt _v_44;
|
|
int _offset_74;
|
|
int _sigIdx_10;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_75;
|
|
int _compIdx_8;
|
|
Circom_Sizes _compSizes_8;
|
|
PBigInt _v_45;
|
|
PBigInt _const_5;
|
|
_const_5 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_5[0], "1", 10);
|
|
PBigInt _tmp_29 = ctx->allocBigInts(1);
|
|
int _offset_77;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_78;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_9;
|
|
Circom_Sizes _compSizes_9;
|
|
PBigInt _v_46;
|
|
int _offset_80;
|
|
int _sigIdx_12;
|
|
Circom_Sizes _sigSizes_12;
|
|
int _offset_81;
|
|
int _compIdx_10;
|
|
Circom_Sizes _compSizes_10;
|
|
PBigInt _v_47;
|
|
PBigInt _const_6;
|
|
_const_6 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_6[0], "1", 10);
|
|
PBigInt _tmp_30 = ctx->allocBigInts(1);
|
|
int _offset_83;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_13;
|
|
int _offset_84;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_48;
|
|
PBigInt _tmp_31 = ctx->allocBigInts(1);
|
|
PBigInt _v_49;
|
|
PBigInt _const_7;
|
|
_const_7 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_7[0], "2", 10);
|
|
PBigInt _tmp_32 = ctx->allocBigInts(1);
|
|
int _compIdx_11;
|
|
Circom_Sizes _compSizes_11;
|
|
int _offset_90;
|
|
int _sigIdx_14;
|
|
Circom_Sizes _sigSizes_14;
|
|
int _offset_91;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_15;
|
|
int _offset_92;
|
|
int _compIdx_12;
|
|
Circom_Sizes _compSizes_12;
|
|
int _offset_94;
|
|
int _sigIdx_16;
|
|
Circom_Sizes _sigSizes_16;
|
|
int _offset_95;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_17;
|
|
int _offset_96;
|
|
|
|
|
|
/* signal input in[n] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var nexps = ((n-1) \ 250) + 1 */
|
|
|
|
/* var nlastbits = n - (nexps-1)*250 */
|
|
|
|
/* component escalarMuls[nexps] */
|
|
|
|
/* var PBASE = [
|
|
[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317],
|
|
[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094],
|
|
[5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896],
|
|
[7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654],
|
|
[20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506],
|
|
[1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003],
|
|
[14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236],
|
|
[6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695],
|
|
[3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506],
|
|
[18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481]
|
|
] */
|
|
|
|
/* var i */
|
|
|
|
/* var j */
|
|
|
|
/* var nexpbits */
|
|
|
|
/* for (i=0,i<nexps,i++) */
|
|
|
|
/* nexpbits = (i == nexps-1) ? nlastbits : 250 */
|
|
|
|
/* escalarMuls[i] = EscalarMul(nexpbits, PBASE[i]) */
|
|
|
|
/* for (j=0,j<nexpbits,j++) */
|
|
|
|
/* escalarMuls[i].in[j] <== in[250*i + j] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_16 = _compIdx + 0*_compSizes[1];
|
|
_sigIdx = ctx->getSignalOffset(_offset_16, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes = ctx->getSignalSizes(_offset_16, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_18 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_21 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_21, _sigValue);
|
|
ctx->setSignal(_offset_16, _offset_18, _sigValue);
|
|
mpz_set_str(_tmp_13[0], "1", 10);
|
|
mpz_set_str(j[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_13);
|
|
while (_cond) {
|
|
|
|
/* escalarMuls[i].in[j] <== in[250*i + j] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_27 = _compIdx_1 + 0*_compSizes_1[1];
|
|
_sigIdx_2 = ctx->getSignalOffset(_offset_27, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_offset_27, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_17 = j + 0;
|
|
_offset_29 = _sigIdx_2 + ctx->field->toInt(_v_17)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_19 = j + 0;
|
|
ctx->field->add(_tmp_15,_const,_v_19);
|
|
_offset_32 = _sigIdx_3 + ctx->field->toInt(_tmp_15)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_1);
|
|
ctx->setSignal(_offset_27, _offset_29, _sigValue_1);
|
|
_v_20 = j + 0;
|
|
ctx->field->add(_tmp_16, _v_20, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_16, 1);
|
|
_v_21 = j + 0;
|
|
ctx->field->lt(_tmp_17,_v_21,_const_1);
|
|
_cond = ctx->field->isTrue(_tmp_17);
|
|
}
|
|
|
|
/* if (i==0) */
|
|
|
|
/* escalarMuls[i].inp[0] <== 0 */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_39 = _compIdx_2 + 0*_compSizes_2[1];
|
|
_sigIdx_4 = ctx->getSignalOffset(_offset_39, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_offset_39, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_40 = _sigIdx_4 + 0*_sigSizes_4[1];
|
|
mpz_set_str(_num_33[0], "0", 10);
|
|
ctx->setSignal(_offset_39, _offset_40, _num_33);
|
|
|
|
/* escalarMuls[i].inp[1] <== 1 */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_42 = _compIdx_3 + 0*_compSizes_3[1];
|
|
_sigIdx_5 = ctx->getSignalOffset(_offset_42, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_offset_42, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_43 = _sigIdx_5 + 1*_sigSizes_5[1];
|
|
mpz_set_str(_num_35[0], "1", 10);
|
|
ctx->setSignal(_offset_42, _offset_43, _num_35);
|
|
mpz_set_str(_tmp_20[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
mpz_set_str(nexpbits[0], "250", 10);
|
|
_cond_1 = ctx->field->isTrue(_tmp_20);
|
|
while (_cond_1) {
|
|
|
|
/* nexpbits = (i == nexps-1) ? nlastbits : 250 */
|
|
_v_29 = i + 0;
|
|
ctx->field->eq(_tmp_22,_v_29,_const_2);
|
|
if (ctx->field->isTrue(_tmp_22)) {
|
|
mpz_set_str(_v_31[0], "250", 10);
|
|
_ter = _v_31;
|
|
} else {
|
|
mpz_set_str(_num_37[0], "250", 10);
|
|
_ter = _num_37;
|
|
}
|
|
ctx->field->copyn(nexpbits, _ter, 1);
|
|
|
|
/* escalarMuls[i] = EscalarMul(nexpbits, PBASE[i]) */
|
|
|
|
/* for (j=0,j<nexpbits,j++) */
|
|
mpz_set_str(_num_38[0], "0", 10);
|
|
ctx->field->copyn(j, _num_38, 1);
|
|
_v_32 = j + 0;
|
|
_v_33 = nexpbits + 0;
|
|
ctx->field->lt(_tmp_23,_v_32,_v_33);
|
|
_cond_2 = ctx->field->isTrue(_tmp_23);
|
|
while (_cond_2) {
|
|
|
|
/* escalarMuls[i].in[j] <== in[250*i + j] */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_34 = i + 0;
|
|
_offset_56 = _compIdx_4 + ctx->field->toInt(_v_34)*_compSizes_4[1];
|
|
_sigIdx_6 = ctx->getSignalOffset(_offset_56, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(_offset_56, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_35 = j + 0;
|
|
_offset_58 = _sigIdx_6 + ctx->field->toInt(_v_35)*_sigSizes_6[1];
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_36 = i + 0;
|
|
ctx->field->mul(_tmp_24,_const_3,_v_36);
|
|
_v_37 = j + 0;
|
|
ctx->field->add(_tmp_25,_tmp_24,_v_37);
|
|
_offset_61 = _sigIdx_7 + ctx->field->toInt(_tmp_25)*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_61, _sigValue_2);
|
|
ctx->setSignal(_offset_56, _offset_58, _sigValue_2);
|
|
_v_38 = j + 0;
|
|
ctx->field->add(_tmp_26, _v_38, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_26, 1);
|
|
_v_39 = j + 0;
|
|
_v_40 = nexpbits + 0;
|
|
ctx->field->lt(_tmp_27,_v_39,_v_40);
|
|
_cond_2 = ctx->field->isTrue(_tmp_27);
|
|
}
|
|
|
|
/* if (i==0) */
|
|
_v_41 = i + 0;
|
|
ctx->field->eq(_tmp_28,_v_41,_const_4);
|
|
if (ctx->field->isTrue(_tmp_28)) {
|
|
|
|
/* escalarMuls[i].inp[0] <== 0 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_42 = i + 0;
|
|
_offset_68 = _compIdx_5 + ctx->field->toInt(_v_42)*_compSizes_5[1];
|
|
_sigIdx_8 = ctx->getSignalOffset(_offset_68, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_offset_68, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_69 = _sigIdx_8 + 0*_sigSizes_8[1];
|
|
mpz_set_str(_num_42[0], "0", 10);
|
|
ctx->setSignal(_offset_68, _offset_69, _num_42);
|
|
|
|
/* escalarMuls[i].inp[1] <== 1 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_43 = i + 0;
|
|
_offset_71 = _compIdx_6 + ctx->field->toInt(_v_43)*_compSizes_6[1];
|
|
_sigIdx_9 = ctx->getSignalOffset(_offset_71, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_offset_71, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_72 = _sigIdx_9 + 1*_sigSizes_9[1];
|
|
mpz_set_str(_num_44[0], "1", 10);
|
|
ctx->setSignal(_offset_71, _offset_72, _num_44);
|
|
} else {
|
|
|
|
/* escalarMuls[i].inp[0] <== escalarMuls[i-1].out[0] */
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_44 = i + 0;
|
|
_offset_74 = _compIdx_7 + ctx->field->toInt(_v_44)*_compSizes_7[1];
|
|
_sigIdx_10 = ctx->getSignalOffset(_offset_74, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_10 = ctx->getSignalSizes(_offset_74, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_75 = _sigIdx_10 + 0*_sigSizes_10[1];
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_45 = i + 0;
|
|
ctx->field->sub(_tmp_29,_v_45,_const_5);
|
|
_offset_77 = _compIdx_8 + ctx->field->toInt(_tmp_29)*_compSizes_8[1];
|
|
_sigIdx_11 = ctx->getSignalOffset(_offset_77, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(_offset_77, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_78 = _sigIdx_11 + 0*_sigSizes_11[1];
|
|
ctx->getSignal(_offset_77, _offset_78, _sigValue_3);
|
|
ctx->setSignal(_offset_74, _offset_75, _sigValue_3);
|
|
|
|
/* escalarMuls[i].inp[1] <== escalarMuls[i-1].out[1] */
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_46 = i + 0;
|
|
_offset_80 = _compIdx_9 + ctx->field->toInt(_v_46)*_compSizes_9[1];
|
|
_sigIdx_12 = ctx->getSignalOffset(_offset_80, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_12 = ctx->getSignalSizes(_offset_80, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_81 = _sigIdx_12 + 1*_sigSizes_12[1];
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_v_47 = i + 0;
|
|
ctx->field->sub(_tmp_30,_v_47,_const_6);
|
|
_offset_83 = _compIdx_10 + ctx->field->toInt(_tmp_30)*_compSizes_10[1];
|
|
_sigIdx_13 = ctx->getSignalOffset(_offset_83, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_13 = ctx->getSignalSizes(_offset_83, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_84 = _sigIdx_13 + 1*_sigSizes_13[1];
|
|
ctx->getSignal(_offset_83, _offset_84, _sigValue_4);
|
|
ctx->setSignal(_offset_80, _offset_81, _sigValue_4);
|
|
}
|
|
_v_48 = i + 0;
|
|
ctx->field->add(_tmp_31, _v_48, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_31, 1);
|
|
_v_49 = i + 0;
|
|
ctx->field->lt(_tmp_32,_v_49,_const_7);
|
|
_cond_1 = ctx->field->isTrue(_tmp_32);
|
|
}
|
|
|
|
/* escalarMuls[nexps-1].out[0] ==> out[0] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_90 = _compIdx_11 + 1*_compSizes_11[1];
|
|
_sigIdx_14 = ctx->getSignalOffset(_offset_90, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_14 = ctx->getSignalSizes(_offset_90, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_91 = _sigIdx_14 + 0*_sigSizes_14[1];
|
|
ctx->getSignal(_offset_90, _offset_91, _sigValue_5);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_92 = _sigIdx_15 + 0*_sigSizes_15[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_92, _sigValue_5);
|
|
|
|
/* escalarMuls[nexps-1].out[1] ==> out[1] */
|
|
_compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */);
|
|
_offset_94 = _compIdx_12 + 1*_compSizes_12[1];
|
|
_sigIdx_16 = ctx->getSignalOffset(_offset_94, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_16 = ctx->getSignalSizes(_offset_94, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_95 = _sigIdx_16 + 1*_sigSizes_16[1];
|
|
ctx->getSignal(_offset_94, _offset_95, _sigValue_6);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_96 = _sigIdx_17 + 1*_sigSizes_17[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_96, _sigValue_6);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_13, 1);
|
|
ctx->freeBigInts(j, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_15, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_16, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_17, 1);
|
|
ctx->freeBigInts(_num_33, 1);
|
|
ctx->freeBigInts(_num_35, 1);
|
|
ctx->freeBigInts(_tmp_20, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(nexpbits, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_22, 1);
|
|
ctx->freeBigInts(_v_31, 1);
|
|
ctx->freeBigInts(_num_37, 1);
|
|
ctx->freeBigInts(_num_38, 1);
|
|
ctx->freeBigInts(_tmp_23, 1);
|
|
ctx->freeBigInts(_const_3, 1);
|
|
ctx->freeBigInts(_tmp_24, 1);
|
|
ctx->freeBigInts(_tmp_25, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_tmp_26, 1);
|
|
ctx->freeBigInts(_tmp_27, 1);
|
|
ctx->freeBigInts(_const_4, 1);
|
|
ctx->freeBigInts(_tmp_28, 1);
|
|
ctx->freeBigInts(_num_42, 1);
|
|
ctx->freeBigInts(_num_44, 1);
|
|
ctx->freeBigInts(_const_5, 1);
|
|
ctx->freeBigInts(_tmp_29, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_const_6, 1);
|
|
ctx->freeBigInts(_tmp_30, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_tmp_31, 1);
|
|
ctx->freeBigInts(_const_7, 1);
|
|
ctx->freeBigInts(_tmp_32, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMul
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
inp[0]=0
|
|
inp[1]=0
|
|
n=250
|
|
*/
|
|
void EscalarMul_f29b0428f5d364a5(Circom_CalcWit *ctx) {
|
|
// Header
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
int _compIdx;
|
|
Circom_Sizes _compSizes;
|
|
int _offset_266;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_268;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_271;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_138 = ctx->allocBigInts(1);
|
|
PBigInt j = ctx->allocBigInts(1);
|
|
int _cond;
|
|
PBigInt _v_205;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "0", 10);
|
|
PBigInt _tmp_140 = ctx->allocBigInts(1);
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "250", 10);
|
|
PBigInt _tmp_141 = ctx->allocBigInts(1);
|
|
int _compIdx_1;
|
|
Circom_Sizes _compSizes_1;
|
|
int _offset_279;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_208;
|
|
int _offset_281;
|
|
PBigInt _num_12 = ctx->allocBigInts(1);
|
|
int _compIdx_2;
|
|
Circom_Sizes _compSizes_2;
|
|
int _offset_283;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_210;
|
|
int _offset_285;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_212;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "0", 10);
|
|
PBigInt _tmp_143 = ctx->allocBigInts(1);
|
|
int _offset_288;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_213;
|
|
PBigInt _tmp_144 = ctx->allocBigInts(1);
|
|
PBigInt _v_214;
|
|
PBigInt _const_3;
|
|
_const_3 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_3[0], "4", 10);
|
|
PBigInt _tmp_145 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_147 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
PBigInt _num_15 = ctx->allocBigInts(1);
|
|
PBigInt _v_218;
|
|
PBigInt _const_4;
|
|
_const_4 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_4[0], "4", 10);
|
|
PBigInt _tmp_148 = ctx->allocBigInts(1);
|
|
int _cond_2;
|
|
PBigInt _v_219;
|
|
PBigInt _const_5;
|
|
_const_5 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_5[0], "4", 10);
|
|
PBigInt _tmp_149 = ctx->allocBigInts(1);
|
|
PBigInt _v_220;
|
|
PBigInt _tmp_150 = ctx->allocBigInts(1);
|
|
PBigInt _const_6;
|
|
_const_6 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_6[0], "250", 10);
|
|
PBigInt _tmp_151 = ctx->allocBigInts(1);
|
|
int _compIdx_3;
|
|
Circom_Sizes _compSizes_3;
|
|
PBigInt _v_222;
|
|
int _offset_302;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_223;
|
|
int _offset_304;
|
|
PBigInt _num_18 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
Circom_Sizes _compSizes_4;
|
|
PBigInt _v_224;
|
|
int _offset_306;
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_6;
|
|
PBigInt _v_225;
|
|
int _offset_308;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_7;
|
|
PBigInt _v_226;
|
|
PBigInt _const_7;
|
|
_const_7 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_7[0], "4", 10);
|
|
PBigInt _tmp_152 = ctx->allocBigInts(1);
|
|
PBigInt _v_227;
|
|
PBigInt _tmp_153 = ctx->allocBigInts(1);
|
|
int _offset_311;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
PBigInt _v_228;
|
|
PBigInt _tmp_154 = ctx->allocBigInts(1);
|
|
PBigInt _v_229;
|
|
PBigInt _const_8;
|
|
_const_8 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_8[0], "4", 10);
|
|
PBigInt _tmp_155 = ctx->allocBigInts(1);
|
|
PBigInt _v_230;
|
|
PBigInt _tmp_156 = ctx->allocBigInts(1);
|
|
PBigInt _v_231;
|
|
PBigInt _const_9;
|
|
_const_9 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_9[0], "63", 10);
|
|
PBigInt _tmp_157 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
Circom_Sizes _compSizes_5;
|
|
int _offset_319;
|
|
int _sigIdx_8;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_320;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_321;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
Circom_Sizes _compSizes_6;
|
|
int _offset_322;
|
|
int _sigIdx_10;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_323;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_324;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_27 = ctx->allocBigInts(1);
|
|
PBigInt _v_233;
|
|
PBigInt _const_10;
|
|
_const_10 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_10[0], "62", 10);
|
|
PBigInt _tmp_159 = ctx->allocBigInts(1);
|
|
int _cond_3;
|
|
int _compIdx_7;
|
|
Circom_Sizes _compSizes_7;
|
|
PBigInt _v_235;
|
|
PBigInt _const_11;
|
|
_const_11 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_11[0], "1", 10);
|
|
PBigInt _tmp_160 = ctx->allocBigInts(1);
|
|
int _offset_329;
|
|
int _sigIdx_12;
|
|
Circom_Sizes _sigSizes_12;
|
|
int _offset_330;
|
|
int _compIdx_8;
|
|
Circom_Sizes _compSizes_8;
|
|
PBigInt _v_236;
|
|
int _offset_332;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_13;
|
|
int _offset_333;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_9;
|
|
Circom_Sizes _compSizes_9;
|
|
PBigInt _v_237;
|
|
PBigInt _const_12;
|
|
_const_12 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_12[0], "1", 10);
|
|
PBigInt _tmp_161 = ctx->allocBigInts(1);
|
|
int _offset_335;
|
|
int _sigIdx_14;
|
|
Circom_Sizes _sigSizes_14;
|
|
int _offset_336;
|
|
int _compIdx_10;
|
|
Circom_Sizes _compSizes_10;
|
|
PBigInt _v_238;
|
|
int _offset_338;
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_15;
|
|
int _offset_339;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_239;
|
|
PBigInt _tmp_162 = ctx->allocBigInts(1);
|
|
PBigInt _v_240;
|
|
PBigInt _const_13;
|
|
_const_13 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_13[0], "62", 10);
|
|
PBigInt _tmp_164 = ctx->allocBigInts(1);
|
|
int _compIdx_11;
|
|
Circom_Sizes _compSizes_11;
|
|
int _offset_345;
|
|
int _sigIdx_16;
|
|
Circom_Sizes _sigSizes_16;
|
|
int _offset_346;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_17;
|
|
int _offset_347;
|
|
int _compIdx_12;
|
|
Circom_Sizes _compSizes_12;
|
|
int _offset_349;
|
|
int _sigIdx_18;
|
|
Circom_Sizes _sigSizes_18;
|
|
int _offset_350;
|
|
PBigInt _sigValue_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_19;
|
|
Circom_Sizes _sigSizes_19;
|
|
int _offset_351;
|
|
|
|
|
|
/* signal input in[n] */
|
|
|
|
/* signal input inp[2] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var nBlocks = ((n-1)>>2)+1 */
|
|
|
|
/* var i */
|
|
|
|
/* var j */
|
|
|
|
/* component windows[nBlocks] */
|
|
|
|
/* for (i=0,i<nBlocks,i++) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* log(3) */
|
|
mpz_set_str(_num_4[0], "3", 10);
|
|
ctx->log(_num_4);
|
|
/* for (i=0,i<nBlocks,i++) */
|
|
|
|
/* for (j=0,j<4,j++) */
|
|
|
|
/* if (i*4+j >= n) */
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_266 = _compIdx + 0*_compSizes[1];
|
|
_sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_268 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_271 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_271, _sigValue);
|
|
ctx->setSignal(_offset_266, _offset_268, _sigValue);
|
|
mpz_set_str(_tmp_138[0], "1", 10);
|
|
mpz_set_str(j[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_138);
|
|
while (_cond) {
|
|
|
|
/* if (i*4+j >= n) */
|
|
_v_205 = j + 0;
|
|
ctx->field->add(_tmp_140,_const,_v_205);
|
|
ctx->field->geq(_tmp_141,_tmp_140,_const_1);
|
|
if (ctx->field->isTrue(_tmp_141)) {
|
|
|
|
/* windows[i].sel[j] <== 0 */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_279 = _compIdx_1 + 0*_compSizes_1[1];
|
|
_sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_208 = j + 0;
|
|
_offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1];
|
|
mpz_set_str(_num_12[0], "0", 10);
|
|
ctx->setSignal(_offset_279, _offset_281, _num_12);
|
|
} else {
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_283 = _compIdx_2 + 0*_compSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_210 = j + 0;
|
|
_offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1];
|
|
_sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_212 = j + 0;
|
|
ctx->field->add(_tmp_143,_const_2,_v_212);
|
|
_offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1);
|
|
ctx->setSignal(_offset_283, _offset_285, _sigValue_1);
|
|
}
|
|
_v_213 = j + 0;
|
|
ctx->field->add(_tmp_144, _v_213, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_144, 1);
|
|
_v_214 = j + 0;
|
|
ctx->field->lt(_tmp_145,_v_214,_const_3);
|
|
_cond = ctx->field->isTrue(_tmp_145);
|
|
}
|
|
mpz_set_str(_tmp_147[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond_1 = ctx->field->isTrue(_tmp_147);
|
|
while (_cond_1) {
|
|
|
|
/* for (j=0,j<4,j++) */
|
|
mpz_set_str(_num_15[0], "0", 10);
|
|
ctx->field->copyn(j, _num_15, 1);
|
|
_v_218 = j + 0;
|
|
ctx->field->lt(_tmp_148,_v_218,_const_4);
|
|
_cond_2 = ctx->field->isTrue(_tmp_148);
|
|
while (_cond_2) {
|
|
|
|
/* if (i*4+j >= n) */
|
|
_v_219 = i + 0;
|
|
ctx->field->mul(_tmp_149,_v_219,_const_5);
|
|
_v_220 = j + 0;
|
|
ctx->field->add(_tmp_150,_tmp_149,_v_220);
|
|
ctx->field->geq(_tmp_151,_tmp_150,_const_6);
|
|
if (ctx->field->isTrue(_tmp_151)) {
|
|
|
|
/* windows[i].sel[j] <== 0 */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_222 = i + 0;
|
|
_offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1];
|
|
_sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_223 = j + 0;
|
|
_offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1];
|
|
mpz_set_str(_num_18[0], "0", 10);
|
|
ctx->setSignal(_offset_302, _offset_304, _num_18);
|
|
} else {
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_224 = i + 0;
|
|
_offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1];
|
|
_sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_225 = j + 0;
|
|
_offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1];
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_226 = i + 0;
|
|
ctx->field->mul(_tmp_152,_v_226,_const_7);
|
|
_v_227 = j + 0;
|
|
ctx->field->add(_tmp_153,_tmp_152,_v_227);
|
|
_offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2);
|
|
ctx->setSignal(_offset_306, _offset_308, _sigValue_2);
|
|
}
|
|
_v_228 = j + 0;
|
|
ctx->field->add(_tmp_154, _v_228, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_154, 1);
|
|
_v_229 = j + 0;
|
|
ctx->field->lt(_tmp_155,_v_229,_const_8);
|
|
_cond_2 = ctx->field->isTrue(_tmp_155);
|
|
}
|
|
_v_230 = i + 0;
|
|
ctx->field->add(_tmp_156, _v_230, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_156, 1);
|
|
_v_231 = i + 0;
|
|
ctx->field->lt(_tmp_157,_v_231,_const_9);
|
|
_cond_1 = ctx->field->isTrue(_tmp_157);
|
|
}
|
|
|
|
/* windows[0].in[0] <== inp[0] */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_319 = _compIdx_5 + 0*_compSizes_5[1];
|
|
_sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_320 = _sigIdx_8 + 0*_sigSizes_8[1];
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_321 = _sigIdx_9 + 0*_sigSizes_9[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3);
|
|
ctx->setSignal(_offset_319, _offset_320, _sigValue_3);
|
|
|
|
/* windows[0].in[1] <== inp[1] */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_322 = _compIdx_6 + 0*_compSizes_6[1];
|
|
_sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_323 = _sigIdx_10 + 1*_sigSizes_10[1];
|
|
_sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_324 = _sigIdx_11 + 1*_sigSizes_11[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4);
|
|
ctx->setSignal(_offset_322, _offset_323, _sigValue_4);
|
|
|
|
/* for (i=0,i<nBlocks-1,i++) */
|
|
mpz_set_str(_num_27[0], "0", 10);
|
|
ctx->field->copyn(i, _num_27, 1);
|
|
_v_233 = i + 0;
|
|
ctx->field->lt(_tmp_159,_v_233,_const_10);
|
|
_cond_3 = ctx->field->isTrue(_tmp_159);
|
|
while (_cond_3) {
|
|
|
|
/* windows[i].out[0] ==> windows[i+1].in[0] */
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_235 = i + 0;
|
|
ctx->field->add(_tmp_160,_v_235,_const_11);
|
|
_offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1];
|
|
_sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_330 = _sigIdx_12 + 0*_sigSizes_12[1];
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_236 = i + 0;
|
|
_offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1];
|
|
_sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_333 = _sigIdx_13 + 0*_sigSizes_13[1];
|
|
ctx->getSignal(_offset_332, _offset_333, _sigValue_5);
|
|
ctx->setSignal(_offset_329, _offset_330, _sigValue_5);
|
|
|
|
/* windows[i].out[1] ==> windows[i+1].in[1] */
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_237 = i + 0;
|
|
ctx->field->add(_tmp_161,_v_237,_const_12);
|
|
_offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1];
|
|
_sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_336 = _sigIdx_14 + 1*_sigSizes_14[1];
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_238 = i + 0;
|
|
_offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1];
|
|
_sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_339 = _sigIdx_15 + 1*_sigSizes_15[1];
|
|
ctx->getSignal(_offset_338, _offset_339, _sigValue_6);
|
|
ctx->setSignal(_offset_335, _offset_336, _sigValue_6);
|
|
_v_239 = i + 0;
|
|
ctx->field->add(_tmp_162, _v_239, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_162, 1);
|
|
_v_240 = i + 0;
|
|
ctx->field->lt(_tmp_164,_v_240,_const_13);
|
|
_cond_3 = ctx->field->isTrue(_tmp_164);
|
|
}
|
|
|
|
/* windows[nBlocks-1].out[0] ==> out[0] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_345 = _compIdx_11 + 62*_compSizes_11[1];
|
|
_sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_346 = _sigIdx_16 + 0*_sigSizes_16[1];
|
|
ctx->getSignal(_offset_345, _offset_346, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_347 = _sigIdx_17 + 0*_sigSizes_17[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7);
|
|
|
|
/* windows[nBlocks-1].out[1] ==> out[1] */
|
|
_compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_349 = _compIdx_12 + 62*_compSizes_12[1];
|
|
_sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_350 = _sigIdx_18 + 1*_sigSizes_18[1];
|
|
ctx->getSignal(_offset_349, _offset_350, _sigValue_8);
|
|
_sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_351 = _sigIdx_19 + 1*_sigSizes_19[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_138, 1);
|
|
ctx->freeBigInts(j, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_140, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_141, 1);
|
|
ctx->freeBigInts(_num_12, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_143, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_144, 1);
|
|
ctx->freeBigInts(_const_3, 1);
|
|
ctx->freeBigInts(_tmp_145, 1);
|
|
ctx->freeBigInts(_tmp_147, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_num_15, 1);
|
|
ctx->freeBigInts(_const_4, 1);
|
|
ctx->freeBigInts(_tmp_148, 1);
|
|
ctx->freeBigInts(_const_5, 1);
|
|
ctx->freeBigInts(_tmp_149, 1);
|
|
ctx->freeBigInts(_tmp_150, 1);
|
|
ctx->freeBigInts(_const_6, 1);
|
|
ctx->freeBigInts(_tmp_151, 1);
|
|
ctx->freeBigInts(_num_18, 1);
|
|
ctx->freeBigInts(_const_7, 1);
|
|
ctx->freeBigInts(_tmp_152, 1);
|
|
ctx->freeBigInts(_tmp_153, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_tmp_154, 1);
|
|
ctx->freeBigInts(_const_8, 1);
|
|
ctx->freeBigInts(_tmp_155, 1);
|
|
ctx->freeBigInts(_tmp_156, 1);
|
|
ctx->freeBigInts(_const_9, 1);
|
|
ctx->freeBigInts(_tmp_157, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_num_27, 1);
|
|
ctx->freeBigInts(_const_10, 1);
|
|
ctx->freeBigInts(_tmp_159, 1);
|
|
ctx->freeBigInts(_const_11, 1);
|
|
ctx->freeBigInts(_tmp_160, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_const_12, 1);
|
|
ctx->freeBigInts(_tmp_161, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_tmp_162, 1);
|
|
ctx->freeBigInts(_const_13, 1);
|
|
ctx->freeBigInts(_tmp_164, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
ctx->freeBigInts(_sigValue_8, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMul
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
n=250
|
|
*/
|
|
void EscalarMul_013c1dd4c0cce6a8(Circom_CalcWit *ctx) {
|
|
// Header
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
int _compIdx;
|
|
Circom_Sizes _compSizes;
|
|
int _offset_266;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_268;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_271;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_138 = ctx->allocBigInts(1);
|
|
PBigInt j = ctx->allocBigInts(1);
|
|
int _cond;
|
|
PBigInt _v_205;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "0", 10);
|
|
PBigInt _tmp_140 = ctx->allocBigInts(1);
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "250", 10);
|
|
PBigInt _tmp_141 = ctx->allocBigInts(1);
|
|
int _compIdx_1;
|
|
Circom_Sizes _compSizes_1;
|
|
int _offset_279;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_208;
|
|
int _offset_281;
|
|
PBigInt _num_12 = ctx->allocBigInts(1);
|
|
int _compIdx_2;
|
|
Circom_Sizes _compSizes_2;
|
|
int _offset_283;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_210;
|
|
int _offset_285;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_212;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "0", 10);
|
|
PBigInt _tmp_143 = ctx->allocBigInts(1);
|
|
int _offset_288;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_213;
|
|
PBigInt _tmp_144 = ctx->allocBigInts(1);
|
|
PBigInt _v_214;
|
|
PBigInt _const_3;
|
|
_const_3 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_3[0], "4", 10);
|
|
PBigInt _tmp_145 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_147 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
PBigInt _num_15 = ctx->allocBigInts(1);
|
|
PBigInt _v_218;
|
|
PBigInt _const_4;
|
|
_const_4 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_4[0], "4", 10);
|
|
PBigInt _tmp_148 = ctx->allocBigInts(1);
|
|
int _cond_2;
|
|
PBigInt _v_219;
|
|
PBigInt _const_5;
|
|
_const_5 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_5[0], "4", 10);
|
|
PBigInt _tmp_149 = ctx->allocBigInts(1);
|
|
PBigInt _v_220;
|
|
PBigInt _tmp_150 = ctx->allocBigInts(1);
|
|
PBigInt _const_6;
|
|
_const_6 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_6[0], "250", 10);
|
|
PBigInt _tmp_151 = ctx->allocBigInts(1);
|
|
int _compIdx_3;
|
|
Circom_Sizes _compSizes_3;
|
|
PBigInt _v_222;
|
|
int _offset_302;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_223;
|
|
int _offset_304;
|
|
PBigInt _num_18 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
Circom_Sizes _compSizes_4;
|
|
PBigInt _v_224;
|
|
int _offset_306;
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_6;
|
|
PBigInt _v_225;
|
|
int _offset_308;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_7;
|
|
PBigInt _v_226;
|
|
PBigInt _const_7;
|
|
_const_7 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_7[0], "4", 10);
|
|
PBigInt _tmp_152 = ctx->allocBigInts(1);
|
|
PBigInt _v_227;
|
|
PBigInt _tmp_153 = ctx->allocBigInts(1);
|
|
int _offset_311;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
PBigInt _v_228;
|
|
PBigInt _tmp_154 = ctx->allocBigInts(1);
|
|
PBigInt _v_229;
|
|
PBigInt _const_8;
|
|
_const_8 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_8[0], "4", 10);
|
|
PBigInt _tmp_155 = ctx->allocBigInts(1);
|
|
PBigInt _v_230;
|
|
PBigInt _tmp_156 = ctx->allocBigInts(1);
|
|
PBigInt _v_231;
|
|
PBigInt _const_9;
|
|
_const_9 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_9[0], "63", 10);
|
|
PBigInt _tmp_157 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
Circom_Sizes _compSizes_5;
|
|
int _offset_319;
|
|
int _sigIdx_8;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_320;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_321;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
Circom_Sizes _compSizes_6;
|
|
int _offset_322;
|
|
int _sigIdx_10;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_323;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_324;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_27 = ctx->allocBigInts(1);
|
|
PBigInt _v_233;
|
|
PBigInt _const_10;
|
|
_const_10 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_10[0], "62", 10);
|
|
PBigInt _tmp_159 = ctx->allocBigInts(1);
|
|
int _cond_3;
|
|
int _compIdx_7;
|
|
Circom_Sizes _compSizes_7;
|
|
PBigInt _v_235;
|
|
PBigInt _const_11;
|
|
_const_11 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_11[0], "1", 10);
|
|
PBigInt _tmp_160 = ctx->allocBigInts(1);
|
|
int _offset_329;
|
|
int _sigIdx_12;
|
|
Circom_Sizes _sigSizes_12;
|
|
int _offset_330;
|
|
int _compIdx_8;
|
|
Circom_Sizes _compSizes_8;
|
|
PBigInt _v_236;
|
|
int _offset_332;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_13;
|
|
int _offset_333;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_9;
|
|
Circom_Sizes _compSizes_9;
|
|
PBigInt _v_237;
|
|
PBigInt _const_12;
|
|
_const_12 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_12[0], "1", 10);
|
|
PBigInt _tmp_161 = ctx->allocBigInts(1);
|
|
int _offset_335;
|
|
int _sigIdx_14;
|
|
Circom_Sizes _sigSizes_14;
|
|
int _offset_336;
|
|
int _compIdx_10;
|
|
Circom_Sizes _compSizes_10;
|
|
PBigInt _v_238;
|
|
int _offset_338;
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_15;
|
|
int _offset_339;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_239;
|
|
PBigInt _tmp_162 = ctx->allocBigInts(1);
|
|
PBigInt _v_240;
|
|
PBigInt _const_13;
|
|
_const_13 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_13[0], "62", 10);
|
|
PBigInt _tmp_164 = ctx->allocBigInts(1);
|
|
int _compIdx_11;
|
|
Circom_Sizes _compSizes_11;
|
|
int _offset_345;
|
|
int _sigIdx_16;
|
|
Circom_Sizes _sigSizes_16;
|
|
int _offset_346;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_17;
|
|
int _offset_347;
|
|
int _compIdx_12;
|
|
Circom_Sizes _compSizes_12;
|
|
int _offset_349;
|
|
int _sigIdx_18;
|
|
Circom_Sizes _sigSizes_18;
|
|
int _offset_350;
|
|
PBigInt _sigValue_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_19;
|
|
Circom_Sizes _sigSizes_19;
|
|
int _offset_351;
|
|
|
|
|
|
/* signal input in[n] */
|
|
|
|
/* signal input inp[2] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var nBlocks = ((n-1)>>2)+1 */
|
|
|
|
/* var i */
|
|
|
|
/* var j */
|
|
|
|
/* component windows[nBlocks] */
|
|
|
|
/* for (i=0,i<nBlocks,i++) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* windows[i] = EscalarMulWindow(base, i) */
|
|
|
|
/* log(3) */
|
|
mpz_set_str(_num_4[0], "3", 10);
|
|
ctx->log(_num_4);
|
|
/* for (i=0,i<nBlocks,i++) */
|
|
|
|
/* for (j=0,j<4,j++) */
|
|
|
|
/* if (i*4+j >= n) */
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_266 = _compIdx + 0*_compSizes[1];
|
|
_sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_268 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_271 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_271, _sigValue);
|
|
ctx->setSignal(_offset_266, _offset_268, _sigValue);
|
|
mpz_set_str(_tmp_138[0], "1", 10);
|
|
mpz_set_str(j[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_138);
|
|
while (_cond) {
|
|
|
|
/* if (i*4+j >= n) */
|
|
_v_205 = j + 0;
|
|
ctx->field->add(_tmp_140,_const,_v_205);
|
|
ctx->field->geq(_tmp_141,_tmp_140,_const_1);
|
|
if (ctx->field->isTrue(_tmp_141)) {
|
|
|
|
/* windows[i].sel[j] <== 0 */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_279 = _compIdx_1 + 0*_compSizes_1[1];
|
|
_sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_208 = j + 0;
|
|
_offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1];
|
|
mpz_set_str(_num_12[0], "0", 10);
|
|
ctx->setSignal(_offset_279, _offset_281, _num_12);
|
|
} else {
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_283 = _compIdx_2 + 0*_compSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_210 = j + 0;
|
|
_offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1];
|
|
_sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_212 = j + 0;
|
|
ctx->field->add(_tmp_143,_const_2,_v_212);
|
|
_offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1);
|
|
ctx->setSignal(_offset_283, _offset_285, _sigValue_1);
|
|
}
|
|
_v_213 = j + 0;
|
|
ctx->field->add(_tmp_144, _v_213, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_144, 1);
|
|
_v_214 = j + 0;
|
|
ctx->field->lt(_tmp_145,_v_214,_const_3);
|
|
_cond = ctx->field->isTrue(_tmp_145);
|
|
}
|
|
mpz_set_str(_tmp_147[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond_1 = ctx->field->isTrue(_tmp_147);
|
|
while (_cond_1) {
|
|
|
|
/* for (j=0,j<4,j++) */
|
|
mpz_set_str(_num_15[0], "0", 10);
|
|
ctx->field->copyn(j, _num_15, 1);
|
|
_v_218 = j + 0;
|
|
ctx->field->lt(_tmp_148,_v_218,_const_4);
|
|
_cond_2 = ctx->field->isTrue(_tmp_148);
|
|
while (_cond_2) {
|
|
|
|
/* if (i*4+j >= n) */
|
|
_v_219 = i + 0;
|
|
ctx->field->mul(_tmp_149,_v_219,_const_5);
|
|
_v_220 = j + 0;
|
|
ctx->field->add(_tmp_150,_tmp_149,_v_220);
|
|
ctx->field->geq(_tmp_151,_tmp_150,_const_6);
|
|
if (ctx->field->isTrue(_tmp_151)) {
|
|
|
|
/* windows[i].sel[j] <== 0 */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_222 = i + 0;
|
|
_offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1];
|
|
_sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_223 = j + 0;
|
|
_offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1];
|
|
mpz_set_str(_num_18[0], "0", 10);
|
|
ctx->setSignal(_offset_302, _offset_304, _num_18);
|
|
} else {
|
|
|
|
/* windows[i].sel[j] <== in[i*4+j] */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_224 = i + 0;
|
|
_offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1];
|
|
_sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_225 = j + 0;
|
|
_offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1];
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_v_226 = i + 0;
|
|
ctx->field->mul(_tmp_152,_v_226,_const_7);
|
|
_v_227 = j + 0;
|
|
ctx->field->add(_tmp_153,_tmp_152,_v_227);
|
|
_offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2);
|
|
ctx->setSignal(_offset_306, _offset_308, _sigValue_2);
|
|
}
|
|
_v_228 = j + 0;
|
|
ctx->field->add(_tmp_154, _v_228, &(ctx->field->one));
|
|
ctx->field->copyn(j, _tmp_154, 1);
|
|
_v_229 = j + 0;
|
|
ctx->field->lt(_tmp_155,_v_229,_const_8);
|
|
_cond_2 = ctx->field->isTrue(_tmp_155);
|
|
}
|
|
_v_230 = i + 0;
|
|
ctx->field->add(_tmp_156, _v_230, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_156, 1);
|
|
_v_231 = i + 0;
|
|
ctx->field->lt(_tmp_157,_v_231,_const_9);
|
|
_cond_1 = ctx->field->isTrue(_tmp_157);
|
|
}
|
|
|
|
/* windows[0].in[0] <== inp[0] */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_319 = _compIdx_5 + 0*_compSizes_5[1];
|
|
_sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_320 = _sigIdx_8 + 0*_sigSizes_8[1];
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_321 = _sigIdx_9 + 0*_sigSizes_9[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3);
|
|
ctx->setSignal(_offset_319, _offset_320, _sigValue_3);
|
|
|
|
/* windows[0].in[1] <== inp[1] */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_322 = _compIdx_6 + 0*_compSizes_6[1];
|
|
_sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_323 = _sigIdx_10 + 1*_sigSizes_10[1];
|
|
_sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */);
|
|
_offset_324 = _sigIdx_11 + 1*_sigSizes_11[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4);
|
|
ctx->setSignal(_offset_322, _offset_323, _sigValue_4);
|
|
|
|
/* for (i=0,i<nBlocks-1,i++) */
|
|
mpz_set_str(_num_27[0], "0", 10);
|
|
ctx->field->copyn(i, _num_27, 1);
|
|
_v_233 = i + 0;
|
|
ctx->field->lt(_tmp_159,_v_233,_const_10);
|
|
_cond_3 = ctx->field->isTrue(_tmp_159);
|
|
while (_cond_3) {
|
|
|
|
/* windows[i].out[0] ==> windows[i+1].in[0] */
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_235 = i + 0;
|
|
ctx->field->add(_tmp_160,_v_235,_const_11);
|
|
_offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1];
|
|
_sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_330 = _sigIdx_12 + 0*_sigSizes_12[1];
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_236 = i + 0;
|
|
_offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1];
|
|
_sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_333 = _sigIdx_13 + 0*_sigSizes_13[1];
|
|
ctx->getSignal(_offset_332, _offset_333, _sigValue_5);
|
|
ctx->setSignal(_offset_329, _offset_330, _sigValue_5);
|
|
|
|
/* windows[i].out[1] ==> windows[i+1].in[1] */
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_237 = i + 0;
|
|
ctx->field->add(_tmp_161,_v_237,_const_12);
|
|
_offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1];
|
|
_sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_336 = _sigIdx_14 + 1*_sigSizes_14[1];
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_v_238 = i + 0;
|
|
_offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1];
|
|
_sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_339 = _sigIdx_15 + 1*_sigSizes_15[1];
|
|
ctx->getSignal(_offset_338, _offset_339, _sigValue_6);
|
|
ctx->setSignal(_offset_335, _offset_336, _sigValue_6);
|
|
_v_239 = i + 0;
|
|
ctx->field->add(_tmp_162, _v_239, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_162, 1);
|
|
_v_240 = i + 0;
|
|
ctx->field->lt(_tmp_164,_v_240,_const_13);
|
|
_cond_3 = ctx->field->isTrue(_tmp_164);
|
|
}
|
|
|
|
/* windows[nBlocks-1].out[0] ==> out[0] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_345 = _compIdx_11 + 62*_compSizes_11[1];
|
|
_sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_346 = _sigIdx_16 + 0*_sigSizes_16[1];
|
|
ctx->getSignal(_offset_345, _offset_346, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_347 = _sigIdx_17 + 0*_sigSizes_17[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7);
|
|
|
|
/* windows[nBlocks-1].out[1] ==> out[1] */
|
|
_compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */);
|
|
_offset_349 = _compIdx_12 + 62*_compSizes_12[1];
|
|
_sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_350 = _sigIdx_18 + 1*_sigSizes_18[1];
|
|
ctx->getSignal(_offset_349, _offset_350, _sigValue_8);
|
|
_sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_351 = _sigIdx_19 + 1*_sigSizes_19[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_138, 1);
|
|
ctx->freeBigInts(j, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_140, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_141, 1);
|
|
ctx->freeBigInts(_num_12, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_143, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_144, 1);
|
|
ctx->freeBigInts(_const_3, 1);
|
|
ctx->freeBigInts(_tmp_145, 1);
|
|
ctx->freeBigInts(_tmp_147, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_num_15, 1);
|
|
ctx->freeBigInts(_const_4, 1);
|
|
ctx->freeBigInts(_tmp_148, 1);
|
|
ctx->freeBigInts(_const_5, 1);
|
|
ctx->freeBigInts(_tmp_149, 1);
|
|
ctx->freeBigInts(_tmp_150, 1);
|
|
ctx->freeBigInts(_const_6, 1);
|
|
ctx->freeBigInts(_tmp_151, 1);
|
|
ctx->freeBigInts(_num_18, 1);
|
|
ctx->freeBigInts(_const_7, 1);
|
|
ctx->freeBigInts(_tmp_152, 1);
|
|
ctx->freeBigInts(_tmp_153, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_tmp_154, 1);
|
|
ctx->freeBigInts(_const_8, 1);
|
|
ctx->freeBigInts(_tmp_155, 1);
|
|
ctx->freeBigInts(_tmp_156, 1);
|
|
ctx->freeBigInts(_const_9, 1);
|
|
ctx->freeBigInts(_tmp_157, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_num_27, 1);
|
|
ctx->freeBigInts(_const_10, 1);
|
|
ctx->freeBigInts(_tmp_159, 1);
|
|
ctx->freeBigInts(_const_11, 1);
|
|
ctx->freeBigInts(_tmp_160, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_const_12, 1);
|
|
ctx->freeBigInts(_tmp_161, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_tmp_162, 1);
|
|
ctx->freeBigInts(_const_13, 1);
|
|
ctx->freeBigInts(_tmp_164, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
ctx->freeBigInts(_sigValue_8, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=0
|
|
*/
|
|
void EscalarMulWindow_8a817f91638c8624(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10);
|
|
mpz_set_str(table[3], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10);
|
|
mpz_set_str(table[4], "15150626452948049369558454258951944998473656205066551147085410927099501966490", 10);
|
|
mpz_set_str(table[5], "21657770039429068954764921491703322863664647353875839647666513628925174100369", 10);
|
|
mpz_set_str(table[6], "12375647682928562990039117402012071427352325391824695643601018682085452638238", 10);
|
|
mpz_set_str(table[7], "9696868317396279261837202143848861924577319768494794671291368604054247291948", 10);
|
|
mpz_set_str(table[8], "3130380021407515466435960164775738901895857113899159372434882655061141364448", 10);
|
|
mpz_set_str(table[9], "18102228934286149264792705129260071916752899315308330715218539844598422882310", 10);
|
|
mpz_set_str(table[10], "8551445319073033375759400485987251808645632829495239854551666892161995946634", 10);
|
|
mpz_set_str(table[11], "13715625823309341099903685995231383734500240362885643328284543897544381196961", 10);
|
|
mpz_set_str(table[12], "1071048883351535085908093037304866435256934156776904846490118217237361098737", 10);
|
|
mpz_set_str(table[13], "20854215571198841364829663267379838853490562481900760695333560192054323741723", 10);
|
|
mpz_set_str(table[14], "451742354061234398202942031427425541585568519587278011340406631715764214869", 10);
|
|
mpz_set_str(table[15], "7008953828174351950820007899838518061264921925985394872864563300390722582167", 10);
|
|
mpz_set_str(table[16], "18682226731572883983941560819888138208429437649272924591500726355772361327632", 10);
|
|
mpz_set_str(table[17], "14160273483664597213372238267221229171717604664820533120344803077042384771915", 10);
|
|
mpz_set_str(table[18], "18222732225423011121551971127588778239571766638073592878070311814365350641293", 10);
|
|
mpz_set_str(table[19], "13284867948681397133337172135467128366145371196968663290890751743231551931878", 10);
|
|
mpz_set_str(table[20], "14160185613158107798945126702461707263750732592693844435344327640031183275191", 10);
|
|
mpz_set_str(table[21], "11830396168076579692702235358699790800475074014009773686686326060660146786379", 10);
|
|
mpz_set_str(table[22], "3326483685855382848182588769539637112000666370396534958047548918750324603222", 10);
|
|
mpz_set_str(table[23], "16878873365676175365094896795813029886044607049292897108776152812655455545976", 10);
|
|
mpz_set_str(table[24], "13907843177061409552237236896137033893405437763125042864904283357224378465002", 10);
|
|
mpz_set_str(table[25], "8600752263405888453232384867315826708424372752559981680127649623750881631521", 10);
|
|
mpz_set_str(table[26], "691645234475582606646247678040476724837141568943984905122797935509348392353", 10);
|
|
mpz_set_str(table[27], "2377906462163329191225978849192141728635064580835916630401887266320251299799", 10);
|
|
mpz_set_str(table[28], "15319480474450861398156325467777956436693656940155642034815349827789193495632", 10);
|
|
mpz_set_str(table[29], "6089164252766459118514096883183711304294501281632971542887946331593610196441", 10);
|
|
mpz_set_str(table[30], "10476146512781846234997263827806045286680090602876753777393063096484049772152", 10);
|
|
mpz_set_str(table[31], "3479033062979676359862906038951730311469771023590116324970835153503819282935", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=1
|
|
*/
|
|
void EscalarMulWindow_8a818091638c87d7(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12450335349329341951046673370985198995222494147242666947722075876342898395656", 10);
|
|
mpz_set_str(table[3], "9951734758650769346072820441375790271574478261506572354164134999444817046690", 10);
|
|
mpz_set_str(table[4], "19288661644384445567273764070445136288401533258430891225396664309826062816922", 10);
|
|
mpz_set_str(table[5], "454717370483229603965078433113457308346330984244000560668425630921663575610", 10);
|
|
mpz_set_str(table[6], "11036550395057651695234945879842344316734685308809511563725205116871198726415", 10);
|
|
mpz_set_str(table[7], "6686916819114264470862404866673814030449184260418962781299313931714774958060", 10);
|
|
mpz_set_str(table[8], "11584943071743990469508450940068622113650840004743485388763638062519996976262", 10);
|
|
mpz_set_str(table[9], "2522205361323446980614269252690299877339317999520959868458265302988689726558", 10);
|
|
mpz_set_str(table[10], "8862984334279247389113661975279196551279284945293462186056309366789662542073", 10);
|
|
mpz_set_str(table[11], "15395361587300412106702374789905586594677297428929197922286281992041217586471", 10);
|
|
mpz_set_str(table[12], "1931730024949759486022373864868442812837862161882630865815922811946342189368", 10);
|
|
mpz_set_str(table[13], "2837709313580552424458270943701300651891214069392024997961926106090207487040", 10);
|
|
mpz_set_str(table[14], "18713933290215210467667666175419441778784903473223318601715795623470468893312", 10);
|
|
mpz_set_str(table[15], "15912943479108146633148323572548567749167211598791020854575103168570576406641", 10);
|
|
mpz_set_str(table[16], "3371330846548270252366274792614979796607657190522123380466170276619028673364", 10);
|
|
mpz_set_str(table[17], "20118851005658061473865583030477744410974510198771734020012411384826972467628", 10);
|
|
mpz_set_str(table[18], "20709849873119480107722994252823030617564606162682289843354773199114126432181", 10);
|
|
mpz_set_str(table[19], "11147937764687065541845952286338417174555516372389007686854433431785989855320", 10);
|
|
mpz_set_str(table[20], "20612342549336571233586824192667026435576965443231669760489093690131842758093", 10);
|
|
mpz_set_str(table[21], "9036856941211088274038458568357979705491504773280274233521497994979112550438", 10);
|
|
mpz_set_str(table[22], "480590051872373936783058017174694527804992021578591277936264925023938790998", 10);
|
|
mpz_set_str(table[23], "2698124413369660851243824606305933154363836527909961862981550117290381348488", 10);
|
|
mpz_set_str(table[24], "8506910167507337132174870917683467139024088663894919990248817817475205504033", 10);
|
|
mpz_set_str(table[25], "8554604844761436393257862151218354239170681209260064002339003071598032229201", 10);
|
|
mpz_set_str(table[26], "6568114972191142651303903458372393214875879773896760094673312697224863241834", 10);
|
|
mpz_set_str(table[27], "6022617941898614236743457388428151699027252864984103881453208601076128436750", 10);
|
|
mpz_set_str(table[28], "17904639434028839898854823561909720619694932433031819449561382276651823544685", 10);
|
|
mpz_set_str(table[29], "12639124190122096702065279211096375988549941348271364477539292011603099800289", 10);
|
|
mpz_set_str(table[30], "12039858934261588004400698759124361551292695794647935041975177089639743130014", 10);
|
|
mpz_set_str(table[31], "10517658053139539508761071910886478401086580256794382403111190159835923441057", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=2
|
|
*/
|
|
void EscalarMulWindow_8a818191638c898a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "7045697552349898261743966576765076077631482247492318530240889472256588204028", 10);
|
|
mpz_set_str(table[3], "3395600428544429233510781819124998700741425532230423692905830980889097341765", 10);
|
|
mpz_set_str(table[4], "6744549111917530764513512331120487629893685943837744536663616011599465271187", 10);
|
|
mpz_set_str(table[5], "10883183306544818491710667232582222974396909896870947271118527221832239568413", 10);
|
|
mpz_set_str(table[6], "9244276130453639577883773738976340753082221103199659084800755483749918131527", 10);
|
|
mpz_set_str(table[7], "6309158401731278546929483611199073290102324720279201651395299984768656633602", 10);
|
|
mpz_set_str(table[8], "18227663628445682323588752862251736106950133905035517599142834318656635672008", 10);
|
|
mpz_set_str(table[9], "15968707818136024145730173609960933090598188161418032518329451945197694785985", 10);
|
|
mpz_set_str(table[10], "19790161925513641826173521251384042096462565971113368646790449092272638453440", 10);
|
|
mpz_set_str(table[11], "18951820515407881634811076974479241881307945078262723139621621617846859199313", 10);
|
|
mpz_set_str(table[12], "13487050806667939269092637257391470973644431334875501423021305009427050716809", 10);
|
|
mpz_set_str(table[13], "12923547377386110192128869129856285188526426572837523038386982523330544314397", 10);
|
|
mpz_set_str(table[14], "21595003021079211179013842845440988224380451106449478764549685302177957739947", 10);
|
|
mpz_set_str(table[15], "2987285477165593498047221190363008617921622332189886015935950416396747649655", 10);
|
|
mpz_set_str(table[16], "17303634213618199102056016372664412129974431859446453359105581009608817565571", 10);
|
|
mpz_set_str(table[17], "4450561540112488104624518245870286278550351737495215477889950501752432376996", 10);
|
|
mpz_set_str(table[18], "3141434226421849222585969678304762759887991737941353354470224912622168084115", 10);
|
|
mpz_set_str(table[19], "12728396654376398892005506962757163454896562186292741787142186040205618719757", 10);
|
|
mpz_set_str(table[20], "9708925788058813188621214393567192686293251962885674485685327950703484002553", 10);
|
|
mpz_set_str(table[21], "16420582083000958736719513297067794235930227358340173099890447851853731872661", 10);
|
|
mpz_set_str(table[22], "8426171837936956756584231006242663573899977959855831777118983630418281594454", 10);
|
|
mpz_set_str(table[23], "21388114408852548357590937768281753554991961266563093834359119510507376442369", 10);
|
|
mpz_set_str(table[24], "7190802720337575053729990306351192292605145136761733161542487626494418221101", 10);
|
|
mpz_set_str(table[25], "15318743785409755455502646372484385216424688000540061704513269039598380428474", 10);
|
|
mpz_set_str(table[26], "18923683823879719599598708766579911888522321064235431411188398308336104365686", 10);
|
|
mpz_set_str(table[27], "20992568491574006565936670738179100584028276810392805245209584525954307542318", 10);
|
|
mpz_set_str(table[28], "19300331083157559470280216349912136259644153736182668201472510882275436089814", 10);
|
|
mpz_set_str(table[29], "6033956060419111513024628634700765726136642761460226434669674407924867833274", 10);
|
|
mpz_set_str(table[30], "19716255736785937137183198048246845793934322373972171133044602969842516937714", 10);
|
|
mpz_set_str(table[31], "10080336237463613513581482521894656187906305499367291706009680418102193762660", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=3
|
|
*/
|
|
void EscalarMulWindow_8a818291638c8b3d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "10299499580313288351648961258372184361356275910507094340865623417151085556338", 10);
|
|
mpz_set_str(table[3], "9266467220996834961927872985896756998782524262982604694296119855882960023673", 10);
|
|
mpz_set_str(table[4], "11278840426758671324186407245785960482558955431814194534244066083912343084227", 10);
|
|
mpz_set_str(table[5], "2180566018272958353843165270558616027185910742538683657057390264471380585940", 10);
|
|
mpz_set_str(table[6], "215386845435812979771368409990753763520312920616630494958085743901823917800", 10);
|
|
mpz_set_str(table[7], "20407592108330400213379184310602975524691762015018801167152885076939923197266", 10);
|
|
mpz_set_str(table[8], "17529622850650575122288637014439737838354836376247976403583484982429641171584", 10);
|
|
mpz_set_str(table[9], "12455268132672690277725610326071579764591886067575992196312484188216927540619", 10);
|
|
mpz_set_str(table[10], "15188152099486947620269392050023940852211965590522310494001669288153455445916", 10);
|
|
mpz_set_str(table[11], "16643644469936369507016635388414064434540207698803410127096478208351815132679", 10);
|
|
mpz_set_str(table[12], "8178132823820298648421993186324434673405971480934619017343528184894419827335", 10);
|
|
mpz_set_str(table[13], "14782298368407909246033862767035319927800423265218646860423700734647085090760", 10);
|
|
mpz_set_str(table[14], "16315046440322011462423889148453525506600915057243039875408831302480406347036", 10);
|
|
mpz_set_str(table[15], "11081031008295030156345410714660120182935106059911302280322724839366319120844", 10);
|
|
mpz_set_str(table[16], "9727719397303946402023174236663500405972296934381725453257310851467439253642", 10);
|
|
mpz_set_str(table[17], "9273145391697533576939976503752079006823997138797717025042581388890194138374", 10);
|
|
mpz_set_str(table[18], "7284954265501748654567633026783041508150147023538928043692704712804217808340", 10);
|
|
mpz_set_str(table[19], "5188552586189946101151630268070618252715222420305958317789629045279543150116", 10);
|
|
mpz_set_str(table[20], "10785941615172681349444165278918869766333016424678843594832313471120540730478", 10);
|
|
mpz_set_str(table[21], "5932771768255819196486763330142236670298720914165226901554418807229936846474", 10);
|
|
mpz_set_str(table[22], "2028721811486633247308830142589029331529082029687419498839147830840323984363", 10);
|
|
mpz_set_str(table[23], "3017857322436314880341693098842398234815284060974563745722139842760120971581", 10);
|
|
mpz_set_str(table[24], "18296259486767382700015511503733209798422188966251188911514604063029222028546", 10);
|
|
mpz_set_str(table[25], "15180141133736660652107717504927632409749020733332496982418082413845344259403", 10);
|
|
mpz_set_str(table[26], "21726279678732560769833680642948162345979007579422305294648581199670674279821", 10);
|
|
mpz_set_str(table[27], "20841398550339602351135248720837985529268757070690515168116806731996799790138", 10);
|
|
mpz_set_str(table[28], "21282638032408430997306033364705899080528942581677852490145502518808933725567", 10);
|
|
mpz_set_str(table[29], "13903620002574949602329475381210150875367865253860756684620613597151406554467", 10);
|
|
mpz_set_str(table[30], "11609675030878572557983311167493301410885694396865259923714699971882730337193", 10);
|
|
mpz_set_str(table[31], "641323983519843603430479660621578922121635387933802210359009390561663899453", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=4
|
|
*/
|
|
void EscalarMulWindow_8a817b91638c7f58(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4152637325631936004620374572177627550442342730547146361150006894931391929814", 10);
|
|
mpz_set_str(table[3], "2180367166602885287952962653941971483151584153956761815327641890395546522883", 10);
|
|
mpz_set_str(table[4], "17080322430714894370085335406415912347921332943892515519091272280414189987214", 10);
|
|
mpz_set_str(table[5], "8494574418412741183111083814796810418721782459448593747717027920516647175700", 10);
|
|
mpz_set_str(table[6], "17728021599237737787197631959143443552148617809674045394361671154284354186242", 10);
|
|
mpz_set_str(table[7], "9267678837483990782127158138507503647206006042119316230564850934588871651810", 10);
|
|
mpz_set_str(table[8], "15160890345615204326166092626214588149676637139644790189601178926476813716358", 10);
|
|
mpz_set_str(table[9], "11374387429070567029034484634553768966914308691474791950791645253730682709009", 10);
|
|
mpz_set_str(table[10], "10678466208351502397877880528021155331277793487192349956740757112468444707849", 10);
|
|
mpz_set_str(table[11], "8190655992869345245045359828215583356622306673546575090446072621991944775429", 10);
|
|
mpz_set_str(table[12], "17762181337476536955590643741916820380461675457054832411733021785061810440533", 10);
|
|
mpz_set_str(table[13], "20451970925628477628286894751575162727823345451099151964964174136280858943261", 10);
|
|
mpz_set_str(table[14], "13292833921138496806187651666335498027312372687909414228778945993380861428942", 10);
|
|
mpz_set_str(table[15], "10487170910013047897637679529351943901530567046368452227558237974249088811619", 10);
|
|
mpz_set_str(table[16], "20759698136517597571684798693842032656828405219206888345138651470913002897286", 10);
|
|
mpz_set_str(table[17], "16058819041904626730663137648530951263426680277649947229782256328297555532981", 10);
|
|
mpz_set_str(table[18], "13320523481006562893020500681642189554952463035370425252039716356578464963045", 10);
|
|
mpz_set_str(table[19], "8799514829565047209126067817437375895787209352159804960101618242161839525951", 10);
|
|
mpz_set_str(table[20], "5866468963637476981400985857527044765867964812856846323487892495456443741777", 10);
|
|
mpz_set_str(table[21], "401553102066206944718793182019809421052564381627968135878126448667394086484", 10);
|
|
mpz_set_str(table[22], "2716411494364331665129154806933170438183297068054907180270986518830578042712", 10);
|
|
mpz_set_str(table[23], "18439592130459086491266800132296802694103730000695016079581620779245803665472", 10);
|
|
mpz_set_str(table[24], "10936946011006937891444595577824545764470199547488998946086523659824401983007", 10);
|
|
mpz_set_str(table[25], "19901433082800065174799376682234529651901940793106941153214111754453162322508", 10);
|
|
mpz_set_str(table[26], "13706928738199343026920573380236589493583670491143152449984889204007175138678", 10);
|
|
mpz_set_str(table[27], "6624239682483323245003772292813775827295960014778625321845307519288526880291", 10);
|
|
mpz_set_str(table[28], "2596288971144515943757696290543687200323089740599685000991244283938365997270", 10);
|
|
mpz_set_str(table[29], "13700075398258237145901186732874668417282240332802293950518984212255553187508", 10);
|
|
mpz_set_str(table[30], "7276525175456025197755876167641478885798347632114620699422652394291294023406", 10);
|
|
mpz_set_str(table[31], "13792453969170265798597018249025953963597948938469190276132321943433124083845", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=5
|
|
*/
|
|
void EscalarMulWindow_8a817c91638c810b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "10059471356981080526161248310431238683905879239618874867630614905951922554524", 10);
|
|
mpz_set_str(table[3], "2893219258903194185350877973287422615284317574227301248398827645216092040124", 10);
|
|
mpz_set_str(table[4], "7955688620811353537502456371741345360010174295430488337082479317466754374641", 10);
|
|
mpz_set_str(table[5], "1552479587286910636067135316997525992163242693116944777924976792867265673234", 10);
|
|
mpz_set_str(table[6], "4076752434376815976672943629774991129727632722349304506829384779336306655967", 10);
|
|
mpz_set_str(table[7], "14156394013880982635009488035283281586885725913140497270917348481118569169555", 10);
|
|
mpz_set_str(table[8], "12277712837538028259413714493049635386935447875583313929221891977691317215420", 10);
|
|
mpz_set_str(table[9], "347082090294630958999344374086054629628043379985548264666637705321047972062", 10);
|
|
mpz_set_str(table[10], "9169985224880045685902862270400314197219835660697585696719219583921506497896", 10);
|
|
mpz_set_str(table[11], "2129375120322868027710690230696050562503615089761456135973356178075539108353", 10);
|
|
mpz_set_str(table[12], "4735709784947571026584600363686132054784294573927568774792208273415890571854", 10);
|
|
mpz_set_str(table[13], "1356360814089129098026853266681803599235409327843206313454889960114721040615", 10);
|
|
mpz_set_str(table[14], "11110136120351033016809650067584456424031521001483843267966391083954699894567", 10);
|
|
mpz_set_str(table[15], "10678309826727527905695072767024982194005595346260724019307182267806309842511", 10);
|
|
mpz_set_str(table[16], "17949059661190708618242018953109839994685894956236807772121590081765534153240", 10);
|
|
mpz_set_str(table[17], "18512350870077032292031574152764607530023778042410022653599994942486346526940", 10);
|
|
mpz_set_str(table[18], "309250638089897597225380749328145384131390904717859175953395013759107326860", 10);
|
|
mpz_set_str(table[19], "6881906736513386327385824245964033360827939339794911899560753901232820158992", 10);
|
|
mpz_set_str(table[20], "15693694149102271963649517494810630420111979369528801952689672462869233913819", 10);
|
|
mpz_set_str(table[21], "14850959645647438773263301097027004240286323742991400428766062614208557633805", 10);
|
|
mpz_set_str(table[22], "10508269604303515446429184177367617809863720311655641405406090551242461640548", 10);
|
|
mpz_set_str(table[23], "13835558159627105067527834001068856785443803703769379992201578489656910931938", 10);
|
|
mpz_set_str(table[24], "16446138449439094147266330807719036578121180036988374809688364988157885458804", 10);
|
|
mpz_set_str(table[25], "842885020979433634997456604456132473705102342538041421936252105952545460182", 10);
|
|
mpz_set_str(table[26], "5402387649315196401476528831700695288422587804949701721078113803037816700568", 10);
|
|
mpz_set_str(table[27], "18954463848378153626407256721564024459724384275474304584054102951285145180121", 10);
|
|
mpz_set_str(table[28], "18687290318246424046658404736952875314563619805513613694304987465542576775030", 10);
|
|
mpz_set_str(table[29], "10328927280537345889935307985540911534621045190440081255660374119784055050825", 10);
|
|
mpz_set_str(table[30], "1364906674338461585656434739107222827428022180855057060418931389021020199648", 10);
|
|
mpz_set_str(table[31], "1813852328577833166873790138854991737348346378766433059621698765008781073762", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=6
|
|
*/
|
|
void EscalarMulWindow_8a817d91638c82be(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6696924227194880599213411252496702532588707496216166438794048914046613861251", 10);
|
|
mpz_set_str(table[3], "4582991448152463823047001667952825587496013160285877022547286223286690499209", 10);
|
|
mpz_set_str(table[4], "7913817789053702567228757915143867322337287975194114128817460553462139932642", 10);
|
|
mpz_set_str(table[5], "7036385166032666440237714017827254061958169005584911850628710951649014222296", 10);
|
|
mpz_set_str(table[6], "9469355211527074219420241360733803585653229140457284765010162520939095632790", 10);
|
|
mpz_set_str(table[7], "12807013954329784456536831758295815293345625504234061413707283538626744152070", 10);
|
|
mpz_set_str(table[8], "11632888711758463757298576569782447197685100413818678716919070764097162224518", 10);
|
|
mpz_set_str(table[9], "8161402736996445649697452071607849971538046900561021646104181668783454772688", 10);
|
|
mpz_set_str(table[10], "20085116934187058842911275196176217801258351861285263904565203190322984514161", 10);
|
|
mpz_set_str(table[11], "15084641497000452022929002528992190844267865333921041163628790717191570819600", 10);
|
|
mpz_set_str(table[12], "4601694861190311597213771397743548058400010202974248033338216641255844991066", 10);
|
|
mpz_set_str(table[13], "17232201236512944377112575168094403944070558811116318274904140246175644194762", 10);
|
|
mpz_set_str(table[14], "7813231740184032615735414864659503190895979676720562745632579495298679726579", 10);
|
|
mpz_set_str(table[15], "3660919817188380268430242452249693618001631207503673980428892176343926918974", 10);
|
|
mpz_set_str(table[16], "10458087548997809852151692969375762626326308930367907121204344506582106226522", 10);
|
|
mpz_set_str(table[17], "10092952565093341975387585887077362479531342081004807551176088631139596391390", 10);
|
|
mpz_set_str(table[18], "10410805271360662804564177092824947153052731972330045769052296785843573755308", 10);
|
|
mpz_set_str(table[19], "10184554845273300794471160283775900976483776102785799278287154448466003906961", 10);
|
|
mpz_set_str(table[20], "7863345532039581963597155222390714576813044449694149912972526081533432780186", 10);
|
|
mpz_set_str(table[21], "3472528823549877129962329001613282308877458799069109356073868564811626993060", 10);
|
|
mpz_set_str(table[22], "1879172298402130618776736833191662822721427345494123786055320389554063592778", 10);
|
|
mpz_set_str(table[23], "17596875527836912880378640066645254223645475679543471698138050019448508665523", 10);
|
|
mpz_set_str(table[24], "10896586639510202270166905811852720926404979591478172310284490856284228939325", 10);
|
|
mpz_set_str(table[25], "20419355217121322212632570642891834919613783447152622251213364180805924444119", 10);
|
|
mpz_set_str(table[26], "15792356390499443346936821474600266270596533763281151634845043786540149049987", 10);
|
|
mpz_set_str(table[27], "21284823598750804978716981081597932436486136876248122410024870449480994659627", 10);
|
|
mpz_set_str(table[28], "14436939288590862471438099071760394876959844576112487944052265738246439305903", 10);
|
|
mpz_set_str(table[29], "17027592766450782707182617434964390901664505248342575660291535599785038453407", 10);
|
|
mpz_set_str(table[30], "14874956003623327854605831627331487499357528479854928757336712078349160565284", 10);
|
|
mpz_set_str(table[31], "11533494496164056110911632202226183076948644848618805512291485177899023548301", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=7
|
|
*/
|
|
void EscalarMulWindow_8a817e91638c8471(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18391202230277166150190352475756632650774606644341512870017380816737002767028", 10);
|
|
mpz_set_str(table[3], "18710055256634775773116987174919809067587720956975115175369267430633625213067", 10);
|
|
mpz_set_str(table[4], "14778458914017941207129752308841192179807874219218045182415770357199972826613", 10);
|
|
mpz_set_str(table[5], "3425436024629949830749920214649525143076612409459562222613982846650118284684", 10);
|
|
mpz_set_str(table[6], "8143077758693209412905125140226887050652407780210736990534800217833536409512", 10);
|
|
mpz_set_str(table[7], "237505014231011999664820876893177676392206921106485191752137176516823119455", 10);
|
|
mpz_set_str(table[8], "21286695644914650826227005775384111743699352138127585452386892073162616242676", 10);
|
|
mpz_set_str(table[9], "16275297493048463522435789944039046152795453447530692541766470345251903814920", 10);
|
|
mpz_set_str(table[10], "5534407414098019921741548441009649919786948715587234534851751865620200059513", 10);
|
|
mpz_set_str(table[11], "17583783309789499331596931276739842210477446390922102133826713255679850961003", 10);
|
|
mpz_set_str(table[12], "10429362291381891675156024305697777333590711164789159993595868881740508768966", 10);
|
|
mpz_set_str(table[13], "3606220552903413690428978603995277267515491833422158562841893817985869925859", 10);
|
|
mpz_set_str(table[14], "1001057897919264913898056752999698513328670461115886374304687034763697867971", 10);
|
|
mpz_set_str(table[15], "11961826954032588591745697380610775802434702597428828622863524197168690192704", 10);
|
|
mpz_set_str(table[16], "21719300939210305969336098672434704978644727386282683375797180914132352647081", 10);
|
|
mpz_set_str(table[17], "20453261227160641682983540960072213023042543450742671631864688999932994522613", 10);
|
|
mpz_set_str(table[18], "6688983196951156663368010771635876014643306651412273525340890404677802990925", 10);
|
|
mpz_set_str(table[19], "4329154909589481026794874206365184995137307020487431828235471079255153097124", 10);
|
|
mpz_set_str(table[20], "20325703716097484328542721016811239537381679153530208986569993689407256022107", 10);
|
|
mpz_set_str(table[21], "17129805598995142684907479478577672063861620183999483700890055263589330374369", 10);
|
|
mpz_set_str(table[22], "17626867705954721998808081461454564919455319262600774701457347225857871402252", 10);
|
|
mpz_set_str(table[23], "6476877185714610927878101542892313487041395393552616927067505163129600889254", 10);
|
|
mpz_set_str(table[24], "14453563974743541630501009650505073017082333546432723218044789842310325612592", 10);
|
|
mpz_set_str(table[25], "16697636864004950106851433052186891762936466379440718045270640770134549628983", 10);
|
|
mpz_set_str(table[26], "16336674064314851614598481721706263435060040374841423735400910189293645280257", 10);
|
|
mpz_set_str(table[27], "8643211243739084707684167937814313951250086187718900960591235775032686826058", 10);
|
|
mpz_set_str(table[28], "7229789946143905262758593287001330902886040426051310686284434676444730461489", 10);
|
|
mpz_set_str(table[29], "19515735738256349212167994764047635285407275421276140212886542730371119812132", 10);
|
|
mpz_set_str(table[30], "1306200308139743373499206147170159234654094600717342494219942953142013964121", 10);
|
|
mpz_set_str(table[31], "14902929803127111256459071785248970670810887660129923405529827222127335396956", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=8
|
|
*/
|
|
void EscalarMulWindow_8a817791638c788c(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4888136755887548458736137558751290520252510159838688780934499339730661336887", 10);
|
|
mpz_set_str(table[3], "8045182454056122038334995490813076640902705577725505071179760811662775533287", 10);
|
|
mpz_set_str(table[4], "4707718335866205590821127522634187193893956013471850612191382701068690358110", 10);
|
|
mpz_set_str(table[5], "12616986710715852761430502133036506881381430082511453824810102320032285252420", 10);
|
|
mpz_set_str(table[6], "8474545829245280705438810607022100876485976341434114568447927952585072070096", 10);
|
|
mpz_set_str(table[7], "13257362948581236174493065293833589402318622435238077410808789863766025475596", 10);
|
|
mpz_set_str(table[8], "2284971236118159637795435604157963666497151957964113764944401766777791353243", 10);
|
|
mpz_set_str(table[9], "21295034208782650311864455974071790640311399176852592105237671419235475989836", 10);
|
|
mpz_set_str(table[10], "11337163204383659330318732546273292342109166814523743433003008693091772799617", 10);
|
|
mpz_set_str(table[11], "17372059106790278103966691675948566004139966205121679300419852859192599945222", 10);
|
|
mpz_set_str(table[12], "19174077617038844599562100614027325309645085302610884230842261135413647345264", 10);
|
|
mpz_set_str(table[13], "21812413513058204811359699655543922329822362339098083538977769446800088958694", 10);
|
|
mpz_set_str(table[14], "18379685254134779434206714344865833928571234289581223465904305008334467213227", 10);
|
|
mpz_set_str(table[15], "13977970906502195816767053426564182896465327159304171861273808073830560444852", 10);
|
|
mpz_set_str(table[16], "13913230509000240030418535763044623348995851945830856321470675781189941060270", 10);
|
|
mpz_set_str(table[17], "10704444671848051590686015586308748841660651630338942934797538287144904345222", 10);
|
|
mpz_set_str(table[18], "12306143812320135300291143616859322652369153919646756679335340762083853222688", 10);
|
|
mpz_set_str(table[19], "11215230859057581114602129078023821452246254660839798599005880420132997947349", 10);
|
|
mpz_set_str(table[20], "19949756785350024959941282901515649485325534245205679859231439243717522124403", 10);
|
|
mpz_set_str(table[21], "15911591928499127282066443519991156153110806473026639657579917467365534724988", 10);
|
|
mpz_set_str(table[22], "8567981818297665123860819607155467865529335698989977274239775073911444544930", 10);
|
|
mpz_set_str(table[23], "20994142232702052824908265107277127000680266832039291931249748306241787844791", 10);
|
|
mpz_set_str(table[24], "20686672495093347004626369122608156769123774114009290372048917304937904522885", 10);
|
|
mpz_set_str(table[25], "15178225316396866308378338582424637262447466085622109818180851173262809562837", 10);
|
|
mpz_set_str(table[26], "20700655209652843149305136845371051230645623647757487066289603661741658346467", 10);
|
|
mpz_set_str(table[27], "14595139838565171084145708418002338749266829368743709625855308558124863161120", 10);
|
|
mpz_set_str(table[28], "2642505462230357493978998294670651882384664314032710169461744708420848222272", 10);
|
|
mpz_set_str(table[29], "14006548708426651013908646882496035559246730330230393257394283183226384168497", 10);
|
|
mpz_set_str(table[30], "4823634301877161950052014962396374904828625331905947510450953591356916732342", 10);
|
|
mpz_set_str(table[31], "13978665686343081797529931728257642748657915225026950983809650871159942043616", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=9
|
|
*/
|
|
void EscalarMulWindow_8a817891638c7a3f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "14392666584016431061370266677995476241875374542231426119230651372149502582351", 10);
|
|
mpz_set_str(table[3], "66225971351226860555745322617284829458484282176684455868646629122675256444", 10);
|
|
mpz_set_str(table[4], "485199691192871257688115544311139959017759100528583874431916044885638397874", 10);
|
|
mpz_set_str(table[5], "9699938951644413178903993187150520256951040422157510278309597565671792849610", 10);
|
|
mpz_set_str(table[6], "2595607140210170261290628709835520141081633734713543652560415677738296555954", 10);
|
|
mpz_set_str(table[7], "9695332069813308406042561223596510643220316193295157119891417448538942943499", 10);
|
|
mpz_set_str(table[8], "1437917280108914885189724497466243283477490664582471879120892112128068082697", 10);
|
|
mpz_set_str(table[9], "15307433244740362820450471032555788262039487494048352243080829630606214655811", 10);
|
|
mpz_set_str(table[10], "855969964811906346010743263563452371648984806422553257966545336978471197059", 10);
|
|
mpz_set_str(table[11], "836181924930265617418971139619982716045130896685804294579114237671053490158", 10);
|
|
mpz_set_str(table[12], "4335450768929135102997782435994431198285892392070577465086986821369677100946", 10);
|
|
mpz_set_str(table[13], "12600323862045901795283092102095437359011105590455896668175414199754440213680", 10);
|
|
mpz_set_str(table[14], "21787759461957311942967012934978428987670145375006042105741286678276835580970", 10);
|
|
mpz_set_str(table[15], "17242090291245779401502371665121596674364645480000906589019619236088992868826", 10);
|
|
mpz_set_str(table[16], "12408800755104460517235188504357780681292564645180958147840010959619787066560", 10);
|
|
mpz_set_str(table[17], "16205369603740153520729740943167659313050557216102628692844498072917394003839", 10);
|
|
mpz_set_str(table[18], "6892738909474373874944861763143982325565511932540154035829883455117299421093", 10);
|
|
mpz_set_str(table[19], "1040755370900746605928411055724625378522990046881639817161339039817907068693", 10);
|
|
mpz_set_str(table[20], "15048455963139536655833063700714044628907986752734434884419211481829993831244", 10);
|
|
mpz_set_str(table[21], "2626660769740051470160271797832900916837394302051759656896564175629113945383", 10);
|
|
mpz_set_str(table[22], "16876977790832671002745762264253746289637891030470244132400743082513649244615", 10);
|
|
mpz_set_str(table[23], "1598394011433740560513193119540044467961903112334484885938744727873699132641", 10);
|
|
mpz_set_str(table[24], "9355195150709234577080554783149944158889458437204408531046409892945480646919", 10);
|
|
mpz_set_str(table[25], "16323162977104162845901600868001171425085795328591350810440376484407731185207", 10);
|
|
mpz_set_str(table[26], "19119686481324947128929259173521918520753225410928048551701130161791462454313", 10);
|
|
mpz_set_str(table[27], "5969827327422986316003420641296569332244415662231141979781463673457966942201", 10);
|
|
mpz_set_str(table[28], "7292083159810360742183767336957217851772607559079821447221078542221696197224", 10);
|
|
mpz_set_str(table[29], "11060060645561768633086255189035870067870470495567114078557414129042277936317", 10);
|
|
mpz_set_str(table[30], "747357122757882496462826560533366388757001439657389104774684800890404769423", 10);
|
|
mpz_set_str(table[31], "6217828469201264039076990047710929698750797266478292248089409259837920256735", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=10
|
|
*/
|
|
void EscalarMulWindow_e6955e0c27caed85(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "20361211142478617929322832251348360766371561505165322057813543895777653688807", 10);
|
|
mpz_set_str(table[3], "7720847332287658112391035368674462378880944025513946193241421401524560723374", 10);
|
|
mpz_set_str(table[4], "19836457202936052088053580821357357262299502604592150459440095339333515236997", 10);
|
|
mpz_set_str(table[5], "7989971350986700441512122750798828134102939565725340088235077429177142314696", 10);
|
|
mpz_set_str(table[6], "5093941028160539078398141203132019477309564551644167622249216114666581368694", 10);
|
|
mpz_set_str(table[7], "21622286600266773181786173872134891748536286083980403824274215251510798697816", 10);
|
|
mpz_set_str(table[8], "5341454683820540059886068752211480655549586158458781633093819459770248823563", 10);
|
|
mpz_set_str(table[9], "722084453313468124098012269031763291544030295440046192079097277830445294726", 10);
|
|
mpz_set_str(table[10], "12383787100751844934177772618313993803020585089264454200337093580737926886641", 10);
|
|
mpz_set_str(table[11], "11461096535276407173122835067709178917974375202402225745304896511090745058187", 10);
|
|
mpz_set_str(table[12], "14012431958774534026707918346344894245771690306135809328705061761298919899988", 10);
|
|
mpz_set_str(table[13], "5029393341094852930642926045997523554135247170389262246988649129264967832267", 10);
|
|
mpz_set_str(table[14], "19398195757550054940339194627375585634177280216479616823169872236721997129321", 10);
|
|
mpz_set_str(table[15], "9894925754866849782337688791752188178686065455775974100979256399479679534678", 10);
|
|
mpz_set_str(table[16], "13667518277431329867898208499282766533424487948939991189767908122942211817156", 10);
|
|
mpz_set_str(table[17], "17938371561404345797831935261950956431059634946086232408351558984452516087671", 10);
|
|
mpz_set_str(table[18], "11122000103090960950703254500957516254286139138773423732307093683729105953953", 10);
|
|
mpz_set_str(table[19], "19202935301740120381424849790833665310852282765012854305529238796681392353884", 10);
|
|
mpz_set_str(table[20], "19411643216740576041388070440636673354425023624279731275148447643470533176108", 10);
|
|
mpz_set_str(table[21], "17943406513113907697079800031621059187704226867382695473796304307147980548978", 10);
|
|
mpz_set_str(table[22], "2093472171194815147423313598724689865552536934700615244812202566868735165877", 10);
|
|
mpz_set_str(table[23], "217121898847118066968265343115284384382609494705235033397096191493220358680", 10);
|
|
mpz_set_str(table[24], "21730567621944329666740276746935641916756949876990540083416805095812473298511", 10);
|
|
mpz_set_str(table[25], "2742331690620053548929597484252332827485567535167060149256870274544281015069", 10);
|
|
mpz_set_str(table[26], "2265917002229290962037728573397694532981947172398479965202906048595835435904", 10);
|
|
mpz_set_str(table[27], "11896434941996349809268496612359605556183243453877202147139509958528614525099", 10);
|
|
mpz_set_str(table[28], "9851903387322129477802340563057521355334646777579058834816886344374028709183", 10);
|
|
mpz_set_str(table[29], "19664917765333760896588538992098112258300061269501383409550266721114664417869", 10);
|
|
mpz_set_str(table[30], "13557306798066104563543696608067587401751889285647949108849287625945991897160", 10);
|
|
mpz_set_str(table[31], "13201528537934914656108851035478997564257665545218852903604367843764289520553", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=11
|
|
*/
|
|
void EscalarMulWindow_e6955d0c27caebd2(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "21198307553188557840674416595861921102643943996644836140576710647837505121191", 10);
|
|
mpz_set_str(table[3], "8486897366735499578342411927300032398861749534106806748708254887195429814714", 10);
|
|
mpz_set_str(table[4], "11907183312356474599598395230603943849223699932826123897514352441828826549655", 10);
|
|
mpz_set_str(table[5], "115414612007510769997441890387686681299270578556303120460163008793867737300", 10);
|
|
mpz_set_str(table[6], "12008164561134226667166915483475445214894491640168864847501109146314404037016", 10);
|
|
mpz_set_str(table[7], "1998250265241791192807567306880793109956200709221181692818595253920510842869", 10);
|
|
mpz_set_str(table[8], "14465659935435067428242191803896424556358050908158478982532965759737416638391", 10);
|
|
mpz_set_str(table[9], "46591929719995891587317598544673747274505648568646107030457210252112232211", 10);
|
|
mpz_set_str(table[10], "4639165636404831429025689649526249382212715920941048877616340988481069338312", 10);
|
|
mpz_set_str(table[11], "5101588537555727893777370321204298512116074682415534657357438018311244961112", 10);
|
|
mpz_set_str(table[12], "179410057434168342906464145544812694852069933120245430229949419159981426906", 10);
|
|
mpz_set_str(table[13], "7695516875485310118844092773966973097957930556442670262323959281491994433115", 10);
|
|
mpz_set_str(table[14], "12683550083733369011440086364491019222088425588874390710788576264914142440960", 10);
|
|
mpz_set_str(table[15], "5694948114741864866240681009450947435252051335267634097805434165868160801782", 10);
|
|
mpz_set_str(table[16], "10724211750162894341858286653187126858727209348645058793237618331955502601156", 10);
|
|
mpz_set_str(table[17], "7404460343826361878310069770697755540627651028947710330320611132691144506559", 10);
|
|
mpz_set_str(table[18], "1011170870375244730350333627815408632571247698112378278848951880844557316980", 10);
|
|
mpz_set_str(table[19], "15839603285187070925446911844129559981300686209269995113230508481293613865756", 10);
|
|
mpz_set_str(table[20], "2966612230474186285505233270277233118605232383741804140458053968962877154542", 10);
|
|
mpz_set_str(table[21], "13702056390780476051263475408543339551228516609913108580223589540885452739154", 10);
|
|
mpz_set_str(table[22], "10963234875495494601395535836243998941272642760952464991497708069444262559963", 10);
|
|
mpz_set_str(table[23], "2313520401681800825415168240027059682003498260489731314978285350627677801694", 10);
|
|
mpz_set_str(table[24], "11034676630727630465992071313438030599204014910399338092870866086372070510430", 10);
|
|
mpz_set_str(table[25], "2060048681445111788650301830220172336819820520964630499489820926379279481510", 10);
|
|
mpz_set_str(table[26], "2774450720991608895558431208622796553538525207994706762219257872508653556024", 10);
|
|
mpz_set_str(table[27], "3428484919643505156893699812728369438055460535778176776923034814683617936057", 10);
|
|
mpz_set_str(table[28], "13727651093264767308318630844306701587568511903238944307513013210976622573656", 10);
|
|
mpz_set_str(table[29], "4853566076707666529275856983695806185544001245561094515687608931511302679988", 10);
|
|
mpz_set_str(table[30], "19350093072616770865787416601808923840896875448915275598193881451430045444190", 10);
|
|
mpz_set_str(table[31], "20972943759177552012956670836637021009913280735465683487859400257087986794196", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=12
|
|
*/
|
|
void EscalarMulWindow_e6955c0c27caea1f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "2245347420758998939601654915995759625570985735341286336862442404872284134277", 10);
|
|
mpz_set_str(table[3], "15600175216381544552162631322926832543867192616889508483792352405318394642470", 10);
|
|
mpz_set_str(table[4], "14713865636919274091387959936103511533017542622393004097024935873614305897986", 10);
|
|
mpz_set_str(table[5], "17082625238523827448579554042313125725489283468823329082230295837384544233360", 10);
|
|
mpz_set_str(table[6], "4130026987217455767293805517306273233305342983329742849082125930467911416664", 10);
|
|
mpz_set_str(table[7], "10427566142023265496688306087768308692554502369400973363134953889632181224913", 10);
|
|
mpz_set_str(table[8], "6432639534516096181991465779290379785562296854334528132085060549479709848596", 10);
|
|
mpz_set_str(table[9], "1784795157568636441341662901777646713310578755953977660795499303703719571112", 10);
|
|
mpz_set_str(table[10], "4188448501446497232967490158035521078116554185178851266709803061285616915224", 10);
|
|
mpz_set_str(table[11], "18716609095958144499747870698088891449596409740920092406022692563942168106153", 10);
|
|
mpz_set_str(table[12], "11411143655461973929715106465762266920378002689451141098350251890901080754639", 10);
|
|
mpz_set_str(table[13], "4898331285085817394186656633537281460866984315900582467822782217930629428800", 10);
|
|
mpz_set_str(table[14], "18706504029181538330837254521202224871170423469228154336979744558006722716627", 10);
|
|
mpz_set_str(table[15], "11425737589440965626741300958354870954297271473381910590120025121312944309519", 10);
|
|
mpz_set_str(table[16], "14373297324723915662114010513594200237305079767549879990374133101163954873458", 10);
|
|
mpz_set_str(table[17], "12045492905144839731840907843406000625454021439217533469599751608893972225697", 10);
|
|
mpz_set_str(table[18], "19340989026995676830834288982924328205918588128160356789649480022935938198158", 10);
|
|
mpz_set_str(table[19], "19752302409498079714867589577926877405267276060968957871070901857256661726904", 10);
|
|
mpz_set_str(table[20], "13464875825580746985517504034538589218190085341524823968835123538888636945009", 10);
|
|
mpz_set_str(table[21], "8167772782583493720839381230687433814612677789514088304123412844438607241121", 10);
|
|
mpz_set_str(table[22], "4744904024698765717952474357298703055900563249035813028371198731432509923289", 10);
|
|
mpz_set_str(table[23], "2823120529755392839175955074757632624330497277595719362322612087619994941261", 10);
|
|
mpz_set_str(table[24], "9695157492707235559874372581215361762782235869574540976632726494241962301237", 10);
|
|
mpz_set_str(table[25], "21373123160048467958919275182570525520676861218159828303727159127127593554922", 10);
|
|
mpz_set_str(table[26], "15438903139881052863241187342839703536770433555405846571728272078532995082881", 10);
|
|
mpz_set_str(table[27], "1543603774684625087996312027447844378316307241548186021113635683648320181719", 10);
|
|
mpz_set_str(table[28], "18726865242160767157127530668053720978006703713376239560987532445354419204351", 10);
|
|
mpz_set_str(table[29], "5926539098260937576132254761980048389949550146457836951695936714501148551838", 10);
|
|
mpz_set_str(table[30], "19037522830886200238496308840217816377880495211080114221275962396131691377387", 10);
|
|
mpz_set_str(table[31], "12749637905634617692307388131106696770111381313017158407997328078770530837740", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=13
|
|
*/
|
|
void EscalarMulWindow_e6955b0c27cae86c(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4092213701451706983421451188429404938730274104365496627715502983148034881365", 10);
|
|
mpz_set_str(table[3], "17793652202913438129989529738660378946020613503107319358235937582964372639678", 10);
|
|
mpz_set_str(table[4], "11930436627630820972865983369632835385367920927579552565277074705346972639623", 10);
|
|
mpz_set_str(table[5], "9918552317041935150997218140636443022160505100677547029559924853649552764668", 10);
|
|
mpz_set_str(table[6], "1471219075881024374457272705680818525101798378348921919930008272829546277026", 10);
|
|
mpz_set_str(table[7], "17051853606173695875486117250441221308458718054091039533732662655659589151922", 10);
|
|
mpz_set_str(table[8], "12087843304878022388655817917721571564163932537830088640246521337576020950600", 10);
|
|
mpz_set_str(table[9], "4084795181125416995646851923845414765385547454014098157614130447188900627946", 10);
|
|
mpz_set_str(table[10], "1810775050179665154818001977851498185923554044640089228433226321159491434383", 10);
|
|
mpz_set_str(table[11], "20066530790299499783486518088429744183934930139575767620805627953005193764246", 10);
|
|
mpz_set_str(table[12], "17324807295416975789879562398972586541363122087738814227711509325208663721738", 10);
|
|
mpz_set_str(table[13], "14426381127567588742051902302631726575844365575849847669913699864371310260722", 10);
|
|
mpz_set_str(table[14], "7847460266676931542476622121224084681018228345553823201331428517420386952394", 10);
|
|
mpz_set_str(table[15], "5818923946956804780352206579452314631743217554075593994088654568090420154901", 10);
|
|
mpz_set_str(table[16], "4248846726502195915173240346834948714999010286170778883112240286154201952104", 10);
|
|
mpz_set_str(table[17], "7632923667592291289557139255975057139747337016692743142228858776103199664278", 10);
|
|
mpz_set_str(table[18], "19024162230503116686255250476367589888459974926057445284461264086806538778867", 10);
|
|
mpz_set_str(table[19], "1202513615254711348911745822650872570789134083290576514775065814850788677359", 10);
|
|
mpz_set_str(table[20], "6224305771315374284734872626599693896570675031967690266987469786804372856578", 10);
|
|
mpz_set_str(table[21], "3530300870942886350704766815315787795571868570095125871349234225278352515548", 10);
|
|
mpz_set_str(table[22], "12390816528108879345589592952441588328101994806720591386452636692705717659236", 10);
|
|
mpz_set_str(table[23], "17218869607347433174736907703022554580657198141224427837254456611728755854040", 10);
|
|
mpz_set_str(table[24], "6618636545466035375932824422591883022916218856904792104037999057184464910127", 10);
|
|
mpz_set_str(table[25], "10198677541515604372458184317401496736720254142883990874208587798605183791315", 10);
|
|
mpz_set_str(table[26], "14413275103636465561016184267040054208360781504208805792927035947659891511197", 10);
|
|
mpz_set_str(table[27], "1348472316920548112882160252515348571001775397511284392517972772202557707501", 10);
|
|
mpz_set_str(table[28], "12600929613358523599405700037817948085436664561586929667937447861190247132445", 10);
|
|
mpz_set_str(table[29], "19369234812379679318064953129273060230610856817150760020483509620755516617954", 10);
|
|
mpz_set_str(table[30], "17758947516728063757985703522427945963218668227181991298748549353809987743225", 10);
|
|
mpz_set_str(table[31], "18070337596977817585149248772943298633173257200381629950059698812143441512345", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=14
|
|
*/
|
|
void EscalarMulWindow_e6955a0c27cae6b9(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "17779059894087356572227327102786279369030113869405414408135868357363844731965", 10);
|
|
mpz_set_str(table[3], "2328409910752853022546763316586250201350601552222316917735210220203738637156", 10);
|
|
mpz_set_str(table[4], "4249426964365172719920270929525397535868778967365753653579283745016664978011", 10);
|
|
mpz_set_str(table[5], "15020622618196256624082775358907317933079721990116496693064897198125913914308", 10);
|
|
mpz_set_str(table[6], "17244801856314402077335104689146525196060834720208615275177080437772071310141", 10);
|
|
mpz_set_str(table[7], "3388585943978364820288092081718529089585865922623586825418596639981421469449", 10);
|
|
mpz_set_str(table[8], "7859076674731565208968997439315163737987493769575570984237687199279755082574", 10);
|
|
mpz_set_str(table[9], "1357559521562969693511321565426644733540418620658500295933263453294924051330", 10);
|
|
mpz_set_str(table[10], "16161060698916004028333246304424642857206015654481621693382543447174966445278", 10);
|
|
mpz_set_str(table[11], "17823497092938548913896021782411753411337913475841619024848476797419756808886", 10);
|
|
mpz_set_str(table[12], "14175498322298878519036832519215284462004085466033760038320160582340861796702", 10);
|
|
mpz_set_str(table[13], "18957416875983044281235379823255058750116379101389129247035954106812825384038", 10);
|
|
mpz_set_str(table[14], "12474348198020880659670989520670491881100378257819705899243657076957126525434", 10);
|
|
mpz_set_str(table[15], "14868753699029029411994959760692956119744418579996458495253787307769615445331", 10);
|
|
mpz_set_str(table[16], "2072604572856849996118086748971994241569621842227724611314640483877164720890", 10);
|
|
mpz_set_str(table[17], "6177760074914096077332065839411798022497129487778918582154300659711495071167", 10);
|
|
mpz_set_str(table[18], "12703885648648298697057920089743647645116061208434544261384001242841993572016", 10);
|
|
mpz_set_str(table[19], "20205494493768526302905082944408326714300722062529947538173468971846075454170", 10);
|
|
mpz_set_str(table[20], "17479863575217104067907226202411754435124411447227168333277100081352589545061", 10);
|
|
mpz_set_str(table[21], "12293780854507134802651095011199348704332167417624836222990254172912911320079", 10);
|
|
mpz_set_str(table[22], "8558007797982939123754140378051766266754244359012612039895275544393797945369", 10);
|
|
mpz_set_str(table[23], "14925893803508054460499792517137824544350401886442688791315696630611319130879", 10);
|
|
mpz_set_str(table[24], "30783169846240288545096502405237995423748948038561734366526935932169059666", 10);
|
|
mpz_set_str(table[25], "14965887452636090372377108590180974781725357719383225713794164799471566792181", 10);
|
|
mpz_set_str(table[26], "300704248545831258587054612142812126546226502557278422354350618503240718575", 10);
|
|
mpz_set_str(table[27], "18508954300746009354471989540537599220684253049204198342398877648296684724908", 10);
|
|
mpz_set_str(table[28], "11950855798893731106082339624511307389765591106567591203096213607304046337854", 10);
|
|
mpz_set_str(table[29], "16712492673422169415412311716459251218615374349109271649234601343131043184571", 10);
|
|
mpz_set_str(table[30], "19603509089876781156532105957376291076165355281826172007213555416636455928408", 10);
|
|
mpz_set_str(table[31], "21070404643442440238002764266236284070715796944413636848692970257727353770553", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=15
|
|
*/
|
|
void EscalarMulWindow_e695590c27cae506(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "423262405806741856453467552437191110943449074516076654517690366110662887142", 10);
|
|
mpz_set_str(table[3], "5821598692871327127790265153450790237441118952595259277838443277944753918858", 10);
|
|
mpz_set_str(table[4], "19084171342624229095574789283636708256479388400563532006203339823528805279739", 10);
|
|
mpz_set_str(table[5], "7876256815944134472589007163636851702847231634040527792189163010928562071586", 10);
|
|
mpz_set_str(table[6], "20015992494605509459918247649355165975143760660682132993050570364486308299664", 10);
|
|
mpz_set_str(table[7], "5020896878938623851536712703737884113946536293720348955754765178962577770203", 10);
|
|
mpz_set_str(table[8], "3527451134099029201046780563600675019708670110572416347683813902306473212920", 10);
|
|
mpz_set_str(table[9], "152077109331720324836754822966517188311278098441312028621008510069260382192", 10);
|
|
mpz_set_str(table[10], "16390670180070236116015764572577584813119708452219458629684557968685238399571", 10);
|
|
mpz_set_str(table[11], "1606961266972646000906512364532658965396200302916648542982621156853114712945", 10);
|
|
mpz_set_str(table[12], "3516159058656497722036861333831290228548887091683711536469842055497058000435", 10);
|
|
mpz_set_str(table[13], "7794024361678874424894512187791487732218419722927940126607220943986556977764", 10);
|
|
mpz_set_str(table[14], "13587159961357308304449437527458632267817908953102264623588753230664467550572", 10);
|
|
mpz_set_str(table[15], "13025515381118553214534871233703966582949056430011605081972534899681059843072", 10);
|
|
mpz_set_str(table[16], "3379500887852182176198435393440886544701373997861912596324907826584799597781", 10);
|
|
mpz_set_str(table[17], "21325352476176470557263509850164969716951279702106311082939505954894610104808", 10);
|
|
mpz_set_str(table[18], "15862993518009461331529344023740928273190119759942075926693529957985784396064", 10);
|
|
mpz_set_str(table[19], "5704397868224605965441723755110116902270812496571121115153436935891514472446", 10);
|
|
mpz_set_str(table[20], "11237721199213012134172757784497616723953217832076135628348477412391661505698", 10);
|
|
mpz_set_str(table[21], "15172658004049539646757237014588943751494352570679239369087218661914350981054", 10);
|
|
mpz_set_str(table[22], "9220526738427911320952231865655681379690667959730262712160712063588372497502", 10);
|
|
mpz_set_str(table[23], "21685179430160098648244308814438386707560408104194799861850477231642799900382", 10);
|
|
mpz_set_str(table[24], "6625576931122133302463563334617882057903243032081248639331250555608604850938", 10);
|
|
mpz_set_str(table[25], "2061452977735715482856930888437796178444867837900651237034207457133067834207", 10);
|
|
mpz_set_str(table[26], "593094746615633977769310038643117733320498696970488234483744033706915835478", 10);
|
|
mpz_set_str(table[27], "10635470850898962244064401750419878765514394447457872569398074817467300542063", 10);
|
|
mpz_set_str(table[28], "16462922282420858160324657155640719344929066745413973267682588241346193994431", 10);
|
|
mpz_set_str(table[29], "21103611084476225987205556872841552833963417786929607438225110976093765620882", 10);
|
|
mpz_set_str(table[30], "5295156621155114539472539804011402261531162865079512645408935293189970824781", 10);
|
|
mpz_set_str(table[31], "1745666707826988476708736645981628943792814888220610243504699383565568902007", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=16
|
|
*/
|
|
void EscalarMulWindow_e695580c27cae353(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "13673742648586412167973390593398110038460134366916722178249500508067777214401", 10);
|
|
mpz_set_str(table[3], "15153854928186390613089538110391429883429324114698359329893828068591912384924", 10);
|
|
mpz_set_str(table[4], "14086366920345489600294299402406463424534933247544640736526073747648683530543", 10);
|
|
mpz_set_str(table[5], "17953005418808413954218877176527531523109883488457469119995129848659058111732", 10);
|
|
mpz_set_str(table[6], "7188067729446111956185059007412149525812314846009684638157692459778095090561", 10);
|
|
mpz_set_str(table[7], "250533206918719832354080542968881818562813203850084947078357483696534154226", 10);
|
|
mpz_set_str(table[8], "11141010770936235778267696314074560879820287224539894280527409654579468401355", 10);
|
|
mpz_set_str(table[9], "12541596359563940232820840149414845048948332822490564006200384437768366047625", 10);
|
|
mpz_set_str(table[10], "9420274270603019033608124025135061690642264375167389719883841080689952432565", 10);
|
|
mpz_set_str(table[11], "3950897603186404710014778954124240548138424459091498250365433022567245775188", 10);
|
|
mpz_set_str(table[12], "8380793094791398545005772410981404244043084629739302591073362302431561529847", 10);
|
|
mpz_set_str(table[13], "1710354099589138508952439251039738395982680457280308210969074628864066408532", 10);
|
|
mpz_set_str(table[14], "19666430225967680828553398542227135818809470198121780169520949516269528303155", 10);
|
|
mpz_set_str(table[15], "21308969666085519878937772163236795038117616515466974334611923989290881101920", 10);
|
|
mpz_set_str(table[16], "1864688919425172582901176226686519981673837470649313877770968918640342831622", 10);
|
|
mpz_set_str(table[17], "21541515704901196796528447446114142415692035400266185591088487293537642122535", 10);
|
|
mpz_set_str(table[18], "21711317258635983012742628538368142078544492503535857358103428156920898392923", 10);
|
|
mpz_set_str(table[19], "3147148199278303661020530236335764597055926445880998300559261919787462107204", 10);
|
|
mpz_set_str(table[20], "14649344050441883707513106132599985820354259133208401765169478669411385873210", 10);
|
|
mpz_set_str(table[21], "11330655277064737956701043407974887580653645181285246026977434064183062608591", 10);
|
|
mpz_set_str(table[22], "2731878170105948130666723179176869428833202729535598821213953046536610235137", 10);
|
|
mpz_set_str(table[23], "21681581585186625779352495977987369647182072747060769489020375085501671988208", 10);
|
|
mpz_set_str(table[24], "19108227063794066786285438106669139907252201688445841688637054359944873786303", 10);
|
|
mpz_set_str(table[25], "3791567753430001147104120981816124554557464174760301146314040411733099763153", 10);
|
|
mpz_set_str(table[26], "17421192848581767531262021609281960868684458668010608747438233190304005895632", 10);
|
|
mpz_set_str(table[27], "1387758121382894023538119922883613164816025901331058952477955849082540033969", 10);
|
|
mpz_set_str(table[28], "20733966020068005859445093350305664601623171392000968480892183702282777318412", 10);
|
|
mpz_set_str(table[29], "18583770857949903712514354200683653597557898839561369836551952242513017409859", 10);
|
|
mpz_set_str(table[30], "4326826542511768684940275292218624545040747486405704341406195469440356115011", 10);
|
|
mpz_set_str(table[31], "21714779059321849837236921059022211106966726817757022040500807366635187465810", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=17
|
|
*/
|
|
void EscalarMulWindow_e695570c27cae1a0(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18697830820747369862818107604423804812602341785181434790209421536046851564778", 10);
|
|
mpz_set_str(table[3], "11539488201447339629953416808120094534361385427330186126655240041232739801455", 10);
|
|
mpz_set_str(table[4], "5207064971754711715584022540143552143994385843040148457364832940872161067274", 10);
|
|
mpz_set_str(table[5], "18858648787888455728559470941883346609945171301867546198786117369203554407325", 10);
|
|
mpz_set_str(table[6], "14881415147963441466719591747385961746042162836505585349051285204846778454242", 10);
|
|
mpz_set_str(table[7], "21520354740499411303496037816382454442091701826916392899394997083789811518044", 10);
|
|
mpz_set_str(table[8], "390098382447767190982601356754144582047756793010573561674530468565130005298", 10);
|
|
mpz_set_str(table[9], "5611458464882321581874244734012086917894599810551663437993947968904892579952", 10);
|
|
mpz_set_str(table[10], "17296929351693435105217701594275476254423148100622890751783867985800290971581", 10);
|
|
mpz_set_str(table[11], "654665264453508269374430455158162365524512478454248573088692011960483721526", 10);
|
|
mpz_set_str(table[12], "10185241660253897094431825256756938641250445976574939921126671915394640364158", 10);
|
|
mpz_set_str(table[13], "12267093644468108766834368003036679992781112009019839956293681664142766596792", 10);
|
|
mpz_set_str(table[14], "3757291619675613323086416221359657888317617290639704141780963808253967321799", 10);
|
|
mpz_set_str(table[15], "18789844804651422155922217369669256490380864683801279421538978664075834206803", 10);
|
|
mpz_set_str(table[16], "15038013445974030210226312173302604299782417377463336629646867686239759540160", 10);
|
|
mpz_set_str(table[17], "8766393721130999332560660228490707042688972062902432684608359836188319391021", 10);
|
|
mpz_set_str(table[18], "2859848204130892831504747832165793298470965479110097700796011997502483355139", 10);
|
|
mpz_set_str(table[19], "5745650640780073915096459013280252744216760267659730264259106058547270430146", 10);
|
|
mpz_set_str(table[20], "8118361704753430650102336829679477113449716483239345834060058005733238848602", 10);
|
|
mpz_set_str(table[21], "8303921291423077955057063829308214078039980895060694751597677127009797093954", 10);
|
|
mpz_set_str(table[22], "17475765136846321057386870807802759443162287492338094750152139224989348692222", 10);
|
|
mpz_set_str(table[23], "10232111231604638574549990969871435952172655729432029678526665492565707527923", 10);
|
|
mpz_set_str(table[24], "3105936608424393704733128510781825709845341515380419966220226599811368250369", 10);
|
|
mpz_set_str(table[25], "10889413405732414258721097394812067810935850529655097676996803038772702348400", 10);
|
|
mpz_set_str(table[26], "14793717548628830425036623072175273325474708379407922825900640764910903474843", 10);
|
|
mpz_set_str(table[27], "2801190169295877274789958017512670277700721482168044384184698741437044268810", 10);
|
|
mpz_set_str(table[28], "13498571610580730994466628231215171603843682927224882391896974684628609048434", 10);
|
|
mpz_set_str(table[29], "523251342147181654372725839079151558931332486013985622615293078279863278860", 10);
|
|
mpz_set_str(table[30], "12083598852191563441940388724287463910411975370779524202844187656946257599152", 10);
|
|
mpz_set_str(table[31], "12049527931656405181261031923035041309077868546808493626072700786196661899439", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=18
|
|
*/
|
|
void EscalarMulWindow_e695660c27cafb1d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3379399181699432623217731510552154316202713990781648613218490208311270562931", 10);
|
|
mpz_set_str(table[3], "10843172049773670618847385298229699253090504724495681049657926722247413594206", 10);
|
|
mpz_set_str(table[4], "14450248596460811383463621049248166504478681759608610076046949290640449826731", 10);
|
|
mpz_set_str(table[5], "3267178159467603284343355542430787551407027131759407913239021434671761847922", 10);
|
|
mpz_set_str(table[6], "12276701952657897291522073256988116333714581502742580546355221628133509526283", 10);
|
|
mpz_set_str(table[7], "19628076275083041844585341704276483246810841615692306681621002929075216962132", 10);
|
|
mpz_set_str(table[8], "7836859926450919877392120543511887050200836970258849183524929885412009975572", 10);
|
|
mpz_set_str(table[9], "5290105560450361023117254506795255266192778633174124871604526803022892152977", 10);
|
|
mpz_set_str(table[10], "12775319610399810211576125106746148104640396577705143761824887075312989156479", 10);
|
|
mpz_set_str(table[11], "4844450962757146340769785944220536747207173906342842768226923464392598683670", 10);
|
|
mpz_set_str(table[12], "2199989780260332865856459579875939893218366948316638554485144631557561507080", 10);
|
|
mpz_set_str(table[13], "1664500376583587314841324394496401407727486534559623483032338283391356988842", 10);
|
|
mpz_set_str(table[14], "14237539326374514604959623487456571185100490104875487400668998754288228106703", 10);
|
|
mpz_set_str(table[15], "11371911393534201524121140820879016362055034651119156810853760003987338884417", 10);
|
|
mpz_set_str(table[16], "13574292992612715305482056774524172214479202315848802894891300107368000824755", 10);
|
|
mpz_set_str(table[17], "20217291280820077572468081599924902384629354106755300130023851694437616357241", 10);
|
|
mpz_set_str(table[18], "17332729190444715821932502887166457272095696917189529950018485836811171781074", 10);
|
|
mpz_set_str(table[19], "8928571711955816190541028868163833311345675545855227592104872357692329080326", 10);
|
|
mpz_set_str(table[20], "7799640264959817050048971275919550445796424852011403014499619703139339854165", 10);
|
|
mpz_set_str(table[21], "18615349518994979191330979165097072614971723389820866626957446795183019690572", 10);
|
|
mpz_set_str(table[22], "6581651959083860015823010745090266616505792466124212892337109699895687892764", 10);
|
|
mpz_set_str(table[23], "10402246954385227223038639511584415609404705100489141992307792115166168769186", 10);
|
|
mpz_set_str(table[24], "20845574286178959300819553568420309876368540864175100473707273778102241618163", 10);
|
|
mpz_set_str(table[25], "19795923763417135016749435917436011703813878339667538123976670743547933350885", 10);
|
|
mpz_set_str(table[26], "13587054233876770749105277042314317974732014628844426366463387352962746283261", 10);
|
|
mpz_set_str(table[27], "10389213639519702947776149799131365059577130058525957370304352638201792337016", 10);
|
|
mpz_set_str(table[28], "6024293295226361852520916496651927092000048941454794442038155618681187309775", 10);
|
|
mpz_set_str(table[29], "21691561303962662299824255087006740041372142465133418306100633464529832321914", 10);
|
|
mpz_set_str(table[30], "14791532627712874458023155956255404764020250490858735045063876208720881888981", 10);
|
|
mpz_set_str(table[31], "20027425569693737017249784632939478816350967266450234041828730341740353118482", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=19
|
|
*/
|
|
void EscalarMulWindow_e695650c27caf96a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "379349425903821713550630532223576441440513381186397819079208216532411422952", 10);
|
|
mpz_set_str(table[3], "19107892239350785984077211943912850532760596891759051444710776654351045614222", 10);
|
|
mpz_set_str(table[4], "11280353594541512257574919685002060568207172068669532689768981258321449648547", 10);
|
|
mpz_set_str(table[5], "2137545202489257402266811734996928871794892737105559738080320028884283943764", 10);
|
|
mpz_set_str(table[6], "19983691625229909059805340205014294793098548369714579680834342307520147481639", 10);
|
|
mpz_set_str(table[7], "13830778936281094104099977298590683701505929576344779379566337187189320425932", 10);
|
|
mpz_set_str(table[8], "11086690746568527490600096068541542994486918982463335794795545473443368478131", 10);
|
|
mpz_set_str(table[9], "11580662810343539560080461955379908514477007894619637726623583621727337423837", 10);
|
|
mpz_set_str(table[10], "18955642799938985797972948003387147464454494551005077761001815253098042290904", 10);
|
|
mpz_set_str(table[11], "18597029718187982506882415805891494366787558404517871246454909924289796333513", 10);
|
|
mpz_set_str(table[12], "14305074609156097955952312588218951195345339166404421339047415565869596559012", 10);
|
|
mpz_set_str(table[13], "690623514523908708493027960805697385269507890581332882596566116480176034659", 10);
|
|
mpz_set_str(table[14], "20611706075838341423633915098290191545949708122744561495239121618765313930802", 10);
|
|
mpz_set_str(table[15], "3845575718579933343278139898013486390823378547870337023307353525027835942660", 10);
|
|
mpz_set_str(table[16], "2478043406005879623483017719950300866241503815933009862378703830485598229119", 10);
|
|
mpz_set_str(table[17], "1383631236499289476784713841116640798000700551077308900873060639255959590025", 10);
|
|
mpz_set_str(table[18], "12349784917285116305247291251371396729363143696525117666455067432646235314146", 10);
|
|
mpz_set_str(table[19], "16334223641716971764757547192903169353455781326280623687815241771687572129865", 10);
|
|
mpz_set_str(table[20], "15882892205970355631107815584572321201763891439907568323360981499144978834621", 10);
|
|
mpz_set_str(table[21], "18783023729403057852350213269844944783961625452585774749570435945310202678554", 10);
|
|
mpz_set_str(table[22], "9596730397664164141672412456152963833582528965966793039880273162632961791662", 10);
|
|
mpz_set_str(table[23], "15409274789759147195506796454688186976288543457706237430805957138587635100441", 10);
|
|
mpz_set_str(table[24], "4813269313006480048070988100749027302180611382429427271089699256053609550378", 10);
|
|
mpz_set_str(table[25], "4428333261400869870098137668784767735793049338845931567987062597321127081604", 10);
|
|
mpz_set_str(table[26], "15833799957140371690428662200025618893900834090445452632012559616472171663251", 10);
|
|
mpz_set_str(table[27], "12623216000145546996949783338552280132976394381301068136242560086691735805150", 10);
|
|
mpz_set_str(table[28], "3359488754919514056157827364813642645567362222485560814947284570012139282296", 10);
|
|
mpz_set_str(table[29], "13182633811136778326412290071915964950552694407726567248121591272059828493900", 10);
|
|
mpz_set_str(table[30], "18344403849859881128576637682617943766394705082113421550049141843443730503163", 10);
|
|
mpz_set_str(table[31], "4359734782083362965519911663713090977500958121224832706764918936303087023658", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=20
|
|
*/
|
|
void EscalarMulWindow_e698e40c27ce070e(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16777655066149369327124291278088574671112030619368469048779993756310513268616", 10);
|
|
mpz_set_str(table[3], "4634019888105622973807563829540165825498623150484770039567692393175833637671", 10);
|
|
mpz_set_str(table[4], "53372432075113461294212927623034318312986384016964247987299954466217724572", 10);
|
|
mpz_set_str(table[5], "21222280082852734327876908204262711706179553933131055021830879442555702909056", 10);
|
|
mpz_set_str(table[6], "10446611131569744194879930309070342482915314388262602168777260257945844413581", 10);
|
|
mpz_set_str(table[7], "17932039171865762615513115651971768508779260034202570792438758021028159091683", 10);
|
|
mpz_set_str(table[8], "4667012780388820804018655167035141203405144059674350075656822472462063278033", 10);
|
|
mpz_set_str(table[9], "2921856238642177739916590840023080274550242539569173642325118194745464517315", 10);
|
|
mpz_set_str(table[10], "1489960209940786061583080321981151805314315232360824425984553880933186990694", 10);
|
|
mpz_set_str(table[11], "21120780874579052859918422123517089781900831596441921602412235108476581780668", 10);
|
|
mpz_set_str(table[12], "8718474883888947110768435025682732572992203457115241377990223014391596665523", 10);
|
|
mpz_set_str(table[13], "19032472091844184846046885535846801715513552788617620197536449678878065381489", 10);
|
|
mpz_set_str(table[14], "16996157389333632677607961816610117660887306489831803292557097776507757525888", 10);
|
|
mpz_set_str(table[15], "11493940525966459763233057014223427028694376288802979773223809318032814817300", 10);
|
|
mpz_set_str(table[16], "9261677088939894748499361830764337859405453699942819789001890423637089102586", 10);
|
|
mpz_set_str(table[17], "11388921744174066538406314201891921507634460789084367604976972575203373469874", 10);
|
|
mpz_set_str(table[18], "7442141633407347441990485354276773483423576236543645618533984231826068244096", 10);
|
|
mpz_set_str(table[19], "16688217174667942192597745826670674120092209845993400563091585503457408326438", 10);
|
|
mpz_set_str(table[20], "20844308047584040195262432415475351812716112266301592095205905452208541213584", 10);
|
|
mpz_set_str(table[21], "21306710929855482749401890110600956011811406776992362749776938848913343866004", 10);
|
|
mpz_set_str(table[22], "14649534122562536167873619926958729444834379257504527673023839845348170644831", 10);
|
|
mpz_set_str(table[23], "20377195103787159261672413214784820833464632336785446645173093182127746835635", 10);
|
|
mpz_set_str(table[24], "8895577731263932062426513852464333814611638514946485929000615303545101303911", 10);
|
|
mpz_set_str(table[25], "16690272539101338741331854476710213982646608128095492874978686907076211193441", 10);
|
|
mpz_set_str(table[26], "14637801588902173078883728435205979605383582994403761904993772951178658661612", 10);
|
|
mpz_set_str(table[27], "15556352645043640590481313403684214937884749350715627679499043108304560580032", 10);
|
|
mpz_set_str(table[28], "16491440686422045546754825555510545537573484719469285180489726866779631365499", 10);
|
|
mpz_set_str(table[29], "13780819536949712747062711170626282770117877673882735852691539576219013514205", 10);
|
|
mpz_set_str(table[30], "18671122420482751944784190861631715819837944784726989949485471870702575441012", 10);
|
|
mpz_set_str(table[31], "12124425748835041858630547955816658525946943092845541228047681400237566091687", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=21
|
|
*/
|
|
void EscalarMulWindow_e698e50c27ce08c1(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "14039197829042233210185992800840342338003761045566389158900335456277860044633", 10);
|
|
mpz_set_str(table[3], "8825106331433947656958915899633977149289341414166936703486542876338734902214", 10);
|
|
mpz_set_str(table[4], "15095982714695416100950522019908470501539408862098883269490380922208216675423", 10);
|
|
mpz_set_str(table[5], "11134287379122613107431340219535935486629784643918964780778070509925919379798", 10);
|
|
mpz_set_str(table[6], "5806201066651812452198307007415788883737166770230134675945470912181901667971", 10);
|
|
mpz_set_str(table[7], "12452641974926388987777634332185366482718581358103397919534820807764346134679", 10);
|
|
mpz_set_str(table[8], "8496487741736967816307239370860081844148540610563304614572223166141136450664", 10);
|
|
mpz_set_str(table[9], "6515186124495517742442831064908301488276696577969746807825777021832272589753", 10);
|
|
mpz_set_str(table[10], "8871163556873554542872859188884917500024534701895773736991779860033475779351", 10);
|
|
mpz_set_str(table[11], "5872890099072019124719769182033635424291362213376682736999065144487817779759", 10);
|
|
mpz_set_str(table[12], "17363735306352581795343563046819247342835214329878310600616704142028848838008", 10);
|
|
mpz_set_str(table[13], "18218880869117473387164603473407741784276076176538509089634130399730952915316", 10);
|
|
mpz_set_str(table[14], "8386027477772807656627708391171963446157480648802305735918259265732668808083", 10);
|
|
mpz_set_str(table[15], "19687762281102340388295514091188028726571729879857295884771308963589952102337", 10);
|
|
mpz_set_str(table[16], "8806763414527422646706033124211503226600069612325976159796810560741498397039", 10);
|
|
mpz_set_str(table[17], "10424251286473947322555629541873479079353717031160753124405152609735324493117", 10);
|
|
mpz_set_str(table[18], "8987709772963618298966745145118843765322233650190155659262677249069516573186", 10);
|
|
mpz_set_str(table[19], "5578835771954576245231452735207876212611195360812441579084934075056958891196", 10);
|
|
mpz_set_str(table[20], "4869328133149460425264838007327139122108036937512762624940110432985398319451", 10);
|
|
mpz_set_str(table[21], "12344885618218737754001075231836794789316562440817685636965946874834953534874", 10);
|
|
mpz_set_str(table[22], "20148954836171788174151641924728853539276128095104101269607371794973427007889", 10);
|
|
mpz_set_str(table[23], "108627741403201139219994129516748292558174334922005804559682235652656708457", 10);
|
|
mpz_set_str(table[24], "16746877888501324922778335102840498994406347621229831804541408927766874982532", 10);
|
|
mpz_set_str(table[25], "12434588185890169427234865922008840089282230238237531488960588024283025549395", 10);
|
|
mpz_set_str(table[26], "7575769996674802953350195897976424883998358416953812121252598358433246209742", 10);
|
|
mpz_set_str(table[27], "12388142876628989256808051406377609190565003868936540259767536756674086073749", 10);
|
|
mpz_set_str(table[28], "12843407186058112922591119347576760766573049789955675584163470702929813803767", 10);
|
|
mpz_set_str(table[29], "2343208966296086685915997004650955416323127803733138229449364650755663867389", 10);
|
|
mpz_set_str(table[30], "6840986370106186924969966814197656097828314884143462176667073174093378152881", 10);
|
|
mpz_set_str(table[31], "18209760968771446985408737819211774799307141621073325377962355588454216355527", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=22
|
|
*/
|
|
void EscalarMulWindow_e698e20c27ce03a8(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15631711555578033258523500940835561294499401563342292872379915306758380894815", 10);
|
|
mpz_set_str(table[3], "18834791205884987258643654447945418758890737034482227278884571064075678439760", 10);
|
|
mpz_set_str(table[4], "1232924394558455398273647587599522706537624058132586202779115272248911202682", 10);
|
|
mpz_set_str(table[5], "17833303230895080889959216902701836679189654685265718226911692537025674353649", 10);
|
|
mpz_set_str(table[6], "2985363010675498776710035823973308534779126283248947419911729203894216782228", 10);
|
|
mpz_set_str(table[7], "995303174859503655015441933597716185437178818415965659684359338901424452267", 10);
|
|
mpz_set_str(table[8], "437566714976308452367214633122809687986656634437990370753266749790119013519", 10);
|
|
mpz_set_str(table[9], "19529206272648706004490579965157400080492296701179993666393115871715434934725", 10);
|
|
mpz_set_str(table[10], "21053932545637636866460507256262585574248024459625275400196428552255217832688", 10);
|
|
mpz_set_str(table[11], "13238505236844161302108237022958600105239284560425932588497153806620891820284", 10);
|
|
mpz_set_str(table[12], "14738221885741907026496168859762855130638313123865194793394713686883659078666", 10);
|
|
mpz_set_str(table[13], "10130473349809524005586022957872835334035485889815302054938803046567229332021", 10);
|
|
mpz_set_str(table[14], "19082597823767183986973149369595319402986068587362854892674691192121539866770", 10);
|
|
mpz_set_str(table[15], "2974712380689759096651038103638866419244930106689442976125603176942104057564", 10);
|
|
mpz_set_str(table[16], "4968377445231331394612662291766375940519266178117277611205543326105819696507", 10);
|
|
mpz_set_str(table[17], "308051870163380961668450783238640324240158897655551649879309242257625464516", 10);
|
|
mpz_set_str(table[18], "143145578578409144355991313510326323032732394846904084168106976181727124291", 10);
|
|
mpz_set_str(table[19], "4534228930726044913960469025859070803171449727902123790808775304997038006854", 10);
|
|
mpz_set_str(table[20], "7549398425930664276585051299523370291040048032792053800127951108759026819473", 10);
|
|
mpz_set_str(table[21], "8381514489184948217242976309236859270111448224406737907949391219157807502391", 10);
|
|
mpz_set_str(table[22], "7081728363625164803461197468983646976360826316144988521407728588347844357868", 10);
|
|
mpz_set_str(table[23], "2220441304837452587602205209854024148821448161516925267269425769789244849682", 10);
|
|
mpz_set_str(table[24], "7600566888315861787276475227149240118535535675131854594794725935293156156345", 10);
|
|
mpz_set_str(table[25], "2518543267736502482525749979499206659205623975068592128089538541609356397646", 10);
|
|
mpz_set_str(table[26], "15964546934255736197215107778492678732154813344410741849144170794983572901045", 10);
|
|
mpz_set_str(table[27], "11108260911019516113738169910743348501977642236570099384754413111216036967235", 10);
|
|
mpz_set_str(table[28], "1268409639470179650151777579305834369087781077158435876229349716093818630860", 10);
|
|
mpz_set_str(table[29], "12116692109562525117748684272446381207063947914491907158883458255351001755339", 10);
|
|
mpz_set_str(table[30], "21880068498434663893026435732702345344466753678404381230836174069069830790061", 10);
|
|
mpz_set_str(table[31], "16324265685603273807052115540100128665715365875271278209751006495035490162717", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=23
|
|
*/
|
|
void EscalarMulWindow_e698e30c27ce055b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11798301185410583790831982960921750325182175352689111003919084769704803694695", 10);
|
|
mpz_set_str(table[3], "10320507559881538305442440388599880600101961708359800619588812325976600071175", 10);
|
|
mpz_set_str(table[4], "10992380046202553728861226116804750801860495309222180455192050912656571103720", 10);
|
|
mpz_set_str(table[5], "20746504294608920109139695193353753766924548979974787683175107063649821757148", 10);
|
|
mpz_set_str(table[6], "12803271769506889229569359866195264181650659426122199129217985985677245964497", 10);
|
|
mpz_set_str(table[7], "12777208000963804772914758731979577679411982369114737894261616814245396577238", 10);
|
|
mpz_set_str(table[8], "5056256971231365636008952459055560403127127971967423375879203995246080587426", 10);
|
|
mpz_set_str(table[9], "14679552420354879541770922331850106484158970802232913124170883214669637080939", 10);
|
|
mpz_set_str(table[10], "10919301278344548707513020306219902524837796055556405511996756103297555727874", 10);
|
|
mpz_set_str(table[11], "21859364279343042815097100425563438652377978005395579703935946388999354651538", 10);
|
|
mpz_set_str(table[12], "1484608924137526623693394879926039469672374869781472619727808552028062310694", 10);
|
|
mpz_set_str(table[13], "2464071424631007604234496176677676463718240755275391610330172152263542025526", 10);
|
|
mpz_set_str(table[14], "12080718782101260122650814197245474681608191865292176042822521203797695910346", 10);
|
|
mpz_set_str(table[15], "20650658053855156593275428272170432524538387387078934253383897576552964739457", 10);
|
|
mpz_set_str(table[16], "18960132970055859574487738159906249609630408737632122614927969256399073906464", 10);
|
|
mpz_set_str(table[17], "830663679062394654079072360240041554084938025612663365619389564309524341706", 10);
|
|
mpz_set_str(table[18], "12516550835764888840186918457921749644134691645556312835447177614210820171445", 10);
|
|
mpz_set_str(table[19], "6911599512264570767810838558833828125239613928732247342257488973404472882679", 10);
|
|
mpz_set_str(table[20], "3063684577483271534878882054606130869308747135806272583291883524655496335146", 10);
|
|
mpz_set_str(table[21], "2464467942685338240514728971637190802634050463763588371327509072888928899673", 10);
|
|
mpz_set_str(table[22], "7366277537661412068861569927151816204215121201677392619777906606437971565388", 10);
|
|
mpz_set_str(table[23], "8315416474862471676494982738677636031784175446210295818644731945649792214419", 10);
|
|
mpz_set_str(table[24], "13930433247833341929562607678253063529932503298466873358130636444227790229005", 10);
|
|
mpz_set_str(table[25], "13657364666783669374405500135099069628416465670878715674244742119551618915641", 10);
|
|
mpz_set_str(table[26], "1117973501212793165418659143600582146453616982398874520894316241927249104029", 10);
|
|
mpz_set_str(table[27], "20484777878246356526658870888718785100679283234214202485954611267340543194576", 10);
|
|
mpz_set_str(table[28], "319520992354708541373755758310984768204770492971774523929151706353780111164", 10);
|
|
mpz_set_str(table[29], "6574194972508636233014241106289769969597988543755001082232573920749262646233", 10);
|
|
mpz_set_str(table[30], "2656051586347266298016418493880420612948988466424561544900583311287142485018", 10);
|
|
mpz_set_str(table[31], "2761572019450156499564749645009342056734978070352838294058294953587033665276", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=24
|
|
*/
|
|
void EscalarMulWindow_e698e80c27ce0dda(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "17351845850750176330302386143271454019986956878302371623825420752743851593735", 10);
|
|
mpz_set_str(table[3], "12075532622678853701341956212463986752947878251561614929554858573655664204828", 10);
|
|
mpz_set_str(table[4], "5268310846833705826772381806671280491475489620656583480880246943710981141691", 10);
|
|
mpz_set_str(table[5], "9385490350823108296999850757050916322228290280677181904320714202439717767422", 10);
|
|
mpz_set_str(table[6], "11865950769220096390634285805117550010278460558176997058880860355046049428568", 10);
|
|
mpz_set_str(table[7], "459442895305814190695826238160158989509240406275369337352052544557769056319", 10);
|
|
mpz_set_str(table[8], "11000060784145321905235302876930287466345760160566048613958488699577356496533", 10);
|
|
mpz_set_str(table[9], "609499755531011926711350038473050375887336787225016040024184562095663706097", 10);
|
|
mpz_set_str(table[10], "21047770345286746752322681107649806746441393632604503304194248718852944411487", 10);
|
|
mpz_set_str(table[11], "13516973722741553768025367021591301011638417327217220496926066123804629317971", 10);
|
|
mpz_set_str(table[12], "6905161585723141809795614685402288575865116931801978697601302106968481529140", 10);
|
|
mpz_set_str(table[13], "3076769530411085661908443419093838945279270383088064927883723494868312673502", 10);
|
|
mpz_set_str(table[14], "9261886629687258503004959961033285420916245813210880613548148699873216759374", 10);
|
|
mpz_set_str(table[15], "19071566171207295778784283346809732267737033620433376836792563962313994578625", 10);
|
|
mpz_set_str(table[16], "3469109305797854135905737624675722807114122156120072619139732155200769710979", 10);
|
|
mpz_set_str(table[17], "5202070023884855698159514560052546547100308770238216654942333256709433129892", 10);
|
|
mpz_set_str(table[18], "4992965992430408256947356700901520022475757622279126070463091524658354958973", 10);
|
|
mpz_set_str(table[19], "2023062360307938396554186189143829458322972472122709188385752138612458811877", 10);
|
|
mpz_set_str(table[20], "8731784736964002767378468136309109957646284246937833729933610769447991753480", 10);
|
|
mpz_set_str(table[21], "21538327300874802284756748222604848360706643956609924106140479577847893198530", 10);
|
|
mpz_set_str(table[22], "15139692648767211280809789134986093832610632490099251208879432098934898968358", 10);
|
|
mpz_set_str(table[23], "6985531268899350934330829853646066145744407151797019745970665801002511588287", 10);
|
|
mpz_set_str(table[24], "21765270233564657427425235463772724927598377592934022924205782566750681233935", 10);
|
|
mpz_set_str(table[25], "18508890223188965053204091822551140811335348826333579433323525784334430383927", 10);
|
|
mpz_set_str(table[26], "10461271546216443746217170370116972218127141442243227395112643512011677972023", 10);
|
|
mpz_set_str(table[27], "17467239786415991962502641293398074788116214050307575611282756538107265894383", 10);
|
|
mpz_set_str(table[28], "20482469263305679290004142039681971451024512516948743030512746362959388606066", 10);
|
|
mpz_set_str(table[29], "7843334092669307652128131850517982100364152376975332666229835309829819065753", 10);
|
|
mpz_set_str(table[30], "12590285961903499113253265859992170165545260023329770070095707580664645730275", 10);
|
|
mpz_set_str(table[31], "7194233330489109228257570457060236313303750551497443588936654850618121652054", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=25
|
|
*/
|
|
void EscalarMulWindow_e698e90c27ce0f8d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18679633421357654521429185503276703378250966807467092342363108178634864479079", 10);
|
|
mpz_set_str(table[3], "21322315859973860093357705236759883291428485443465435890046826520653536618283", 10);
|
|
mpz_set_str(table[4], "16642285143607761383883324682448523114695799787227861058116862475673283006949", 10);
|
|
mpz_set_str(table[5], "233581951758829149128702218334194499409350081300098466120720723649572707213", 10);
|
|
mpz_set_str(table[6], "20974658634486132093705671932681722132897896514661015785562171583158773737580", 10);
|
|
mpz_set_str(table[7], "8791264643433259523666474626308297984570323489497414318772346289739068232836", 10);
|
|
mpz_set_str(table[8], "11176221570195373612721281952327875203495526127141048535478678557221449823853", 10);
|
|
mpz_set_str(table[9], "7462162874881624749823731845900700394235375213388839519316359385077363220280", 10);
|
|
mpz_set_str(table[10], "5730468668692984643292903661060232785422008088596341963377282156198188262958", 10);
|
|
mpz_set_str(table[11], "13880692275923108251424145304764532477324187976384582509950817933695417187332", 10);
|
|
mpz_set_str(table[12], "10262998670148401490193774870662111933850697960129404081368385914799358805628", 10);
|
|
mpz_set_str(table[13], "12742482583977661789154654347088028749540785078974457382985405288984678035164", 10);
|
|
mpz_set_str(table[14], "14111560712981869778122242802015376496460779107025771699026299115246670934437", 10);
|
|
mpz_set_str(table[15], "15928417708975887467177234569851001993585687826100243460026847781812459726208", 10);
|
|
mpz_set_str(table[16], "3898915993666074238116912364165206661219183814743442999904170575467252889957", 10);
|
|
mpz_set_str(table[17], "4616095144417919052091654987916140814851717669962214065129348701941975173376", 10);
|
|
mpz_set_str(table[18], "870009940025555473305507854684809281347899361202817384983799877982065196106", 10);
|
|
mpz_set_str(table[19], "18199770521874754046070636155276052104443705262572115667514250178291336769446", 10);
|
|
mpz_set_str(table[20], "5251452573312677858772700111593560102764530626161156239221062730062471072200", 10);
|
|
mpz_set_str(table[21], "4060189221230632720236127908229618353861583103088859388581197386021336748799", 10);
|
|
mpz_set_str(table[22], "500553746406741276509290104078504756910494237842934089170143016496262397600", 10);
|
|
mpz_set_str(table[23], "16342504650027689201120271210626364278078361371933992329345633699279035849372", 10);
|
|
mpz_set_str(table[24], "3057974382061198115697574311500592432050261591627854043988857243519190484788", 10);
|
|
mpz_set_str(table[25], "7249454878981887710537707113195771725592827230097529557963231200376729030686", 10);
|
|
mpz_set_str(table[26], "1899688882688929949967362568662327212286796491797008294852911776840902024498", 10);
|
|
mpz_set_str(table[27], "17472782395001309162859323574187283949441334006250084213168260969193966757100", 10);
|
|
mpz_set_str(table[28], "378299894228858407457921286909295340958233177787553440136437193154547375645", 10);
|
|
mpz_set_str(table[29], "9967905892241280854723126176088418640170565284173233172864591940781488067362", 10);
|
|
mpz_set_str(table[30], "16935061331481138061051393509541369107079939306980690938637605416392462815374", 10);
|
|
mpz_set_str(table[31], "13639971176145374610214912111253055280702049309421061897395334403386234245691", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=26
|
|
*/
|
|
void EscalarMulWindow_e698e60c27ce0a74(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18149639217555882877415078714125918722233175652167252147515809362370647289497", 10);
|
|
mpz_set_str(table[3], "16128676484931873977405252903059378046701253412534303083732069827214517104783", 10);
|
|
mpz_set_str(table[4], "21741062837605799338950050028689809033616873164346586869014921358902994674254", 10);
|
|
mpz_set_str(table[5], "7796406175627857618905064986966731948348273442392637473687724192421057957219", 10);
|
|
mpz_set_str(table[6], "7534601249392079530124354518063963801086048546794269780112021066678388981410", 10);
|
|
mpz_set_str(table[7], "6677588957553654931783406597190407679134037329597451248476267121733886730791", 10);
|
|
mpz_set_str(table[8], "13115340974748485205002137809244391754597074876194778118669788315774020494136", 10);
|
|
mpz_set_str(table[9], "13802687287376990740555296070886027524867599566216721044853226069655875214431", 10);
|
|
mpz_set_str(table[10], "2999073202325105769717112095763592563858464380343177250544812825539071688027", 10);
|
|
mpz_set_str(table[11], "10064086351590110255577947800085273710339883743811947148186517159294056376677", 10);
|
|
mpz_set_str(table[12], "6852897146568312467692829313474435837990386224049340482823215485917508827876", 10);
|
|
mpz_set_str(table[13], "1210401895753268854214897638425674885738268429911727465370896469648125714193", 10);
|
|
mpz_set_str(table[14], "2576582090501413037812575145260792860793836296589021856439629924170761073413", 10);
|
|
mpz_set_str(table[15], "20727417578871676794417712575420264288632929992165664741952551486518603808280", 10);
|
|
mpz_set_str(table[16], "13230367140527495135201406179219097468955118203095633648770852711515921471138", 10);
|
|
mpz_set_str(table[17], "2940475370559210314943904699892612174743036200726254902311869106763910922960", 10);
|
|
mpz_set_str(table[18], "4375673118740629477057287977271234385371086429826301848882292947782430241436", 10);
|
|
mpz_set_str(table[19], "19214483773944962915121480650397137996182578224815495099888995681365662248643", 10);
|
|
mpz_set_str(table[20], "19221602970431180863398127125693575735223010517157104577954453152509466503491", 10);
|
|
mpz_set_str(table[21], "2812067302822347878200352298687086974654660652866649971988072238017953747521", 10);
|
|
mpz_set_str(table[22], "5008886347059271337779850699333927536827007984024878438848354317160095383734", 10);
|
|
mpz_set_str(table[23], "15497994055658328443367445917737913747258359388862053147533085127115066729126", 10);
|
|
mpz_set_str(table[24], "3042905534015373077782584239723106622236565352224986873088578482289642706325", 10);
|
|
mpz_set_str(table[25], "1731988411085023288614536237087215168558933538164107600051818802279377810575", 10);
|
|
mpz_set_str(table[26], "15244994035690954925459854555924816526957680464700034071754296697534232205597", 10);
|
|
mpz_set_str(table[27], "4961042611843774276830686504678143537634042868988093197151531923202165896428", 10);
|
|
mpz_set_str(table[28], "820995330704602082023389942001516326818113276056207117608315994303105783846", 10);
|
|
mpz_set_str(table[29], "17063503948258759982521687096337367273424027932919494422489905984616783526940", 10);
|
|
mpz_set_str(table[30], "655009840659097098746477536921819669236312244709885557472771258585495863198", 10);
|
|
mpz_set_str(table[31], "5565526667065270568125894359845653415385789737081157482315205604882968801772", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=27
|
|
*/
|
|
void EscalarMulWindow_e698e70c27ce0c27(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4269413356809688023055171952319783340807847112986096639848456682256125645198", 10);
|
|
mpz_set_str(table[3], "17891026128563673965161829930746344980280606142672216508664431337850809882768", 10);
|
|
mpz_set_str(table[4], "7028665825486996498137491933204532735387436324626373156761028606127092857898", 10);
|
|
mpz_set_str(table[5], "16394852272472558952431643649001704750983750210094468004673310412404620285269", 10);
|
|
mpz_set_str(table[6], "9575116358732551192150870969228086842347680104624158647630582324869335466440", 10);
|
|
mpz_set_str(table[7], "3169542329348866242122582288569568831399118696572711471864800613462373064713", 10);
|
|
mpz_set_str(table[8], "16845773816780024268431761968937696546879583698191683564525352316650779482881", 10);
|
|
mpz_set_str(table[9], "15371046996217610175317662037035861269567606464107910978539868567748138358188", 10);
|
|
mpz_set_str(table[10], "3737865142484713569235227558864529185671037856124866291820139336391043043071", 10);
|
|
mpz_set_str(table[11], "5147619658047292583758581391647638644261462089795093902318291830912213819869", 10);
|
|
mpz_set_str(table[12], "15412517508402927450744477758569750435850928341579553211082064827884417350437", 10);
|
|
mpz_set_str(table[13], "15123306967046167736838038855522970760546316635880988480505894653019908997285", 10);
|
|
mpz_set_str(table[14], "1378997542838302882522218636718788433398457256790945020306817286210794852079", 10);
|
|
mpz_set_str(table[15], "10681378457761673700208457944265082204938467731057382775794046472907358133325", 10);
|
|
mpz_set_str(table[16], "15034216098749163077398659997000814293811394539301049023966449242170607876758", 10);
|
|
mpz_set_str(table[17], "1265117124629072894780664826608083949693736965880149409956589379362893867827", 10);
|
|
mpz_set_str(table[18], "17141931405175606365519137193715586102927833157366436473975545010128210879676", 10);
|
|
mpz_set_str(table[19], "1880341079109052932425109631866414631154435103591430808435188034892166215826", 10);
|
|
mpz_set_str(table[20], "15358552313330899939313213174873817402073115873733628011115954184269211049875", 10);
|
|
mpz_set_str(table[21], "811576326309334159355379418340956988202908503048709875595006469622118773857", 10);
|
|
mpz_set_str(table[22], "11980805963003943581544209754278668018236660791726786320615515322070456177125", 10);
|
|
mpz_set_str(table[23], "19129346817397574214942130163039735117121940671425116237677666615095191649280", 10);
|
|
mpz_set_str(table[24], "3085324543674639674035900800542024948649385413137066150025713122961690904680", 10);
|
|
mpz_set_str(table[25], "7562088399433561926096036673997995344390772153605937104657033492731868301697", 10);
|
|
mpz_set_str(table[26], "11616789518748387652676471460186977754323335645971627703992552357828756554626", 10);
|
|
mpz_set_str(table[27], "2985309710126181923271106664964882159606697141846195470517976005450302812764", 10);
|
|
mpz_set_str(table[28], "20045268470731731980457104327845120289597280757025433801093367686116425682919", 10);
|
|
mpz_set_str(table[29], "16450362315825157310960017229296433181706845131153707024014991209612395931227", 10);
|
|
mpz_set_str(table[30], "6675140004031465291382046674379185986882524818478619659668057799908410468280", 10);
|
|
mpz_set_str(table[31], "19575453177949606388513743103042856370117729503140135834457766083727148716244", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=28
|
|
*/
|
|
void EscalarMulWindow_e698dc0c27cdf976(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11797375556583103475936410264223169234680019331380441010099484115674003702746", 10);
|
|
mpz_set_str(table[3], "4388528957314896315680095568173136286307999846483728886086822418140788829241", 10);
|
|
mpz_set_str(table[4], "14512796928224367829315911046609507130339935623184687970713628867263115508415", 10);
|
|
mpz_set_str(table[5], "17141409409197546604539377770183982538346482127282272413030148047539390094733", 10);
|
|
mpz_set_str(table[6], "11732430130035776615471491649984617351069057911905998620220584826380474810879", 10);
|
|
mpz_set_str(table[7], "9376537503899738361300653657916351419700478308516458732431878112883192475273", 10);
|
|
mpz_set_str(table[8], "3450710052248585649078923563576676153255383176279328519038933288950963690814", 10);
|
|
mpz_set_str(table[9], "19053164269481311039996717729028852763030498876969873433965881093928272080178", 10);
|
|
mpz_set_str(table[10], "21355313626589875159629414610255849682334054368454202277940412267097837113179", 10);
|
|
mpz_set_str(table[11], "17527757806168506495012626599736222178210824889767143658744055128914425287233", 10);
|
|
mpz_set_str(table[12], "1659465447879842446146467540027271282532864557283036395430278827789636817143", 10);
|
|
mpz_set_str(table[13], "13244470474278251225936022513910782201305167905726898721032137375144042610126", 10);
|
|
mpz_set_str(table[14], "9331109824805589603749464659396966463218299078866177675680192948328969487159", 10);
|
|
mpz_set_str(table[15], "4808400526998406116861748929457949369609825340968131372779501297781241061100", 10);
|
|
mpz_set_str(table[16], "8667862274262081702893474482697473065781453341593792026682829702412730871384", 10);
|
|
mpz_set_str(table[17], "19633052771995805984567096389336158666251781701949228572771100982195433597860", 10);
|
|
mpz_set_str(table[18], "8096612061827253222675165910361428113904761835575734863433322096067565431363", 10);
|
|
mpz_set_str(table[19], "12080201316495449351674561557308329587229007477896718836895704944910296947571", 10);
|
|
mpz_set_str(table[20], "912149034276592385598424043084505877896022681633936854279201077702141729663", 10);
|
|
mpz_set_str(table[21], "457905390781590143801995368401293058071807834009296351047635713145524414716", 10);
|
|
mpz_set_str(table[22], "18373899101758750108039635085717350072838673044198411779451621654401612805078", 10);
|
|
mpz_set_str(table[23], "2265159405545722653339762168912044034720386011316093785193404030432577639061", 10);
|
|
mpz_set_str(table[24], "10187219345026498206327613890311413079749970014149744260146289389219237776444", 10);
|
|
mpz_set_str(table[25], "1840491394547951013168554418948266969441523762850662260360355531074854100525", 10);
|
|
mpz_set_str(table[26], "7397867526390808344494686461152969418537013775639108333001354721688263188410", 10);
|
|
mpz_set_str(table[27], "5036068870201753969104359010852265468410913004304733341756441896124458851828", 10);
|
|
mpz_set_str(table[28], "2404476011504470302758567636525207627527437647847268625194430360600912963850", 10);
|
|
mpz_set_str(table[29], "17364002655826848575645873861903997154349751557140302331702560914712946071167", 10);
|
|
mpz_set_str(table[30], "198041343598909913407825314031581349255349300471969617864816810014168405444", 10);
|
|
mpz_set_str(table[31], "19939953104986055173308746471355776712420237282459384306930139793608995290294", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=29
|
|
*/
|
|
void EscalarMulWindow_e698dd0c27cdfb29(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11917408217324596855586517851658086517261015976052598027245036654858824854428", 10);
|
|
mpz_set_str(table[3], "2883968059593129633185458746763579988614458998578738667234249024001667111452", 10);
|
|
mpz_set_str(table[4], "4426261888354270882771564412443984047190519880794529359825901743683308477235", 10);
|
|
mpz_set_str(table[5], "11952148035215715125822447202686802822283761129105744445365575536929406520575", 10);
|
|
mpz_set_str(table[6], "21513705608110320280855953799918709432040078212812226969535239246557921811366", 10);
|
|
mpz_set_str(table[7], "2800834962371886931968096751334899818706718463079060829965571874633138208598", 10);
|
|
mpz_set_str(table[8], "14313991882703166346202485967549867187873333611248625850008715974525987389453", 10);
|
|
mpz_set_str(table[9], "19315136750785365998610966988139456274306389662105253480860896123674000344379", 10);
|
|
mpz_set_str(table[10], "20757911663737782174516715541929408382837752317263828301498464158122832952984", 10);
|
|
mpz_set_str(table[11], "20117019602322752672388878127847123591725710657575172987782532818829211564848", 10);
|
|
mpz_set_str(table[12], "7809533547034666337742955467156936622961864347336605135743612996880227815817", 10);
|
|
mpz_set_str(table[13], "3004513876655588111964898493103288819203570452897971697074223702513790522904", 10);
|
|
mpz_set_str(table[14], "9505880849101294671433021036863928345842139389293527761843942051680039706288", 10);
|
|
mpz_set_str(table[15], "1955257457314763828318644963108733139303371256746457600143840042654994065339", 10);
|
|
mpz_set_str(table[16], "8487606718983629981969113676823936884574919719167259787842950705242561711580", 10);
|
|
mpz_set_str(table[17], "9905570108236273455798923339377139719222163871503187866563007972318885983387", 10);
|
|
mpz_set_str(table[18], "5729959348180737537595984388457564054660714371310248979103860012223230136295", 10);
|
|
mpz_set_str(table[19], "6871366531144745323955290212305158983175263167064574507549466174536504156275", 10);
|
|
mpz_set_str(table[20], "8834253430534956296012959182313185614813712098499667040156665024119341905245", 10);
|
|
mpz_set_str(table[21], "19900793308917826910906043238643018389441619941471999171187318843890975280301", 10);
|
|
mpz_set_str(table[22], "2448186961364625066142716931262849888459091897772693570959328524618652827772", 10);
|
|
mpz_set_str(table[23], "11320699778989409904937823339569393225314665509840908207974869153995345759353", 10);
|
|
mpz_set_str(table[24], "6140992419359407721931795773387696398264211356458053927806306401735407474123", 10);
|
|
mpz_set_str(table[25], "11532527578408331007817699078779727660612695629908105164718393815754893305869", 10);
|
|
mpz_set_str(table[26], "3103962747980232851483005346087421659763316749863734133736929305431686146144", 10);
|
|
mpz_set_str(table[27], "16276232931028267207810576489756397980795039658350963086881277468815137678097", 10);
|
|
mpz_set_str(table[28], "5320760790696110047804038501045669461343918557341887697047805921981912446565", 10);
|
|
mpz_set_str(table[29], "8962862735228106264445872505785355861536667088899353293275170365537289572586", 10);
|
|
mpz_set_str(table[30], "552208416099914852270377912218582981728510367795113162815361752232063865919", 10);
|
|
mpz_set_str(table[31], "10208425026470757310072323328690713372169424420407606002933243360520853070768", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=30
|
|
*/
|
|
void EscalarMulWindow_e69bea0c27d04717(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4350032954465131730713461218130679989516820146907523029013733848220571809348", 10);
|
|
mpz_set_str(table[3], "2854634417209936886904362207143094938617241895075453527207989103397295707786", 10);
|
|
mpz_set_str(table[4], "20363813867853245544998990588216971707597722318158234837386116215776580998846", 10);
|
|
mpz_set_str(table[5], "19640312413035974187181797940062815888953019111877666398755316581356718072299", 10);
|
|
mpz_set_str(table[6], "16041939189889384791115203147926312498972349148329737862533296331482991991816", 10);
|
|
mpz_set_str(table[7], "1140305763694441286015588189764932013916048521785460877014385643699863272910", 10);
|
|
mpz_set_str(table[8], "542084569528409964372345461507403345276166531408477518262609407812453447371", 10);
|
|
mpz_set_str(table[9], "20411674472105645542735045592167607179454529156933108768591805676116167577009", 10);
|
|
mpz_set_str(table[10], "19104209658343450724527001695412145651052068824599525544554053332002237191382", 10);
|
|
mpz_set_str(table[11], "2743674979532720777057267299772072910663144255944144489929043881891160491305", 10);
|
|
mpz_set_str(table[12], "17961809768993317920350019103478205424752539947462079504381438520073049522680", 10);
|
|
mpz_set_str(table[13], "5546551655668682275282781024682371662488244970929195226359511683388180712993", 10);
|
|
mpz_set_str(table[14], "18135679793205943156848290395138206950963194544612724149121399087081613225388", 10);
|
|
mpz_set_str(table[15], "18313179050133510393873986385364648369485678893432014134966689851498314430187", 10);
|
|
mpz_set_str(table[16], "3945810889741684307318435240011832043385508486855796382128425405676939215843", 10);
|
|
mpz_set_str(table[17], "6011692872466802351918324009224447806149371877104298028795077040967612963458", 10);
|
|
mpz_set_str(table[18], "3626940918336533486128760951662889719206416929909850337428447482604461006340", 10);
|
|
mpz_set_str(table[19], "11664899471480111325862919080870604454546145374180623823915812195468599687565", 10);
|
|
mpz_set_str(table[20], "6338546172978246851051245667653730477922923531035010938597264405997708635137", 10);
|
|
mpz_set_str(table[21], "518940349053692900114523108633991523837843379883062194226936733969764065566", 10);
|
|
mpz_set_str(table[22], "6522310070980952033213799771507729897165930438327957804523973081102868716071", 10);
|
|
mpz_set_str(table[23], "100419547589926947496172466658294485175305155431501274136728754000993515833", 10);
|
|
mpz_set_str(table[24], "13845166423101358431718311924198491637412784486855329985607787525354129074625", 10);
|
|
mpz_set_str(table[25], "19182779558157706997387273998891031473603306945308072734828347840985550644257", 10);
|
|
mpz_set_str(table[26], "19942510866337884261771783583046666738727078709721354474788032670043154096859", 10);
|
|
mpz_set_str(table[27], "2433571954347521371403047681326038745937757495219039289650632854969732418314", 10);
|
|
mpz_set_str(table[28], "20336271442491716210022303361469099044718347997285337640636128368988103479336", 10);
|
|
mpz_set_str(table[29], "3148662982090953848324329087964597315758390424094324864567944744824256653004", 10);
|
|
mpz_set_str(table[30], "12617786301557788340061415046219949524699885761768871033608043325058969722750", 10);
|
|
mpz_set_str(table[31], "8998488835485146012550914204560093426551491744856710399549174777132647132570", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=31
|
|
*/
|
|
void EscalarMulWindow_e69be90c27d04564(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4644754257456236075278914399394058059420397993645252092903397071689643213552", 10);
|
|
mpz_set_str(table[3], "7093834075129968415337301554032254867061690683060278985481861656001677882880", 10);
|
|
mpz_set_str(table[4], "15409841921089912189622913883812561130041878838101344920898896721637428578967", 10);
|
|
mpz_set_str(table[5], "7830617612297769304997491156637439023664430486222672440279075775909571797282", 10);
|
|
mpz_set_str(table[6], "3487305618390251146572484190094370984538412440951902529671000233533365151675", 10);
|
|
mpz_set_str(table[7], "10765504169763674162759393874305908681296039888475360515569570793940932045928", 10);
|
|
mpz_set_str(table[8], "6498521114883270679643538942605534482856176046809447145439782976829740028938", 10);
|
|
mpz_set_str(table[9], "20281339791199286964292063525524165369741161236461759682855013741849104461782", 10);
|
|
mpz_set_str(table[10], "16737501468788111146411539232024716399961790917471931838582332243836129643162", 10);
|
|
mpz_set_str(table[11], "19402343935297944958298711428379965359335877878520036592589327976319229820502", 10);
|
|
mpz_set_str(table[12], "10289939111838419129338766710877774210959211322093649819810976011210182193734", 10);
|
|
mpz_set_str(table[13], "8223922158085606345146303052608086776236490441677506485508715298175458627175", 10);
|
|
mpz_set_str(table[14], "20539337747898691472741085832750956664482743181485636615932012669718984605214", 10);
|
|
mpz_set_str(table[15], "10561168163913032259950679086449222718878398724945727851266637814896982023040", 10);
|
|
mpz_set_str(table[16], "7258666947826866514722926949566160303777186683955033678817705005800183223398", 10);
|
|
mpz_set_str(table[17], "20401751220505552706000119316062179215521648054313195585262077050003647551933", 10);
|
|
mpz_set_str(table[18], "8367935162214506964820413656895561586536970389914147388437248736570551108055", 10);
|
|
mpz_set_str(table[19], "2205720867297009399944922505331480854196080897040969990907655725782889339485", 10);
|
|
mpz_set_str(table[20], "18753231187238607116882460259790419560821021577923728787424558853118917624096", 10);
|
|
mpz_set_str(table[21], "4534669483261502498454555031979754604789623266298379863506616995474967985525", 10);
|
|
mpz_set_str(table[22], "14172488450665879595245096634178080111713465169418265761142723717340067310597", 10);
|
|
mpz_set_str(table[23], "5696526324520127671002989538227920875329403637555827242423082334024107337209", 10);
|
|
mpz_set_str(table[24], "1206329684332039828964651595611269380402328627795352031319992380792485078388", 10);
|
|
mpz_set_str(table[25], "17972372469097908224259652367388522408279987066314364493983072112512657216039", 10);
|
|
mpz_set_str(table[26], "14448905903416685787897339742737450851047686799185511034436404254270953590447", 10);
|
|
mpz_set_str(table[27], "10181231898101111905088694830837847943004635469336591872506441893551990037260", 10);
|
|
mpz_set_str(table[28], "17958330700401983374599093120809253561362415701272592427016220742714384857035", 10);
|
|
mpz_set_str(table[29], "6007443933749217345994635958872407119748860550396694565716070669657686174810", 10);
|
|
mpz_set_str(table[30], "14276719612754420010455219113253724885466272319560365895291613201410170310450", 10);
|
|
mpz_set_str(table[31], "10693116629759773692189329295948538197161270692843773327458719522025162586177", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=32
|
|
*/
|
|
void EscalarMulWindow_e69bec0c27d04a7d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18168877122827038334929527623374674231182583683891922220179914694168010786609", 10);
|
|
mpz_set_str(table[3], "21395811060098255242833034628260081554785647687889044523645926681680028484661", 10);
|
|
mpz_set_str(table[4], "13367844415017515789777305479374977144089191780909676464344031987995809036484", 10);
|
|
mpz_set_str(table[5], "16074411931546690824652026447579165915324981546292288185615083410752375961393", 10);
|
|
mpz_set_str(table[6], "7580464821914578712695847440568741835359919774840061852660085700510160784180", 10);
|
|
mpz_set_str(table[7], "5346673312756119795929142505004484081315653916592392601250804345079494718212", 10);
|
|
mpz_set_str(table[8], "9400452618118044380167843348869550882126738430534329856930646946072845826914", 10);
|
|
mpz_set_str(table[9], "19877022756927401789929353662508552637001579550825019106361227797763225828014", 10);
|
|
mpz_set_str(table[10], "11344712897977616324604615269052957068440855217627556530481536722932367046697", 10);
|
|
mpz_set_str(table[11], "21454340139778828988490122275370292435478856890507859952044368035766395167165", 10);
|
|
mpz_set_str(table[12], "21728667295636532545786442398160936907123045759740626529083464212445498771803", 10);
|
|
mpz_set_str(table[13], "9496447065220600072732124726941341547208600170407379076709072318418833657899", 10);
|
|
mpz_set_str(table[14], "1984697856201695259397868842203304549391727971727361732486915043413790916446", 10);
|
|
mpz_set_str(table[15], "5864205212580166345710335386415413373628377225097547470558242424491418049975", 10);
|
|
mpz_set_str(table[16], "15467384593112544208550904621637938940819772220998069930254989149520660568264", 10);
|
|
mpz_set_str(table[17], "13732634352298231231186568628160498473001952217735168106320637787088824812082", 10);
|
|
mpz_set_str(table[18], "6310704219133213607427284905330742358802037490549873845104009471331789948263", 10);
|
|
mpz_set_str(table[19], "8244326056827942803574592909275566951059019484662582292518486442245427496328", 10);
|
|
mpz_set_str(table[20], "17860425133426115012992100275292042363933776614239554876813471744327779718366", 10);
|
|
mpz_set_str(table[21], "2704602191345245792891905759546835856750732083256594149970326047694894768417", 10);
|
|
mpz_set_str(table[22], "6226133231413948142546942013839354941290887461387672537958836650050287480780", 10);
|
|
mpz_set_str(table[23], "11524291542935660287360855314476343150908538265570984288264336745969245965333", 10);
|
|
mpz_set_str(table[24], "7317838014577449588227715046033008549419937563866544370785624382646342167982", 10);
|
|
mpz_set_str(table[25], "15668375363151717222979808655957280264239929005544159585611141373699288235927", 10);
|
|
mpz_set_str(table[26], "13470315519331989093227502282047593782489538748626409820123517429593804291901", 10);
|
|
mpz_set_str(table[27], "9618461529532936701948164118242433992104275319665351481969898980460429470538", 10);
|
|
mpz_set_str(table[28], "19447071247334913032627113703119308492956565317443610634453007167725563410838", 10);
|
|
mpz_set_str(table[29], "9160898587124532346718199507262224741002251747603839372568935620559957223174", 10);
|
|
mpz_set_str(table[30], "16191884273407827105310031625928532517066508356426290845447781296919162298470", 10);
|
|
mpz_set_str(table[31], "11162402218840562691017503436330049572505961003118743691522907428839903496698", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=33
|
|
*/
|
|
void EscalarMulWindow_e69beb0c27d048ca(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6695775034168506219261537941034956927584422065076874801251660020428423104026", 10);
|
|
mpz_set_str(table[3], "5197420267683237306240775499875424144996523958400069022742285016534913385799", 10);
|
|
mpz_set_str(table[4], "17074609679021226285449642930975458476511844534614765112810293567988339496833", 10);
|
|
mpz_set_str(table[5], "10533691752850825062476518417950462929377671083305746097362765594757062687232", 10);
|
|
mpz_set_str(table[6], "13356608653567414655270342780312496170441603732808275648772250549294619087714", 10);
|
|
mpz_set_str(table[7], "1030716247791189929844088863163178366484069672471789317426450938865890574778", 10);
|
|
mpz_set_str(table[8], "20510571107372697486394751374344875434147976921404258783584332447627675396257", 10);
|
|
mpz_set_str(table[9], "12770083372100092832406108275349223480759865233011877406286425086472397887457", 10);
|
|
mpz_set_str(table[10], "223544369321138288883341539066019400464550950532942330029526813373258985528", 10);
|
|
mpz_set_str(table[11], "7616138897944611542954874086896865721938130685611930759645930549102552235095", 10);
|
|
mpz_set_str(table[12], "3087013059053718874934218938239071184961131231178827196009232241767383923591", 10);
|
|
mpz_set_str(table[13], "12604252438843664306831942589605285290630596405760109418660139017646646244269", 10);
|
|
mpz_set_str(table[14], "6857523874460704459251130739841555713735596313837728208122888679423297438372", 10);
|
|
mpz_set_str(table[15], "20485883534054426652566562959687928237813615165320957258873762291411180563164", 10);
|
|
mpz_set_str(table[16], "4358251930912448671298381923638710986102635143209553461502002448706919720401", 10);
|
|
mpz_set_str(table[17], "7142242320858937432342378044154436327354192663127754244697701771347165274606", 10);
|
|
mpz_set_str(table[18], "16940427345157479162358821230086923264652946527570868835759718148888833356980", 10);
|
|
mpz_set_str(table[19], "7377776643855758149954231921150968590556447189790842128654024741589565501977", 10);
|
|
mpz_set_str(table[20], "16825286187462427966438509313184801551590788729421980955777353101940276958482", 10);
|
|
mpz_set_str(table[21], "11213483608634305003613466676890484036788810486264758367374906029343525674103", 10);
|
|
mpz_set_str(table[22], "4604905195665109541955183695302050658901838170989978908038913249059952648801", 10);
|
|
mpz_set_str(table[23], "16202059727028069007202632575798283229373099948818861709732019157240754134267", 10);
|
|
mpz_set_str(table[24], "16452157401351640538938099965252676476108500978809287709572402698502049428276", 10);
|
|
mpz_set_str(table[25], "21340556381956640404782213432278949569712095946165390109738024692733598131089", 10);
|
|
mpz_set_str(table[26], "1845553526355757456853030171475488788243843504865980903413480810159871260653", 10);
|
|
mpz_set_str(table[27], "9073244485009210828068583976267719830425244296238830099204259544852268624066", 10);
|
|
mpz_set_str(table[28], "5924207578131749931692341430444437708280021699637339929201454236396772622131", 10);
|
|
mpz_set_str(table[29], "891733986774401515492584735286979329004999536934152306058649704163030671485", 10);
|
|
mpz_set_str(table[30], "19954984102575697683024763856133322056785812670293251149947811629454727255473", 10);
|
|
mpz_set_str(table[31], "7930092559151051993125981285785954615902139308034469080070188670778564918033", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=34
|
|
*/
|
|
void EscalarMulWindow_e69be60c27d0404b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "19356731180643309637009121646192804396766471748907440680403874992498550563936", 10);
|
|
mpz_set_str(table[3], "3214400749599751117032458916881242732298803247792239104774025503399355667725", 10);
|
|
mpz_set_str(table[4], "16176731219468381342338125115096093861536452745109122160740171559764396541701", 10);
|
|
mpz_set_str(table[5], "14292624222819795233131788626348133481378384030246167916543272349434345280017", 10);
|
|
mpz_set_str(table[6], "17001560595214375341407271813373493016868159311775717637125537997777326599986", 10);
|
|
mpz_set_str(table[7], "14098620486805565271297686041885804202986304629438161814105349240085262180484", 10);
|
|
mpz_set_str(table[8], "8950825534540625735109708330862303475368234806272419702362731373978759921032", 10);
|
|
mpz_set_str(table[9], "3187760222925636964961005022102038508294617828939716339969126545665490911639", 10);
|
|
mpz_set_str(table[10], "4206423529377484823374053871965263992268492361308043993445741405815440558195", 10);
|
|
mpz_set_str(table[11], "117402775101048846251950640665847179638595588207873204021950654297341007322", 10);
|
|
mpz_set_str(table[12], "12671804052728908592353296845628376913703600024216805591488162991063369538070", 10);
|
|
mpz_set_str(table[13], "9643532933350186842582715991489586688376308608952745935832020889414349175718", 10);
|
|
mpz_set_str(table[14], "2003483400428325022049318565403033513523819391942815705601950420113273071638", 10);
|
|
mpz_set_str(table[15], "9564509433383063496563620129733447283928935829151622380292623870105823123397", 10);
|
|
mpz_set_str(table[16], "13172307421343686976662800077391980043199555236705928617999793099244381275047", 10);
|
|
mpz_set_str(table[17], "9473492893959582088074400216725431432817228363183147064907391832599934156811", 10);
|
|
mpz_set_str(table[18], "3175634055931942852687296940283492856782159164762715277286248415655419167369", 10);
|
|
mpz_set_str(table[19], "19645064273841840834420152698365923439503423041115413270278618553739145726426", 10);
|
|
mpz_set_str(table[20], "2187325799028424613009897104407761487517923043665367878843245053392354789558", 10);
|
|
mpz_set_str(table[21], "858125624403277591213185002708527141323683107681104663947498365434285988710", 10);
|
|
mpz_set_str(table[22], "8928436775642075381449033430442251127214071473210180473154443506344988616047", 10);
|
|
mpz_set_str(table[23], "3556056691320241384174749967408654749136532987869766603026020578477093486658", 10);
|
|
mpz_set_str(table[24], "15882762071326605923630789856005377427598219925296721519185181863534340760741", 10);
|
|
mpz_set_str(table[25], "21013311961759198647484428840170370451737520016703334902877566437243610426333", 10);
|
|
mpz_set_str(table[26], "19617881628561550943891951219507153773810407064128297117390250215815646453171", 10);
|
|
mpz_set_str(table[27], "14564512694077277786275475836119383938096845806807349610320860538929086123285", 10);
|
|
mpz_set_str(table[28], "3909991144345443273336006272149351586238824009912076105297289353243649854339", 10);
|
|
mpz_set_str(table[29], "9653609465399255206199387481500542044995699730023024980360288543930623874623", 10);
|
|
mpz_set_str(table[30], "11439753936921323737030138941142488791529072393958106102322749616254417325380", 10);
|
|
mpz_set_str(table[31], "12110200772811938781097335995157143221829926879430281715589261757357242155172", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=35
|
|
*/
|
|
void EscalarMulWindow_e69be50c27d03e98(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15477858470919536743712764743292374382766910760573518973501234558946829424107", 10);
|
|
mpz_set_str(table[3], "17638789856201997338913036702341536640895282466111091966155486992750146958438", 10);
|
|
mpz_set_str(table[4], "7342690806915747576242538190877019505351600308035800763739279162133829363537", 10);
|
|
mpz_set_str(table[5], "5542290470077131483708137691828733226529489703740740260042745111531161118255", 10);
|
|
mpz_set_str(table[6], "4262049143693218282345805448276452210668203219524666610638765049564490883972", 10);
|
|
mpz_set_str(table[7], "8354133749962510427375999573843822831437235408714054885162597498295243407650", 10);
|
|
mpz_set_str(table[8], "17149998808269740365260796258728720037784140211237634441916366354474099540770", 10);
|
|
mpz_set_str(table[9], "21659796089416995949593404673332180275815497571442342905020865263110379860492", 10);
|
|
mpz_set_str(table[10], "5544115216916018249681852933145303572849458084775929644277059709748102432415", 10);
|
|
mpz_set_str(table[11], "7996278026520385999790495450140160036901347094531618138787726566105786893201", 10);
|
|
mpz_set_str(table[12], "5721675316776116677463060138927185301057866558465709031545140648154769427783", 10);
|
|
mpz_set_str(table[13], "17117856567397355908509384205517499340244585771242434131528529382491888164846", 10);
|
|
mpz_set_str(table[14], "17705309800835522565027208214619711057887528020635061576349562165907024080259", 10);
|
|
mpz_set_str(table[15], "13839122306496999981028366601288764577930256081754733203274302140204568362814", 10);
|
|
mpz_set_str(table[16], "12365339860491877448754964037017549012894874043326183453800663588685239129458", 10);
|
|
mpz_set_str(table[17], "7103352533142456625374776482097144897197741475549515134770911906817996853812", 10);
|
|
mpz_set_str(table[18], "20153805647755735674952030814882814200345002244582151700061172622136610649128", 10);
|
|
mpz_set_str(table[19], "19444840935820463375633100488173678100595726396437778215099437545187000336739", 10);
|
|
mpz_set_str(table[20], "12841849695787951519393669935771785819784466010534322836789720666863555910500", 10);
|
|
mpz_set_str(table[21], "14382950779010918477707385209038675456891395351788920609263233734261375421368", 10);
|
|
mpz_set_str(table[22], "20927148739115175789658571869286401388014111538113579857632566180932257691779", 10);
|
|
mpz_set_str(table[23], "18977034102311500876178051164245263182357848046092241842306215894497748163515", 10);
|
|
mpz_set_str(table[24], "12579904268229887884049836087446593707449070785690850582924631561204008263755", 10);
|
|
mpz_set_str(table[25], "11760996811281626838470806316954716199716752673144666141920798572658978581592", 10);
|
|
mpz_set_str(table[26], "18452087186763282521507882040320950290104742840759543597224990555567967253823", 10);
|
|
mpz_set_str(table[27], "21601443770186145669257018965320399635222072691176301354036469676415541588433", 10);
|
|
mpz_set_str(table[28], "13322368584583048478563822129589427826843795482859734430026366838899453843387", 10);
|
|
mpz_set_str(table[29], "2406525191445135487303102887742565347243926932577196863745858903452202198695", 10);
|
|
mpz_set_str(table[30], "5500441860857208815025223521189103935787080535077269596074130361358824514495", 10);
|
|
mpz_set_str(table[31], "11617266299199627504717528199837393719683852577001875437407627848684233508015", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=36
|
|
*/
|
|
void EscalarMulWindow_e69be80c27d043b1(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "17307669482643854263039904768588642635668857066388704306432435831758544837368", 10);
|
|
mpz_set_str(table[3], "16663190255416788407704976808532117057267079617443273321124829697453785444918", 10);
|
|
mpz_set_str(table[4], "7767688629439000977837583357048335803751727340651680730246959289946807183372", 10);
|
|
mpz_set_str(table[5], "670581420579370880760146636132432925158828701960760091123631831306066305857", 10);
|
|
mpz_set_str(table[6], "2754250386286792623408556107974057271384273619504869025763750491029768906432", 10);
|
|
mpz_set_str(table[7], "8972786173153157070923759063212088798164256593722111835652463937188906463832", 10);
|
|
mpz_set_str(table[8], "14952056120512888114956945784836096542980969062346335198552004255800581056809", 10);
|
|
mpz_set_str(table[9], "6208756170645771699974023924287711642819871950426788021388368388870068687211", 10);
|
|
mpz_set_str(table[10], "9487648326365151551210554720420517469667792470137555600645318278604820484844", 10);
|
|
mpz_set_str(table[11], "1761309055531769349179645391904019713243903726225475135955152977686810583411", 10);
|
|
mpz_set_str(table[12], "5393072332321576326324197849135578399689821905720106921767796905958389363455", 10);
|
|
mpz_set_str(table[13], "10219118870309667485905216591926989718802585969480959458081391563502394591754", 10);
|
|
mpz_set_str(table[14], "5012767231488385044616901150444815729766025148641534181224024719384569893478", 10);
|
|
mpz_set_str(table[15], "16971623375723949656735019154248722809180354622485970215410552856554116607732", 10);
|
|
mpz_set_str(table[16], "4641426648770894369488744049829994303917271881423240560998089530609770090830", 10);
|
|
mpz_set_str(table[17], "4885584141747048552920631926316329629943509280393191735953118555351800251524", 10);
|
|
mpz_set_str(table[18], "12168020483068372765472881384015064854173197357090588010091059008891478831924", 10);
|
|
mpz_set_str(table[19], "18769920721582347071100103860066024471886671624714267331128145731329578228191", 10);
|
|
mpz_set_str(table[20], "7486224941958967137281889168713117579286318794267933621159090263190091529622", 10);
|
|
mpz_set_str(table[21], "21008971468325197881661859020566988292260522741791296564199977711833331249447", 10);
|
|
mpz_set_str(table[22], "4303526478971332560438812109593348718907589330664035157460219337426436086699", 10);
|
|
mpz_set_str(table[23], "20792984994808067430361918636129565102954500138670007924286812085776974057580", 10);
|
|
mpz_set_str(table[24], "14559224584593636533853717297473881862676223317392544680668888444486518910425", 10);
|
|
mpz_set_str(table[25], "11975107998928827633083789319419094147500486171078475229516207544676716420033", 10);
|
|
mpz_set_str(table[26], "7728378291071634444660618821270833315069857642508327085412478054352067999083", 10);
|
|
mpz_set_str(table[27], "20332442452387954184551835122301709925524185513837803683177065672085544112959", 10);
|
|
mpz_set_str(table[28], "12798918567003036544589386025591090627172197031340787352654563746126406921707", 10);
|
|
mpz_set_str(table[29], "3329299673492925078594424888360807614697713101209268644939864284199642011774", 10);
|
|
mpz_set_str(table[30], "18394010273015341621427578548822976137750553416709676276954674815272968212961", 10);
|
|
mpz_set_str(table[31], "13615908497862565630094458349378103741629210136694775430382238855588043856859", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=37
|
|
*/
|
|
void EscalarMulWindow_e69be70c27d041fe(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9586950849703040997332496941311580827976739144750984047254996838554546235603", 10);
|
|
mpz_set_str(table[3], "2090285971362784586936521878866714584515422069745141071121222574879560547495", 10);
|
|
mpz_set_str(table[4], "20209442401801277282153213469610084346628371453461430310977869157838601964593", 10);
|
|
mpz_set_str(table[5], "177047666113722750123940819379330396454553543995305900754850011316619314611", 10);
|
|
mpz_set_str(table[6], "21621217688827256178324175700156122327875740717499516176272125761887287425859", 10);
|
|
mpz_set_str(table[7], "6427841745400342600990354490036610634313918528912098554943136181273175607692", 10);
|
|
mpz_set_str(table[8], "5427492986714083811507634481699217234152653916086833474156145822988026504957", 10);
|
|
mpz_set_str(table[9], "4872529677049968453427621564178312615471969367943201516431203863422062681938", 10);
|
|
mpz_set_str(table[10], "5728361243232283934190671989748947452660946050753721231095853259130128738309", 10);
|
|
mpz_set_str(table[11], "2050682098312649517547182126261112843356939265652326979687561223810334757974", 10);
|
|
mpz_set_str(table[12], "11029738845484600582427172624502595796793017211233240961500181076244076636737", 10);
|
|
mpz_set_str(table[13], "14215812279240788836354389861098019414358714808301542167064399870385144208087", 10);
|
|
mpz_set_str(table[14], "20141671793981498983094554391078722331741181770577364751935173292266384291267", 10);
|
|
mpz_set_str(table[15], "9423397011088682550441781828134858336342533574070101464963920574476131359448", 10);
|
|
mpz_set_str(table[16], "9511970957011993585023995786977374973306376936151726332981591230076928168021", 10);
|
|
mpz_set_str(table[17], "5050989132399831590142800043144646568552442494682751556916392292026512126564", 10);
|
|
mpz_set_str(table[18], "7921431342146006518841472403349361694696837284346661346550700645363707173551", 10);
|
|
mpz_set_str(table[19], "369114272715611994947243500141363187314941700907979969215444571664389154462", 10);
|
|
mpz_set_str(table[20], "393551513784143364217846086657753182891808645211302657506021269111983622728", 10);
|
|
mpz_set_str(table[21], "17568513579355029305508006474298070400828434968082588523603246629715173711746", 10);
|
|
mpz_set_str(table[22], "13864578826386492876630752562033073076136187202442046249877980818586207543144", 10);
|
|
mpz_set_str(table[23], "12457587815579238336015380657698245398677469348250732194383948196853468122686", 10);
|
|
mpz_set_str(table[24], "13029983506654160991296430284076194518578140374131769107184768203920377732908", 10);
|
|
mpz_set_str(table[25], "18048538059080820310986027973940517109996059980332614120410298329771255320983", 10);
|
|
mpz_set_str(table[26], "11144874847284538497187220686105175837653418347949213702251932893557585038064", 10);
|
|
mpz_set_str(table[27], "12016895202186391285166731990364722640940496755242143853746342358645015626449", 10);
|
|
mpz_set_str(table[28], "9950668404031269595402973478118581272405627596631633280905024236166815290178", 10);
|
|
mpz_set_str(table[29], "17276575103192809851485470255630636568755112967284605373073112521118419282982", 10);
|
|
mpz_set_str(table[30], "15459495953028188290022630542066258171880759101557517529386015675997556173701", 10);
|
|
mpz_set_str(table[31], "5404968800748103568231945340712465020004654645782844402391353716053549582786", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=38
|
|
*/
|
|
void EscalarMulWindow_e69be20c27d0397f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11031848773291267873186065243084213872315980512370138346458027946088130060914", 10);
|
|
mpz_set_str(table[3], "19855276696991515082872634390524015252319628835119055625627463036088024324694", 10);
|
|
mpz_set_str(table[4], "9759720591348236317390888618674244726821738782822305037163100223258270286344", 10);
|
|
mpz_set_str(table[5], "10366086947529075828253187164254133265922908035410147262025891268524691138562", 10);
|
|
mpz_set_str(table[6], "17876737775327796908273541001588587099464883400623881497813240134799268653301", 10);
|
|
mpz_set_str(table[7], "4664070995588760990363270210931759392582902505684778160337574775218938667332", 10);
|
|
mpz_set_str(table[8], "3163494980155562615310616269176352735423265350881561383679355580749055298850", 10);
|
|
mpz_set_str(table[9], "12743244853906757184841663597029604911629298558376404056194098044105937995801", 10);
|
|
mpz_set_str(table[10], "18894191482342621837486150377182799157802489170343843837811245990870506736214", 10);
|
|
mpz_set_str(table[11], "4812733793949861117383214441752403306242210289856783905371333898642641082497", 10);
|
|
mpz_set_str(table[12], "3594745955763248975589685637593398913185618933678360958857582997592005964766", 10);
|
|
mpz_set_str(table[13], "21395536110796607671721566277692559800154546051703301306773740203894868718673", 10);
|
|
mpz_set_str(table[14], "21621130055189892264800018463483264346920254848096408182766671993811318501985", 10);
|
|
mpz_set_str(table[15], "4422467983394168751929855389350597350118535149832095890949810085966429025447", 10);
|
|
mpz_set_str(table[16], "2998997651710192522321163098409041871650587829905058181318071451964038769990", 10);
|
|
mpz_set_str(table[17], "19709820544091923057607690820673843924219687381275553503067902933947559506719", 10);
|
|
mpz_set_str(table[18], "3484392812004749315642181652805335528377334673018196404998868095496503885632", 10);
|
|
mpz_set_str(table[19], "16322895093377578280779646179210626116794987660120746222943606082886827128827", 10);
|
|
mpz_set_str(table[20], "11403907538482891572428539697549038230800547825992188342881209246537405440780", 10);
|
|
mpz_set_str(table[21], "18195646139215879357148116323224212104863972717849085954880768019064292830079", 10);
|
|
mpz_set_str(table[22], "10295025732985283395518330747291968152692673857998328527008627549178215995215", 10);
|
|
mpz_set_str(table[23], "3704001853065649188851269168112010354231522884233765296423330296985360487733", 10);
|
|
mpz_set_str(table[24], "19285914399489289455204334894067366878018411935925540944308891092189202103041", 10);
|
|
mpz_set_str(table[25], "11275386310323277376445688087258777292227029473362709315980123513512352487597", 10);
|
|
mpz_set_str(table[26], "11253128570410572157795965460378200704251745324433664259436364402809952469253", 10);
|
|
mpz_set_str(table[27], "13678124442459781648502116407119163395996885151427816228897318850876370683761", 10);
|
|
mpz_set_str(table[28], "17131070275236789601069549782601657932528022188130328095983074153079792292519", 10);
|
|
mpz_set_str(table[29], "3737602467673707200309864835361347899625671639151883114723218212611516799091", 10);
|
|
mpz_set_str(table[30], "19428526732889569337036345477989611076037248893449456467054464464715759480357", 10);
|
|
mpz_set_str(table[31], "15415803230511320441427357626992665138327609628685860759397869805137079110259", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=39
|
|
*/
|
|
void EscalarMulWindow_e69be10c27d037cc(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1877473440848550039737548624719092669039759436076550397043550756885273933160", 10);
|
|
mpz_set_str(table[3], "15553609960609674142111547668862713168734737693644666320650247603437579965475", 10);
|
|
mpz_set_str(table[4], "10373982481710347506088793024234259396769940487443965415532306949329297536895", 10);
|
|
mpz_set_str(table[5], "17187216354891779721016313499051591766819944027396007071682229274026222977634", 10);
|
|
mpz_set_str(table[6], "20074006355017003729414061766882177488757633952325977993007153632742610396327", 10);
|
|
mpz_set_str(table[7], "17818063815384074821217830049696443201670983270981606315355185228492730280553", 10);
|
|
mpz_set_str(table[8], "13754512859986013143208423132991850272487128276456945247171484994612791296596", 10);
|
|
mpz_set_str(table[9], "19576626816189887509125860470584218340717735128787286133316231115932418182346", 10);
|
|
mpz_set_str(table[10], "4090049760204722842848025313106885472851063152524382754646298895430781342940", 10);
|
|
mpz_set_str(table[11], "16437033798863112996435931936175199674848893514477165013039019126659470799872", 10);
|
|
mpz_set_str(table[12], "12615047441256253439982292579412711384034157198132875227190324279725098764971", 10);
|
|
mpz_set_str(table[13], "17017295969024965424244491173204323307434344858250605604827268491475338720451", 10);
|
|
mpz_set_str(table[14], "8851104979457438759377756333954165977466782187548958973525456848721853520552", 10);
|
|
mpz_set_str(table[15], "19616112506100170999975693192631919504145452951048369659073636955180627834921", 10);
|
|
mpz_set_str(table[16], "3543893977283419677653354469301906648845506262045028984417193242222972402571", 10);
|
|
mpz_set_str(table[17], "18672100037313803442629607804696410009018030510908372236366809980248214902565", 10);
|
|
mpz_set_str(table[18], "14151011215754753275953057537504572555245843780363420956653380242721031912417", 10);
|
|
mpz_set_str(table[19], "4789122634383947551023343656690425111752922990621365807138913830048291097285", 10);
|
|
mpz_set_str(table[20], "3365326030486176209860959005766980397057116613063050978463177715868121930579", 10);
|
|
mpz_set_str(table[21], "17743731771785155697004375046425413113431470112660751550096430241416838955526", 10);
|
|
mpz_set_str(table[22], "16334228387987139672938764182719400157865839331892878617199650018650049902942", 10);
|
|
mpz_set_str(table[23], "5949779148425289097755576138057407910249225977751658101615058920163626074715", 10);
|
|
mpz_set_str(table[24], "1767637989551376072895631775304064545854810537463471627137294610672587309708", 10);
|
|
mpz_set_str(table[25], "17731423747662789116383437956431590385350034518107417296138794406822673280158", 10);
|
|
mpz_set_str(table[26], "12307692310876733199147427527424422362926076847253980331884952686598334900087", 10);
|
|
mpz_set_str(table[27], "6181717108367136878887630829184362294011564924843166916093380887665473172202", 10);
|
|
mpz_set_str(table[28], "701760095059377045455583312563164763755476495091670659201475255099307716822", 10);
|
|
mpz_set_str(table[29], "9636162240031677877166641100913295101763219520129130789084217061701537105526", 10);
|
|
mpz_set_str(table[30], "7083854214784697692743884873881116891712577934450873605611161870871264119856", 10);
|
|
mpz_set_str(table[31], "7045038150918812377889732524655437902810531256775325111590096408593954009046", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=40
|
|
*/
|
|
void EscalarMulWindow_e684600c27bc7db8(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6036355027117291367803935904347904350611569604994628698666365676215607386874", 10);
|
|
mpz_set_str(table[3], "9470781519771956392054550195937279092773873670145135625037233029170034571000", 10);
|
|
mpz_set_str(table[4], "9532675295313861579306183807300053245837483443707176933432236413786711232615", 10);
|
|
mpz_set_str(table[5], "12602590000410365771039350337230672602022635229535744066998938056274774693962", 10);
|
|
mpz_set_str(table[6], "12474093035349057065435248151390233447669146673507024367415212273807397471068", 10);
|
|
mpz_set_str(table[7], "15090247843821716202793224017953423716294976975730482056742963266949090704321", 10);
|
|
mpz_set_str(table[8], "993401335099733679196104478246237172516229959107401964890709934715109383666", 10);
|
|
mpz_set_str(table[9], "4549835431802039209672582833046615930670613868388322557846320365486432865329", 10);
|
|
mpz_set_str(table[10], "18615693556164856515661662500211371115751969491172607019818868580531772769520", 10);
|
|
mpz_set_str(table[11], "12557380975196622146484143952799803377982900778384937927590994448162712406411", 10);
|
|
mpz_set_str(table[12], "21528064624971072836570433006788669323788103143815997699785127963180931679285", 10);
|
|
mpz_set_str(table[13], "2815013592661255772060458001206715011409597520516504741640748597928030514456", 10);
|
|
mpz_set_str(table[14], "3283979506432038757211295161706121204468048662680735081633823925636801547138", 10);
|
|
mpz_set_str(table[15], "17979259647516459885536032829330171271887168033049512956985480630126402921607", 10);
|
|
mpz_set_str(table[16], "17679460920469054540961921780259819518073073225825973021584960591844923526248", 10);
|
|
mpz_set_str(table[17], "1435546266715668935095994191129531425311368275460137428461902948813106005133", 10);
|
|
mpz_set_str(table[18], "8529569085560589258729123956325076977912516490984024131424202844108799299247", 10);
|
|
mpz_set_str(table[19], "14481204978249534685224508067409260017760408355243377092535739467560252539864", 10);
|
|
mpz_set_str(table[20], "5469648139591835701556357296669245434546329076027353304988201187896135733761", 10);
|
|
mpz_set_str(table[21], "8656399088437178980013918229953485726086133022762077932812311030398244680669", 10);
|
|
mpz_set_str(table[22], "9453484883554390052019033701573798569441565517195307870806396090645110901971", 10);
|
|
mpz_set_str(table[23], "2428705983531577652063225905012638240205977788535395577120897179597078390829", 10);
|
|
mpz_set_str(table[24], "8770845409247342317045867059283141752214525325141736923338817738273720253637", 10);
|
|
mpz_set_str(table[25], "10227070102072752704599056055717145346089895691242846586200447274931375568504", 10);
|
|
mpz_set_str(table[26], "12351497051066130754136747927357673006783165273221671674795978348293197924111", 10);
|
|
mpz_set_str(table[27], "10399138865887889172750326544145319920102338612354666914685658386385743856535", 10);
|
|
mpz_set_str(table[28], "3687201658877386269675562742672190827865815856365296497260718839984937528322", 10);
|
|
mpz_set_str(table[29], "11372725189122860200735097372440512569231475100810300031276146876637703080784", 10);
|
|
mpz_set_str(table[30], "15842658200268673885101124458352413063036847727835395734460438249573819844142", 10);
|
|
mpz_set_str(table[31], "5260848707964136641726275398826795509620380915293530555564019231519378758485", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=41
|
|
*/
|
|
void EscalarMulWindow_e684610c27bc7f6b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9049157878168304256653449895907353781869611266644813952473684865042109337042", 10);
|
|
mpz_set_str(table[3], "12389470665747793185620358781235851242679605886629314583690882283575935256672", 10);
|
|
mpz_set_str(table[4], "15820067201685709791446447583790910155550308811742442175406022761338328454431", 10);
|
|
mpz_set_str(table[5], "18933615658181637253586639093236307605169765043574853214660237871137889668122", 10);
|
|
mpz_set_str(table[6], "16268031786082356881390126615340499834888973547448347407612074392001229054116", 10);
|
|
mpz_set_str(table[7], "13403374209066712765051385005005290202580655781281156893506620579185125651434", 10);
|
|
mpz_set_str(table[8], "12443349336884307714178794889988387823359717547244391161588276962473746464301", 10);
|
|
mpz_set_str(table[9], "8865217004801814820071754424297047193368031348497541004043826193944071940478", 10);
|
|
mpz_set_str(table[10], "10405312675358469123384333322022234414010992859146270783984523097261588402079", 10);
|
|
mpz_set_str(table[11], "15576110011669724418535862529578949341724918859194415259002744070823422524091", 10);
|
|
mpz_set_str(table[12], "2959121400672142294042865442517391633632715449545284698594378498018112165467", 10);
|
|
mpz_set_str(table[13], "14329928203050411659263068059568018648091852703579618818241874225854851033468", 10);
|
|
mpz_set_str(table[14], "7114766822589092509785506520541005701778906668978339826593984526368514401858", 10);
|
|
mpz_set_str(table[15], "5775178933170501931557559885350212563450149681901808721200816015750405320044", 10);
|
|
mpz_set_str(table[16], "8944172830892074899314370751557040890150768955823981583652756837995492991755", 10);
|
|
mpz_set_str(table[17], "7512312292369758631512001425697241522515694700567727045416645279145705831892", 10);
|
|
mpz_set_str(table[18], "550897582470191906200868582814473987275434131570257271078587066370896560559", 10);
|
|
mpz_set_str(table[19], "5976763693632566058193596669979825661089187124788895456697614504801823884741", 10);
|
|
mpz_set_str(table[20], "5078133351430707910420535872715477894146235008945906157749939301851969963200", 10);
|
|
mpz_set_str(table[21], "16713977601277385997542346589271210943923985259682807939018692402173239634212", 10);
|
|
mpz_set_str(table[22], "20325773786908361664154055870513974619336071512807780736515037336216729482098", 10);
|
|
mpz_set_str(table[23], "12933368737451083278239958495890763526451440857809685985614786462151270403622", 10);
|
|
mpz_set_str(table[24], "11172678350195317096946317157489734078869608787387241745585886646764816080012", 10);
|
|
mpz_set_str(table[25], "4682520801386285636306564508974514328180899311914695159998232017469596845530", 10);
|
|
mpz_set_str(table[26], "12635379674674560804687198058232239264138501915111472333253480725869332688338", 10);
|
|
mpz_set_str(table[27], "1766653178103027911686269525961088666167393838200439665857362631139132338384", 10);
|
|
mpz_set_str(table[28], "21834134436898574588628001276850799742861006774133000031501677961314850076484", 10);
|
|
mpz_set_str(table[29], "12427429562864458517471234973378871969504922247751762022411217185105625195059", 10);
|
|
mpz_set_str(table[30], "4528582156170357658879720449774402365494927005978391077176929516480011110960", 10);
|
|
mpz_set_str(table[31], "19566660159865826747666264107866451108291737741968835810890051194038117832458", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=42
|
|
*/
|
|
void EscalarMulWindow_e684620c27bc811e(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16374769721376430840842257175660037581116689253001572418668231472135368119129", 10);
|
|
mpz_set_str(table[3], "13759412791308992624630717261380499431298404595960558382849326605388483813141", 10);
|
|
mpz_set_str(table[4], "17101118581080733788377267369796649744646094273525875582730309545814037104786", 10);
|
|
mpz_set_str(table[5], "8346925150147448846650655000830061632464893918480721100977869267550638743740", 10);
|
|
mpz_set_str(table[6], "16004997392325943104130831332697511746448901049675259649965618000507887314881", 10);
|
|
mpz_set_str(table[7], "12591368094644377864605631759305201560354168563962153951759207469634945341775", 10);
|
|
mpz_set_str(table[8], "14259351533215298779115106025065732588210893711127839722757743808238665984759", 10);
|
|
mpz_set_str(table[9], "8447442187204601448429746272219199678215852240535899646054374198700423679942", 10);
|
|
mpz_set_str(table[10], "10080292641230775537158183250493716731922153696018921478234635515902884448768", 10);
|
|
mpz_set_str(table[11], "3008166143834905196676500458556366815843921169320021276149276941023424251599", 10);
|
|
mpz_set_str(table[12], "18635330010195827731172046070424714525600593103448319680796985336934838426225", 10);
|
|
mpz_set_str(table[13], "6870714717041282152731506039404232002968764000137863568100152500018094628970", 10);
|
|
mpz_set_str(table[14], "9715983011735451313214040659603599731191529157725650820964107012571024668044", 10);
|
|
mpz_set_str(table[15], "15668341751832674964899719439620043834808587814313816475290936280710774121061", 10);
|
|
mpz_set_str(table[16], "19854313321788681655192570071804074598688500260763627246614618514799217710814", 10);
|
|
mpz_set_str(table[17], "12840271923779161012362023610679191895140531269505260846570628796771298859403", 10);
|
|
mpz_set_str(table[18], "20548115208111910058272152820751651134506689438829448473059278499725406848389", 10);
|
|
mpz_set_str(table[19], "14073771305216179686338663031673579041085817872178587662397402004081466548333", 10);
|
|
mpz_set_str(table[20], "13219941232407496667425796549282794247891842765519607465499369099899098913637", 10);
|
|
mpz_set_str(table[21], "18204552199279958506336653343673291506079741563809223371746634352472005750653", 10);
|
|
mpz_set_str(table[22], "18626223079267935096194035064030472731715594266969450398370618589712016167185", 10);
|
|
mpz_set_str(table[23], "10110268722853574487780406783538284371808370244403645386850820780451748844582", 10);
|
|
mpz_set_str(table[24], "4346346756930467159444621652769162319531926581718261690159687638253374942385", 10);
|
|
mpz_set_str(table[25], "14688175027282253884378419588624911773077580306143678671700907543443280367422", 10);
|
|
mpz_set_str(table[26], "13752713808876322463577872240992761807109066269294845721398393931142717144357", 10);
|
|
mpz_set_str(table[27], "6287433609528014121110982752683173229279511269211206698315472803509822189095", 10);
|
|
mpz_set_str(table[28], "18885266426395519080949431678122133331901594351690199604116272680955650358381", 10);
|
|
mpz_set_str(table[29], "4397095009026172161718114572112466940649154554219936020208951320387153221836", 10);
|
|
mpz_set_str(table[30], "1636679318348535354406811409644190254695155426589959637792501050388367968533", 10);
|
|
mpz_set_str(table[31], "6045362009124980420721878937399849376037622131458142857123588639292698397008", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=43
|
|
*/
|
|
void EscalarMulWindow_e684630c27bc82d1(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16868424585950443164167961595249842310394768842524058680821397465715237078422", 10);
|
|
mpz_set_str(table[3], "13469605623336401919277411491989737457586432846632404104363430941889579430040", 10);
|
|
mpz_set_str(table[4], "5643192289783613541492335245459958457219080118959071624407680008476345563905", 10);
|
|
mpz_set_str(table[5], "15240871288722266231269940981572371229064054921164118653025676497002265904966", 10);
|
|
mpz_set_str(table[6], "15035628225327978120938559230666779734194043221229825814342593400264078590039", 10);
|
|
mpz_set_str(table[7], "1251884969097280329652760118318800203768878648453025276295791059521598247300", 10);
|
|
mpz_set_str(table[8], "1699932370279535150438251664289841801595764750938415617442722746564888777697", 10);
|
|
mpz_set_str(table[9], "13701622976582581018113030761401213478445108136797667122483584523425622719875", 10);
|
|
mpz_set_str(table[10], "18373025158868026427597340437438471626969327053080751886183152715350045713493", 10);
|
|
mpz_set_str(table[11], "10520297404632996149484278163172792833592428348950663009672001557383667940961", 10);
|
|
mpz_set_str(table[12], "11239722570657638882071847349104013664977783536682673447616479473318427488", 10);
|
|
mpz_set_str(table[13], "12006002656745879272977492507231887274693978835865855329047391265225883250341", 10);
|
|
mpz_set_str(table[14], "14434000709848329936623811299339195492571122619211660652519374301307752629403", 10);
|
|
mpz_set_str(table[15], "15852871632838075373291692443081083081819702186507978563236260236107328928554", 10);
|
|
mpz_set_str(table[16], "20597184115028219437082729766105743338146613662234305634378939463830392148142", 10);
|
|
mpz_set_str(table[17], "1245829206776252932053761235034509701390992797593773353291677440533486148901", 10);
|
|
mpz_set_str(table[18], "17079330057571769415442490216644367208114046384039823297526628170141464068422", 10);
|
|
mpz_set_str(table[19], "11505668642665180770732571612427865347138736860208769311006727188120772373581", 10);
|
|
mpz_set_str(table[20], "19449247283899615663328685962241331736336474772120809821655136184994679690378", 10);
|
|
mpz_set_str(table[21], "19184926075196842752627618705711102374424404967439967584810552676634519172175", 10);
|
|
mpz_set_str(table[22], "19254758195827452917289113769963420403555358815998850368652570793499070216132", 10);
|
|
mpz_set_str(table[23], "14215926209462692197182203676316645633059342924694262094626278512681873241689", 10);
|
|
mpz_set_str(table[24], "17883462230785397065183671788255948626210388219135348326261224755755423726953", 10);
|
|
mpz_set_str(table[25], "19660971719736541453710960233791497670698845667936886412113109272059138930468", 10);
|
|
mpz_set_str(table[26], "11497121381445734450263969996519847669244971728461431077339573809205249899743", 10);
|
|
mpz_set_str(table[27], "9468198604931472923284206335059174907307749251925517365211859898875806124453", 10);
|
|
mpz_set_str(table[28], "340230207720899104157788240826165612093523123877879767031973995346901073931", 10);
|
|
mpz_set_str(table[29], "19057121218095803650400648929659753124187772464438058898218944667456287466444", 10);
|
|
mpz_set_str(table[30], "10202329436562641892251890658312974877250491731172132313155583558932102215713", 10);
|
|
mpz_set_str(table[31], "3331808326978303271090114835766082600669263632107482517851974894821310880697", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=44
|
|
*/
|
|
void EscalarMulWindow_e684640c27bc8484(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "19198320167181649080151960350514348849249604859599611351928290714146318824808", 10);
|
|
mpz_set_str(table[3], "5336132696748869536861038294973547567357683612637241398987159788547232480350", 10);
|
|
mpz_set_str(table[4], "20104536688144907148396838691869613403751777878928417537897808074633205806634", 10);
|
|
mpz_set_str(table[5], "21321507292368377242638596755737007251437128946821282487099734532797338729096", 10);
|
|
mpz_set_str(table[6], "21132729298347053836323123477559443403741222056884387902875533281339992486014", 10);
|
|
mpz_set_str(table[7], "15604974489107531936047999892976686179957949008842506965238339472992162050860", 10);
|
|
mpz_set_str(table[8], "10073089368474400769142464369740977417099995973289261881734081551572023575121", 10);
|
|
mpz_set_str(table[9], "13558992091486350175170150373846875116802211313968334151084766289553357824732", 10);
|
|
mpz_set_str(table[10], "1844602875495871191265120085744337256300770950205562622915855495095877578746", 10);
|
|
mpz_set_str(table[11], "12075935930232513447726071931338021431190375109799395879512946453492139984518", 10);
|
|
mpz_set_str(table[12], "15856916537291627080686297851713329678994388106571217849795529816243917143038", 10);
|
|
mpz_set_str(table[13], "12815855031925801078096601215906267192821703882277196886338227981826360328020", 10);
|
|
mpz_set_str(table[14], "12757198154355723152167860064472796117437993324503356931058749667538266344611", 10);
|
|
mpz_set_str(table[15], "1482189199946983619590957860996638884985282210679745993134467669621861356144", 10);
|
|
mpz_set_str(table[16], "20010084950193100242248031110568527529171330778871171641928669908185141250079", 10);
|
|
mpz_set_str(table[17], "20645725020427167151843153928487062134164091033840658610265074618643205922966", 10);
|
|
mpz_set_str(table[18], "13059318330938147303907966652108434130705282008827169374839689137299249600092", 10);
|
|
mpz_set_str(table[19], "21051541777078238027670014516018147174631139407686774292463930367461762201050", 10);
|
|
mpz_set_str(table[20], "7351784653018553553470648570709573042878527767605002111433745974483464120179", 10);
|
|
mpz_set_str(table[21], "12321132428505695916648714611341194802832212244297917631957487904975884633898", 10);
|
|
mpz_set_str(table[22], "13569544997913770138664232938933308726112164936038236896903323006739493381900", 10);
|
|
mpz_set_str(table[23], "6510900182517216186300768327734633930164742309630349160535774541329697634582", 10);
|
|
mpz_set_str(table[24], "8864994441518299577266360218083192325922558202213628226801943360408405958441", 10);
|
|
mpz_set_str(table[25], "7493854544599842249431688286284274841072457349257740217334761851524207371089", 10);
|
|
mpz_set_str(table[26], "3455045041980678081421131853169159540116546418916081294928955235769611260849", 10);
|
|
mpz_set_str(table[27], "8415922586911094197736735759223237608885611732143760972535278272858812689164", 10);
|
|
mpz_set_str(table[28], "9839140415712740795400814646739576312673712884005889818039490796293020169724", 10);
|
|
mpz_set_str(table[29], "6347425921934489673463449271431178581378489622675004748014472303079191971451", 10);
|
|
mpz_set_str(table[30], "3352181008318470761972202227154220969108332398203486706581213694965650539844", 10);
|
|
mpz_set_str(table[31], "20011493695391395143579367726292923504362505998799961847086220205609368987595", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=45
|
|
*/
|
|
void EscalarMulWindow_e684650c27bc8637(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11358203158679440839935038204013542841444958733645789654091304202677211020517", 10);
|
|
mpz_set_str(table[3], "10198375248299371418004463621339765291702464637799525907976734069670590655959", 10);
|
|
mpz_set_str(table[4], "5640771103795071855015547063208043052064880653839989538145511516119420803061", 10);
|
|
mpz_set_str(table[5], "3572127675729934348781073782829417144601311647810868308081890169524342091591", 10);
|
|
mpz_set_str(table[6], "3165075507482898381633759142613837711480464559664825190546043626859869623447", 10);
|
|
mpz_set_str(table[7], "5276780632252137403354566093549182865729938812613361642559946552387581479862", 10);
|
|
mpz_set_str(table[8], "16495082045267630987985070056382982718559132442826550073368742187679233640995", 10);
|
|
mpz_set_str(table[9], "17976454385418689913839483092280414154384043428551314180998182793825639592932", 10);
|
|
mpz_set_str(table[10], "5585913523717147043618482967254355301828513592438860997642329456576138560820", 10);
|
|
mpz_set_str(table[11], "9587426722227767872790157139872934784974708541382452144151293179823325143811", 10);
|
|
mpz_set_str(table[12], "9277777044327580246057540998635414522707517795801777248881733756912697646965", 10);
|
|
mpz_set_str(table[13], "4437585467808519461207095406946958910034640752454219401797599599065002133559", 10);
|
|
mpz_set_str(table[14], "751847780409285199923110701213588945728798631708400042494020281294558475130", 10);
|
|
mpz_set_str(table[15], "9777866444546761632260268862719640620415675321379368902037912160462418297689", 10);
|
|
mpz_set_str(table[16], "12025212247424298102865482411172201538090884360506135875235042946635312383946", 10);
|
|
mpz_set_str(table[17], "7402444178642141157174580472235595011966536638910653511125739975139386608583", 10);
|
|
mpz_set_str(table[18], "11077731909763130828580011353442158304410957031086422747542512675250106767239", 10);
|
|
mpz_set_str(table[19], "7844852735812537631556651673190091429543504802814562764576498573313933797496", 10);
|
|
mpz_set_str(table[20], "948659922679101300341238221811262354366513868059452722896954601390660202871", 10);
|
|
mpz_set_str(table[21], "12774480570138819462045922798913038826976096893913858712521740174383304302855", 10);
|
|
mpz_set_str(table[22], "3467933742541424586567545259962148279890118948071815506091221764633552743023", 10);
|
|
mpz_set_str(table[23], "18800846024966972681253897780285096568965163806524351739213026162355352988455", 10);
|
|
mpz_set_str(table[24], "12983067540566413682341665751614486787140259398030718860719002157454815978997", 10);
|
|
mpz_set_str(table[25], "5908505150667581730701077560300826189281751231850627083233304213201014144381", 10);
|
|
mpz_set_str(table[26], "1832699544376630118021234138249220909456732396411586952668795176067799645927", 10);
|
|
mpz_set_str(table[27], "4808043596117940237263286910898845658903382348700548425183938831394434612238", 10);
|
|
mpz_set_str(table[28], "966145747230158626445157800238193978670477031055546985406113404674852526335", 10);
|
|
mpz_set_str(table[29], "10579293590209416225906178088867634727730465385697831694982611450832631288788", 10);
|
|
mpz_set_str(table[30], "21199107697994009541223315952344300422175838886921072273030074846165590478789", 10);
|
|
mpz_set_str(table[31], "16227136849799743735790973090087817810819231735325440686866669938917528842568", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=46
|
|
*/
|
|
void EscalarMulWindow_e684660c27bc87ea(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9294944581630152517843124312576277268647256541087612833551714268692410000384", 10);
|
|
mpz_set_str(table[3], "93672056031748289203536474675140068289956074372704276886242649048442656570", 10);
|
|
mpz_set_str(table[4], "8871750697402786393668101055548550955086899314109886591998352753413338344966", 10);
|
|
mpz_set_str(table[5], "20686189399915615116236555317071204076397525472971028390809600443444758189052", 10);
|
|
mpz_set_str(table[6], "4546527580698870950143854890355615765363148236303606104958401824319606177137", 10);
|
|
mpz_set_str(table[7], "6173834688588905753072963298940459832178926672289431068275659350280602917500", 10);
|
|
mpz_set_str(table[8], "2484940198811774992783100093847905916200606529318843366211314377361951244713", 10);
|
|
mpz_set_str(table[9], "3907631999468685241117409616828719878593509894077661203391632444263946380188", 10);
|
|
mpz_set_str(table[10], "19358483176580442416350166633807416680278184472416935213229007464139200253832", 10);
|
|
mpz_set_str(table[11], "4739164280695060706243371357353432811474659941594732086938791801188837688633", 10);
|
|
mpz_set_str(table[12], "25050751210504519216950112433488778262331723764805009408639058021069121231", 10);
|
|
mpz_set_str(table[13], "1107088713475466706449430448996317863352163121744440273934523705262804030126", 10);
|
|
mpz_set_str(table[14], "17466873334961865408477608701304229093543444811772056093875981173718523150223", 10);
|
|
mpz_set_str(table[15], "18121282831388052832613906728315371341921421295928751151579881839355310511850", 10);
|
|
mpz_set_str(table[16], "2135966305488332697696544120560922888383374984201569098709794000846014342666", 10);
|
|
mpz_set_str(table[17], "4160907728127256013994214572559259242541538050266008153036855184141316703646", 10);
|
|
mpz_set_str(table[18], "2854982808494848051723930298045091192593731892861910214052961227936906428218", 10);
|
|
mpz_set_str(table[19], "15986791942246127423403757257167237980680328107984202672799924263886369004220", 10);
|
|
mpz_set_str(table[20], "15923401052651001831849154219253941003751617159757475484595725044615762192509", 10);
|
|
mpz_set_str(table[21], "4941735005045176509184628976585185290914026067093562778961259676164158673221", 10);
|
|
mpz_set_str(table[22], "6058648167641552246107796352113321474859469675600353857354292269564005074853", 10);
|
|
mpz_set_str(table[23], "542856370170516615432638950168192613406616612171143498438742377098089313337", 10);
|
|
mpz_set_str(table[24], "21796440091850446820982409886350059877781511783715041674928916040694765178324", 10);
|
|
mpz_set_str(table[25], "12733558536444241144104445355979943699148655740292251276608809714469319887889", 10);
|
|
mpz_set_str(table[26], "11085242460563650113956303844211324604593296586029729705224665826567327503390", 10);
|
|
mpz_set_str(table[27], "11345440708653194019206856953966575200180167130894966604265511042902172370628", 10);
|
|
mpz_set_str(table[28], "3715847540800537955609773281654697422170457255342608910433148069584714669806", 10);
|
|
mpz_set_str(table[29], "20547142829526188047444920707550262048006044042697503497670695035919970130296", 10);
|
|
mpz_set_str(table[30], "15822361156221651879168883882947084959430889415992045845779564852479745608354", 10);
|
|
mpz_set_str(table[31], "17113442432094366454821058395274183679144022375251092890335599383390289585356", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=47
|
|
*/
|
|
void EscalarMulWindow_e684670c27bc899d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18925867776653597898422038321018373211496333219584331684158666888271208434971", 10);
|
|
mpz_set_str(table[3], "3218987821387916557569400428340125811699529866769304729163573933651914878718", 10);
|
|
mpz_set_str(table[4], "8042110227510899662844205947056386853316948854099671464788653555520747542923", 10);
|
|
mpz_set_str(table[5], "12731906060601865921301916966998910091952039319128382028941279883816625053811", 10);
|
|
mpz_set_str(table[6], "7846345453803135249143917326836475772650952196172957229177649135610801425861", 10);
|
|
mpz_set_str(table[7], "15030543581056271024825930849982048386393365865876798032560387300159292596607", 10);
|
|
mpz_set_str(table[8], "6328532818677424376956665198712048490375526760139762060113509932980016557001", 10);
|
|
mpz_set_str(table[9], "9339007355782143066310114962685698092508288029849139855301688874345564030260", 10);
|
|
mpz_set_str(table[10], "8346005780349696611173325295118244592122279978299179874154959759363677445244", 10);
|
|
mpz_set_str(table[11], "17941754841860109498373841044569507611544302131237505891419415025091331459978", 10);
|
|
mpz_set_str(table[12], "4397594159944001532493031321316588194265393562479813134930505439343511773401", 10);
|
|
mpz_set_str(table[13], "6502489071257704137212803667079996751056176175233929990078320988913452438277", 10);
|
|
mpz_set_str(table[14], "2864140653293198439198715045881994808714698256498989744801858973867014034854", 10);
|
|
mpz_set_str(table[15], "5993545009245160797926019334506027160142600946320582582422163341150343622057", 10);
|
|
mpz_set_str(table[16], "11939267480629275794982820275145852252172633902542095616667756869794066020007", 10);
|
|
mpz_set_str(table[17], "11585987427904323207209658297227332332495909277534484222520439916761994274203", 10);
|
|
mpz_set_str(table[18], "1952840790707188329727174116871428576263706682306246094918634512179991295405", 10);
|
|
mpz_set_str(table[19], "15372626835595841438549330136082999373390688878141810191912539285422161976536", 10);
|
|
mpz_set_str(table[20], "16605863176813990471768507331903239978375623989400064050415575871608641680463", 10);
|
|
mpz_set_str(table[21], "21202308481596801032495221662238909733053294920299401446372269062196694889423", 10);
|
|
mpz_set_str(table[22], "18464427162021565882891698662820462694315917959650566356700668417115007697009", 10);
|
|
mpz_set_str(table[23], "4726098062265344541475867966227022684014627851819457016716289431186464913582", 10);
|
|
mpz_set_str(table[24], "14907082382368850140278500714809163321627503509470220515303203944609951407788", 10);
|
|
mpz_set_str(table[25], "20268152065625742552586733170628638826524828369583760767378682928245751771352", 10);
|
|
mpz_set_str(table[26], "15038388697901410428116905776598732852090308019299859524541819082256970215571", 10);
|
|
mpz_set_str(table[27], "4041451710702442461175793560122447322421342376960176847981169858899954990935", 10);
|
|
mpz_set_str(table[28], "11212236402643727013934146887904689330416711614861470127228258008743702079763", 10);
|
|
mpz_set_str(table[29], "19678998786510739724425231779780865100663072652055904253825718324909326503357", 10);
|
|
mpz_set_str(table[30], "10479692091872153164360236840873839589008755183446640717074493849509424890935", 10);
|
|
mpz_set_str(table[31], "4197316437801067473931189858732214533522611626453051383043803663128161346401", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=48
|
|
*/
|
|
void EscalarMulWindow_e684580c27bc7020(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4745553688090187507702023815741546100773765747525046780830893542809326434269", 10);
|
|
mpz_set_str(table[3], "19609562688739457554746271151421097753584537371326387850382429597196054522455", 10);
|
|
mpz_set_str(table[4], "21468776539834690184343002036409916222791413452107961953141748321693148839076", 10);
|
|
mpz_set_str(table[5], "19463591723984137462865029270150969056994337740829720559513479618374214976581", 10);
|
|
mpz_set_str(table[6], "4777001384812346226304685383499714194384755515825778719752432299796061371491", 10);
|
|
mpz_set_str(table[7], "19958598804456881789336809870168505052627827412414498213931114388141531903825", 10);
|
|
mpz_set_str(table[8], "18316600951261063523041288549538056235126619931589179522750571984408234851019", 10);
|
|
mpz_set_str(table[9], "21442163574331265842363387478568754583646637602300808295398324114305120603727", 10);
|
|
mpz_set_str(table[10], "3008326846029307253603390514405429378530853066718170472774203817367860956409", 10);
|
|
mpz_set_str(table[11], "19218029447980020601315439948390656683594321568142618200307932063034071190544", 10);
|
|
mpz_set_str(table[12], "21399441267063536031003316565158482176374724980774583155264759223787147799217", 10);
|
|
mpz_set_str(table[13], "17030068272232494875209552956726416026472346550146665273817090947581885151817", 10);
|
|
mpz_set_str(table[14], "7938847958952814066160894258920675950384823606771905786105718865860677190614", 10);
|
|
mpz_set_str(table[15], "14592003161730215272638437036449503652637894281812839983001493046810483514298", 10);
|
|
mpz_set_str(table[16], "12394638385194835645052908348585901072862108291325484532332478048811593734234", 10);
|
|
mpz_set_str(table[17], "15949506939481186547288392965382366602496954712738621813791214254638093074390", 10);
|
|
mpz_set_str(table[18], "12078132328062331689780747358139226898518722653738016128708752058535602427355", 10);
|
|
mpz_set_str(table[19], "16622842011121394510041430193700491686849786112601385240075541169633355826027", 10);
|
|
mpz_set_str(table[20], "14418498040868724253295984446008273039206749541013731457364637800721233141721", 10);
|
|
mpz_set_str(table[21], "8885217258482159210670047413691057636290416850847152092605348659600953807157", 10);
|
|
mpz_set_str(table[22], "18182408619148372561407741713336729741183829746643879872707192041988015883927", 10);
|
|
mpz_set_str(table[23], "5960366158035834487189075733401220480500280361532439028333310348520613227959", 10);
|
|
mpz_set_str(table[24], "9536745880217079512005277936204810244230167360819153313604182860623081950866", 10);
|
|
mpz_set_str(table[25], "18802774000780485190864845422997581925819216302286348207093233798037998964276", 10);
|
|
mpz_set_str(table[26], "18712641710803771484571345263736048885500750782406591660334370943834811628505", 10);
|
|
mpz_set_str(table[27], "5006458636478942442891235124541878873877472533797849892904695562259131513852", 10);
|
|
mpz_set_str(table[28], "17858138530514393971276168677591018538860356721043051209528630610531361989259", 10);
|
|
mpz_set_str(table[29], "20990700251448981181714193146492436390445011629441867101428989866712869247698", 10);
|
|
mpz_set_str(table[30], "5978738552467007029506876463502560968009761893423673748084849551676240115740", 10);
|
|
mpz_set_str(table[31], "6095294971059226952244252728057255767291818575745271857446258195154760603452", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=49
|
|
*/
|
|
void EscalarMulWindow_e684590c27bc71d3(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "5129674555358910333866544510712603207414512773946086316287835556618045310227", 10);
|
|
mpz_set_str(table[3], "17456197894656894624440439810423174870837684249303341977565687035335788451978", 10);
|
|
mpz_set_str(table[4], "13825373671386236957123187152453795460025370237097837083427491763550190231938", 10);
|
|
mpz_set_str(table[5], "15859226986220524334910175664115258425657666076465556206854244479904756933206", 10);
|
|
mpz_set_str(table[6], "16821114763756400814167553774518828069763988192861517508786610458716027534274", 10);
|
|
mpz_set_str(table[7], "2096784699013873957503723814575727088961449762347379793041077601682831222138", 10);
|
|
mpz_set_str(table[8], "11007541089685757122438826774111649860335908504124917414999208367001736173716", 10);
|
|
mpz_set_str(table[9], "21834166514679682493595291712099334235356879390098479622972267688068281282645", 10);
|
|
mpz_set_str(table[10], "961294528390187738640726417394026428744384202707949561589165356950566623030", 10);
|
|
mpz_set_str(table[11], "4843404761746040450878112712248048946192329836828011081099583716631665199735", 10);
|
|
mpz_set_str(table[12], "17753610332565385342233700679016857096732927677674079299901048706502023344323", 10);
|
|
mpz_set_str(table[13], "7340737830761819778932240368702542344398303914533989887946929098579704241381", 10);
|
|
mpz_set_str(table[14], "7485711199499041280583568401235747195782463526779526999436153673339775539811", 10);
|
|
mpz_set_str(table[15], "2142031401968400929503510506809717682807299048321716777515378017925804172613", 10);
|
|
mpz_set_str(table[16], "20360726418211144063687312297130206754517607649513487097949783496378997928067", 10);
|
|
mpz_set_str(table[17], "10084495929941453632660314280175724975128971466274072816113016220485118106704", 10);
|
|
mpz_set_str(table[18], "16439750268193993850122913059536089086005993049484072354058446664310560915791", 10);
|
|
mpz_set_str(table[19], "18846478280944081835687070220388531405254463099766114703812851236032096883527", 10);
|
|
mpz_set_str(table[20], "4420942263256394637881355812401884942112634736955530771971988030203525903549", 10);
|
|
mpz_set_str(table[21], "14198693842034168855892704279336338486109495341176916748522962058077327077065", 10);
|
|
mpz_set_str(table[22], "6041555813882714115066197562820868826774723322620254360321098473212143665585", 10);
|
|
mpz_set_str(table[23], "20748515536378168545350875692420036778051051407959125779163633648695901864806", 10);
|
|
mpz_set_str(table[24], "3644905067853954991416835522909416617631364637345433980323913806222873092466", 10);
|
|
mpz_set_str(table[25], "8116482129580703447499186401826280629738713931353688362576599939036715144760", 10);
|
|
mpz_set_str(table[26], "12184572798374118217666851631205571574428678303828319078921759522861829536220", 10);
|
|
mpz_set_str(table[27], "5346870201233526613855167264516405972670153375069773146752349231612576971123", 10);
|
|
mpz_set_str(table[28], "4503044147132047341559683630906041415722430212610331693856274032147277000454", 10);
|
|
mpz_set_str(table[29], "14765113222221426653718588860458742005060115956673138585327972871355018047961", 10);
|
|
mpz_set_str(table[30], "13996242313247674316783774317017654151358086460595183727726330855974642581866", 10);
|
|
mpz_set_str(table[31], "15815633097180063401484093329011216749926764774201041400881386018032709569181", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=50
|
|
*/
|
|
void EscalarMulWindow_e687e60c27bf9741(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "356945572834696926615570510880047483629195949303885973623175677442826897195", 10);
|
|
mpz_set_str(table[3], "15515798416120970741443867573730657238772249381184199038638634647167929173535", 10);
|
|
mpz_set_str(table[4], "832642174284427733895074363837746033272509581814828935308160823330753714463", 10);
|
|
mpz_set_str(table[5], "1473261066677183491771144322436621573732818079048241277449788630674565611900", 10);
|
|
mpz_set_str(table[6], "8954798224153025186636493079655666312025175213148020988167609560533032985272", 10);
|
|
mpz_set_str(table[7], "11317203273451437978149912745313472351226626087079539570080325116221994621676", 10);
|
|
mpz_set_str(table[8], "11908636934537370872492311580668613787809336406362454440099232369794929432857", 10);
|
|
mpz_set_str(table[9], "19606250250980128429595119739035077802558826537878584374443023267709744215302", 10);
|
|
mpz_set_str(table[10], "9375002237566064668961915118549135231559875713369097582496716356262904267756", 10);
|
|
mpz_set_str(table[11], "6216839341735791600469640136991703539765543721181114957009765204840307468412", 10);
|
|
mpz_set_str(table[12], "422468318749508664730905822300162999604953333967669911245808864865179063583", 10);
|
|
mpz_set_str(table[13], "8233084568263698715114660619479071654556380128603486196496844237684644873671", 10);
|
|
mpz_set_str(table[14], "5694591125834772832968116232550788815559931203905362730608967633118393299046", 10);
|
|
mpz_set_str(table[15], "21449211136879912548384968972403945873677476655516314183078940127417264014254", 10);
|
|
mpz_set_str(table[16], "17512803248375863232584804418005928218053610165446233041192950530548150969857", 10);
|
|
mpz_set_str(table[17], "20970384927135135941687793569693311541411703622145982015545951879751255646464", 10);
|
|
mpz_set_str(table[18], "154889066770802792391318666804657200371892210382303806766709161140067751026", 10);
|
|
mpz_set_str(table[19], "9705435040331948880519431288156146645199776712226298776273908423134502262195", 10);
|
|
mpz_set_str(table[20], "18412805425507630721135238407391653444148829190638444828973229501553224696922", 10);
|
|
mpz_set_str(table[21], "16893531972151917966888615294962601036490237639324379686364106235785700640303", 10);
|
|
mpz_set_str(table[22], "1317401904823605427910400257951780642039212475651110910269419801589536775599", 10);
|
|
mpz_set_str(table[23], "16505773986237007368715261394665638044499970155648420529516963732557470428323", 10);
|
|
mpz_set_str(table[24], "8139968496928242412844146884705229449311856420430645899800031288037184971865", 10);
|
|
mpz_set_str(table[25], "9172089602192091064006425681108151046320037236029888112895349728960657590433", 10);
|
|
mpz_set_str(table[26], "1558032307708944983647563677197104762903609359323139614282143514635814650419", 10);
|
|
mpz_set_str(table[27], "108126353126877145067960721589823393151792954035779397604624454131714033618", 10);
|
|
mpz_set_str(table[28], "12485126681953627001133895564260325838574600045977614879319337315684519899450", 10);
|
|
mpz_set_str(table[29], "21385061428633652004442771474887342534304453310026440257138019892584855431206", 10);
|
|
mpz_set_str(table[30], "1104551878118863962464190204566347212682779710112472119871324595928956564039", 10);
|
|
mpz_set_str(table[31], "15322932262357902431853327773068449583766349454217947210944136035839911650447", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=51
|
|
*/
|
|
void EscalarMulWindow_e687e50c27bf958e(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "14280928984975544235433788111012728263225783186552988784282081030665290420523", 10);
|
|
mpz_set_str(table[3], "20803635230805303161820015692911208521977759767082084103923011086509766582526", 10);
|
|
mpz_set_str(table[4], "10341028774939699727227651400240331703049296664055590045013471804959465786518", 10);
|
|
mpz_set_str(table[5], "7604309484420118988896740306670521247149108658132603629252881595201679349886", 10);
|
|
mpz_set_str(table[6], "9011875625266167138886678377254308440953754721748313729517181381711252934780", 10);
|
|
mpz_set_str(table[7], "892322513592344300444119412785365605053716652232823131000105602243432555880", 10);
|
|
mpz_set_str(table[8], "18486175949748153317629598867893794483922649269618407497539525894165813765578", 10);
|
|
mpz_set_str(table[9], "15840162634917903904113833356358469023670783234642294558574928095156668664864", 10);
|
|
mpz_set_str(table[10], "2968909390657183778688654473764673250969936744964824221292316503234824888918", 10);
|
|
mpz_set_str(table[11], "21020860943834605053283990952095154232387251966871868120049490891452421599914", 10);
|
|
mpz_set_str(table[12], "16781597910611118553192257714323688960583262818916976097368762397000693644162", 10);
|
|
mpz_set_str(table[13], "14074475193476068174324882714224760919965016356864658494871388335588833555770", 10);
|
|
mpz_set_str(table[14], "14593393677635072676617432837077382959343608021960142837585439912159877318586", 10);
|
|
mpz_set_str(table[15], "17999639659322268175710363786435525605798888247806857271633109979101610319087", 10);
|
|
mpz_set_str(table[16], "11833691872543782351719487670127207596043371024551952805491858070633988252718", 10);
|
|
mpz_set_str(table[17], "827504421172078168460799924356606559249685654857689629151968334671864388396", 10);
|
|
mpz_set_str(table[18], "7327284626811840585486315466861402446210241033289844442278534330826668701923", 10);
|
|
mpz_set_str(table[19], "9446224232223888188424365019967292594376256441030224073350543821207427024323", 10);
|
|
mpz_set_str(table[20], "13485161518145036927948603181263699993625035428037167999804072920201939236164", 10);
|
|
mpz_set_str(table[21], "6764710206523464093897465546323177021905133113339759574454899318266861301323", 10);
|
|
mpz_set_str(table[22], "7265307570039676523364470649635716794801234804159593051749458469314538232694", 10);
|
|
mpz_set_str(table[23], "9091371587973716344157827951828360926766196510458042851950677490155899092934", 10);
|
|
mpz_set_str(table[24], "207972438327396317570644659247454825459364371949145337333304443527831822600", 10);
|
|
mpz_set_str(table[25], "2227449218622024215844365463100754710658379433800634186512830160789605596764", 10);
|
|
mpz_set_str(table[26], "4101443514515101630727893037847810918376053050454305214577510881644101664646", 10);
|
|
mpz_set_str(table[27], "10224825037826090291865824383714110036793921487103798001423704215149860382305", 10);
|
|
mpz_set_str(table[28], "10356014205682705325581914066923383713113955825325777240430811318239223761641", 10);
|
|
mpz_set_str(table[29], "746124427280968361675081285616412061887402150096170656125670471657521775708", 10);
|
|
mpz_set_str(table[30], "4364259151027161509853916728690649755157399097864479478675423032959389732547", 10);
|
|
mpz_set_str(table[31], "9895251962405943175374555214196920216782650156701257939151053405890602125683", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=52
|
|
*/
|
|
void EscalarMulWindow_e687e40c27bf93db(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8195505999488733718664564215184512117460191150885626226602287026423445188485", 10);
|
|
mpz_set_str(table[3], "20748904396461048596223756392836227939261463952108020374122647419585596160244", 10);
|
|
mpz_set_str(table[4], "13297718493728489512143558871738836489949094398997161183406015376909602072918", 10);
|
|
mpz_set_str(table[5], "20977334272530646620093609531103197424958362428113878463224701582600748588396", 10);
|
|
mpz_set_str(table[6], "6678468228559943937212472189307148084375145367707288284846571643298650239712", 10);
|
|
mpz_set_str(table[7], "8523850808856375009216404940087392615910035813609925985738778432610393564190", 10);
|
|
mpz_set_str(table[8], "16247763274735072728635353552943402983967865120388751649617232487272397091016", 10);
|
|
mpz_set_str(table[9], "7033000445747619285255127530314728037005956720945434696816460770583323430431", 10);
|
|
mpz_set_str(table[10], "14010257622472940218182231730036072883858518649499224088801502122075792166908", 10);
|
|
mpz_set_str(table[11], "10568306917869125738735759284450755394124164897594809381776856302299061706665", 10);
|
|
mpz_set_str(table[12], "5794589017119491576168686056711899606507420767604610061421262216428980664971", 10);
|
|
mpz_set_str(table[13], "1264601947765205345639385384931496790962530627941566000292525283568855082752", 10);
|
|
mpz_set_str(table[14], "9341618850216116773817344073815070610994999966095649784121562589699541756819", 10);
|
|
mpz_set_str(table[15], "19486443877025115139492919401587399458409420527758104336020010053229119860899", 10);
|
|
mpz_set_str(table[16], "8889198622664195119315601666524731832527180285480910657832154119008317088242", 10);
|
|
mpz_set_str(table[17], "19565288086870899427209207460740623234291464069525635114464706722187751773676", 10);
|
|
mpz_set_str(table[18], "5229961970920875159515142626305541910253943137553663313914030011649856517521", 10);
|
|
mpz_set_str(table[19], "15885776378302400170554921402587629381162570281691316160863422359601356317610", 10);
|
|
mpz_set_str(table[20], "454927959401449134020484951213183401811548949764629487079876896903845246381", 10);
|
|
mpz_set_str(table[21], "9570190056275612236720586411716321005397705228925442060778550692247328778183", 10);
|
|
mpz_set_str(table[22], "5744100191856671929258343693553952141340781799150267424446754532422106737880", 10);
|
|
mpz_set_str(table[23], "1025339809009485679448716540122393637600680952555183879879449993617676863812", 10);
|
|
mpz_set_str(table[24], "20754719332774039520489599562334323874570285038751296979349532717637588392326", 10);
|
|
mpz_set_str(table[25], "4336414223419751165273790265725817189110062157879020511035728356925593631890", 10);
|
|
mpz_set_str(table[26], "10330995937677011402440638390679744194302013369990278268741538221961723682713", 10);
|
|
mpz_set_str(table[27], "3940161175409442224774181820161075490227232668741299179448154240869209393549", 10);
|
|
mpz_set_str(table[28], "13754301388177867405709297680038869592970975496146330571761951496121332720956", 10);
|
|
mpz_set_str(table[29], "19867853529037018530112490105266170661265921087858015873054564165594718524951", 10);
|
|
mpz_set_str(table[30], "6182042372722969231948462243384512823383124243452645085144869784853782735622", 10);
|
|
mpz_set_str(table[31], "13818263682550949588597550397952143100537899046460182714602409969042744556067", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=53
|
|
*/
|
|
void EscalarMulWindow_e687e30c27bf9228(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "10102802783420398911471770902646882179920114873273307350556110482712606795655", 10);
|
|
mpz_set_str(table[3], "17465845479054984846669589379063049283449511919485812019742992007415587499800", 10);
|
|
mpz_set_str(table[4], "14897526986327596282016960589817289099608729336244988423326359963499288579051", 10);
|
|
mpz_set_str(table[5], "10847964300354604511441843308946109551665320843198538468597842956490240255238", 10);
|
|
mpz_set_str(table[6], "18614375400151574305454505510340646896798937019784982882259863253657068964826", 10);
|
|
mpz_set_str(table[7], "7246732600718934142726622868596333232370607837099213335460076137209906864499", 10);
|
|
mpz_set_str(table[8], "10509924577789916854373592141141939331597804882787286265628232905987065377183", 10);
|
|
mpz_set_str(table[9], "5295167780681710981039034287719494543059367151427001475194034675856218024657", 10);
|
|
mpz_set_str(table[10], "9500463425470432144020710094281955081042921989710196649207358448117657822089", 10);
|
|
mpz_set_str(table[11], "1935916851529563434776145128319199849558189750004624817367534814411499591888", 10);
|
|
mpz_set_str(table[12], "648050747977522730962685318959406768200545384749002300202716704424883503949", 10);
|
|
mpz_set_str(table[13], "4303000944133242188515776035464931074581530142711302456647526034844042163422", 10);
|
|
mpz_set_str(table[14], "18754532141554810445730308486976315675378894943773970176146886152381934169945", 10);
|
|
mpz_set_str(table[15], "8352495426468697529139075268178129388925303878246618040592373332952153122859", 10);
|
|
mpz_set_str(table[16], "17073120037899157137694810602790754900342410307475199858780196947698288512021", 10);
|
|
mpz_set_str(table[17], "11613508876811598094128255790753769221366090844594780568076630111003749489327", 10);
|
|
mpz_set_str(table[18], "12611361250381361971745832652364346810809532298112742921908261010832782942790", 10);
|
|
mpz_set_str(table[19], "10805314462160327703667322080969534763197641624181796033956013238861644468194", 10);
|
|
mpz_set_str(table[20], "14727791428195234098747751201790037614610198861719787436559245725642865596009", 10);
|
|
mpz_set_str(table[21], "5563245753251368429384989862712466566345756003030328931993297545122937779627", 10);
|
|
mpz_set_str(table[22], "135814189051522742306893202039835012327733571057611919329717170240720504635", 10);
|
|
mpz_set_str(table[23], "4076118281574231132341039860922775021687907716101427842532991467161130795126", 10);
|
|
mpz_set_str(table[24], "4646086378037220549681523488106871648714671183367484595487541550330731303747", 10);
|
|
mpz_set_str(table[25], "20197661751126391596094026975633509376250634967965199074570850431134340690857", 10);
|
|
mpz_set_str(table[26], "6760925334754190677383122617365795576913847047326357274566382805799304451939", 10);
|
|
mpz_set_str(table[27], "5082641574416400319506253738116923237102014923663654861590846623545756307972", 10);
|
|
mpz_set_str(table[28], "12550048533737735574982484168535420787782095801996915900511935038244822939775", 10);
|
|
mpz_set_str(table[29], "4924527113683973404137803459094677927775249665822479711814943651246295631271", 10);
|
|
mpz_set_str(table[30], "6389974496198213452930906098990382688258021311235058905688594163862655648495", 10);
|
|
mpz_set_str(table[31], "19215614795500220211516490249126830668092687021211974370533233852706858122463", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=54
|
|
*/
|
|
void EscalarMulWindow_e687ea0c27bf9e0d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15119220930574082489683236226695313258143009576587043372247540506496303779873", 10);
|
|
mpz_set_str(table[3], "7652757383269814958081642137897211894804831762208990890776209003954309655365", 10);
|
|
mpz_set_str(table[4], "20409516496156208258040242441029671106045775902542782605049859520582390389617", 10);
|
|
mpz_set_str(table[5], "7888896459032628924745470612790312478723609508983153262721154407728556748707", 10);
|
|
mpz_set_str(table[6], "20678962188901970060029001880893644390760685402573618268211544658654543820899", 10);
|
|
mpz_set_str(table[7], "931124264650880986228386417805864160622400087760765659077330602822848145970", 10);
|
|
mpz_set_str(table[8], "13750866558797646927355256022812622278972997777820829132528210439239062308887", 10);
|
|
mpz_set_str(table[9], "17167748554535311622530861571533954598031599405504523534161464468571232550679", 10);
|
|
mpz_set_str(table[10], "10959425746653246003678139790042419238673902308287208494857430250191316276211", 10);
|
|
mpz_set_str(table[11], "3424702027279767931912421789144364450647891929290151122876644430879661650642", 10);
|
|
mpz_set_str(table[12], "14038349191291580196777205214263941996799980335874997845898133272696998952003", 10);
|
|
mpz_set_str(table[13], "9683076491131406177128075477495545891734593803851355591821977024833857990311", 10);
|
|
mpz_set_str(table[14], "21171015062148638324241870142681640512854649593490752420387944016905988513076", 10);
|
|
mpz_set_str(table[15], "17834909498736929997653575097825551307570381694504740098531673529157612918911", 10);
|
|
mpz_set_str(table[16], "8319721735894765689585203698338576523487228238399873911373568451335475226945", 10);
|
|
mpz_set_str(table[17], "20810824366644647228335868831886125721626758866923913118272888439412694159653", 10);
|
|
mpz_set_str(table[18], "9393048461973786216111642720665238868434210188416380744703154244347561738547", 10);
|
|
mpz_set_str(table[19], "19820741948653326551246849339428358082135398375822993707640011208019653459925", 10);
|
|
mpz_set_str(table[20], "4196473057604869870948742394762004738539112554385729257113542588579476754923", 10);
|
|
mpz_set_str(table[21], "5647922524718931046590738053717565420367317130549069073552302419587329677254", 10);
|
|
mpz_set_str(table[22], "13652224550118353360178877008019040220304940965123454296785437848687548430569", 10);
|
|
mpz_set_str(table[23], "11030218429830883758666266567706954590250556704738291716259534828310830141060", 10);
|
|
mpz_set_str(table[24], "21642103764543686019929814569179062011391001607748241503620790279684600237099", 10);
|
|
mpz_set_str(table[25], "2883611216451225361483062875909676098915866268523608783698187590698789099798", 10);
|
|
mpz_set_str(table[26], "10670530854358342012833035338425394536459148241262702206220811060707282717228", 10);
|
|
mpz_set_str(table[27], "1798670739649413803730087803605011042735503518898125273049327382389240761002", 10);
|
|
mpz_set_str(table[28], "21662261493815889954745782413803348043549864381782740044369986606265800202571", 10);
|
|
mpz_set_str(table[29], "2814288324824291515794653361119536715595489300556429712206761170403416831466", 10);
|
|
mpz_set_str(table[30], "10627906261375744150056541707363220476246388830746065733118968706643704295607", 10);
|
|
mpz_set_str(table[31], "14157053269997483574926592591878018326951387365269277410947671912488651160873", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=55
|
|
*/
|
|
void EscalarMulWindow_e687e90c27bf9c5a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11193261769816812274896157499378832033321889327052022291944782466698101329803", 10);
|
|
mpz_set_str(table[3], "6285197227440160672576682420161914205141988663414866017388090212011766241989", 10);
|
|
mpz_set_str(table[4], "19551510842230142901551991949090142143663606820882289456657880422327154418457", 10);
|
|
mpz_set_str(table[5], "7887867601428723430609749094007906155723954393283939475781132619959543465604", 10);
|
|
mpz_set_str(table[6], "19547295782014382457332736332679717738577497113111057184589024686907246719934", 10);
|
|
mpz_set_str(table[7], "15199524570826738256499698221009578449624617498429407458151654201437167425018", 10);
|
|
mpz_set_str(table[8], "11669147499202722074160716770540961052396151941505502496018517883453813078940", 10);
|
|
mpz_set_str(table[9], "15165236107733725485613441486147576182383857620503421715388849184583700860478", 10);
|
|
mpz_set_str(table[10], "10923223598244238494302097512489049179827141111772530758560279275852845214105", 10);
|
|
mpz_set_str(table[11], "20317893352350167087983403794344988939508940235852819680219246896165952952350", 10);
|
|
mpz_set_str(table[12], "11323832859000476054261269521669262784685690411424263134316531724555335360816", 10);
|
|
mpz_set_str(table[13], "2232840046560229178189959666751419232569601020082219969451420724106590188687", 10);
|
|
mpz_set_str(table[14], "20336745559402080500183897166586317941456396618153350337861838249874694184364", 10);
|
|
mpz_set_str(table[15], "17218948205563012813205924342088836178590479068722789312390354259054457966638", 10);
|
|
mpz_set_str(table[16], "21718248449324142394151982854555121183552909936437838934606761060068666646392", 10);
|
|
mpz_set_str(table[17], "4532024589865671348760802917624756386370293099830694991376078984312928173404", 10);
|
|
mpz_set_str(table[18], "18059692774830119066127389641544971833267222114418067345125323743897263977275", 10);
|
|
mpz_set_str(table[19], "10077367640023407804742987978503664027642588310520607622253058953940785897164", 10);
|
|
mpz_set_str(table[20], "12704875445261458412333901113563981398868868961574934087835931414775005840674", 10);
|
|
mpz_set_str(table[21], "8647478968182259244997342192784710625550754158844580105199206849881925573202", 10);
|
|
mpz_set_str(table[22], "9029947690871937912133711721079394612909747395577149828772984119717530182725", 10);
|
|
mpz_set_str(table[23], "7537094500387747067988083006225269543909837441462705148655761119929858342496", 10);
|
|
mpz_set_str(table[24], "19121265715497029891712819886230329501595482479027694519325180623066498194166", 10);
|
|
mpz_set_str(table[25], "818841409130439808704038136282363332045886503331059225323332346472109239677", 10);
|
|
mpz_set_str(table[26], "1221272865590120864616815236961380144423320982687721715352737026802621044352", 10);
|
|
mpz_set_str(table[27], "6245982113024300759153453204720158066788302630889512521176417758248767946351", 10);
|
|
mpz_set_str(table[28], "6597761425718694778636771957115669277553519082894938520161646181732420763335", 10);
|
|
mpz_set_str(table[29], "5501368416423354448081131239737756323482290813063063148122763629606538639816", 10);
|
|
mpz_set_str(table[30], "16304212579457534271575714218854786165828853589241892180441678478380806289729", 10);
|
|
mpz_set_str(table[31], "20980086410396256429010032811348534213464624695177382077632346926796173970946", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=56
|
|
*/
|
|
void EscalarMulWindow_e687e80c27bf9aa7(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12966528504411800327976272575744574866000502317784213861020508528811827147309", 10);
|
|
mpz_set_str(table[3], "3972920327658953868135148945943394871013837275215164742420294893227796465966", 10);
|
|
mpz_set_str(table[4], "11356822984582670769709816985144140434343265784974623719578806860245905069468", 10);
|
|
mpz_set_str(table[5], "15667877850885123538834216745380336949953013043787083653718147998560427148462", 10);
|
|
mpz_set_str(table[6], "17086151647604401248656131205631596249713616472302888332961322655522976193252", 10);
|
|
mpz_set_str(table[7], "6511318575678692842343960760286291761888971136486300884056609384653970909166", 10);
|
|
mpz_set_str(table[8], "7933757241437724314201927525237345715490236944552702338857050688999173162005", 10);
|
|
mpz_set_str(table[9], "7493555517090366941339222624333386045125645124319796842444421351227808830085", 10);
|
|
mpz_set_str(table[10], "10539099381460318045416547831072316627370377436317851964811916323930452730367", 10);
|
|
mpz_set_str(table[11], "1285159358230687735272168933160229086780410291192801756039374502085982564028", 10);
|
|
mpz_set_str(table[12], "5779660668234198741147837139128884496798394462138732527944663066570946492826", 10);
|
|
mpz_set_str(table[13], "5945340872795091219076248327622136368046272060377343207060316699148095285093", 10);
|
|
mpz_set_str(table[14], "21304707265654324946583778387514308418645169066554423847972439129449184396544", 10);
|
|
mpz_set_str(table[15], "10139555092486229281910431099712433649235636986517355395993698512126372125244", 10);
|
|
mpz_set_str(table[16], "15604424570959225066514586884368622716281156386113677620704269240160822600833", 10);
|
|
mpz_set_str(table[17], "9561464419785165025521988059659848940248492067788178236918274938529008543134", 10);
|
|
mpz_set_str(table[18], "6044682926966806815502105668160269732250407345348579174046103389847963073110", 10);
|
|
mpz_set_str(table[19], "13478826323343643575903653336700556407184121335243787600667517072656136709010", 10);
|
|
mpz_set_str(table[20], "5784413260637211152964530367046753774907745669373268719150898321956708721991", 10);
|
|
mpz_set_str(table[21], "19215850042869256347115693993480276299614540613863927557477194629540148652705", 10);
|
|
mpz_set_str(table[22], "10839675093009088886088980269374119629423319102270823448020805351499803909244", 10);
|
|
mpz_set_str(table[23], "11145418467078256516832885613651345605791301357085718375483455970927494058666", 10);
|
|
mpz_set_str(table[24], "19128280768248258493482918359277346946061658678311745685657500317304913689767", 10);
|
|
mpz_set_str(table[25], "11870438762450683682676398635294075166761509813417492132665665014944485522294", 10);
|
|
mpz_set_str(table[26], "11368951640740504354889949721029632618381423429932064663695645729098763225766", 10);
|
|
mpz_set_str(table[27], "9578653442049481060800489332218879008204224824410248577455227231241652452947", 10);
|
|
mpz_set_str(table[28], "2076907718936880754481480009158365287164181391298696995575730576099162041561", 10);
|
|
mpz_set_str(table[29], "20086445323321926831602490529594362138162374885107125587704394601561797285396", 10);
|
|
mpz_set_str(table[30], "9090532219942090765756336604569035170499410286271339758762896951211649054434", 10);
|
|
mpz_set_str(table[31], "11536304173802722590936155600121702027608469856488450468668793264853428880510", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=57
|
|
*/
|
|
void EscalarMulWindow_e687e70c27bf98f4(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "17034248665295397220405585341860554916431349936795351485673620834775687604743", 10);
|
|
mpz_set_str(table[3], "11863097507194721354272655955956588052425393838156882866781640257142921727492", 10);
|
|
mpz_set_str(table[4], "6090077664410226726222877088355189006654158005030825412309730397176961493935", 10);
|
|
mpz_set_str(table[5], "1660692056404019005241775651421281573137910605192115645472716025992460677284", 10);
|
|
mpz_set_str(table[6], "4075586043359474439841947101012391631373681057928477829922564695989274985636", 10);
|
|
mpz_set_str(table[7], "19565250469309406233692308519297623230595244626915298963177420911157051104613", 10);
|
|
mpz_set_str(table[8], "16764819912006961458545170395438050352329993375996906668501247471672406922624", 10);
|
|
mpz_set_str(table[9], "4997320124825099579543632201098140610146535825141189483771855886225495814145", 10);
|
|
mpz_set_str(table[10], "11607963516245556750498785219758599712955042915638245701609837006611951691675", 10);
|
|
mpz_set_str(table[11], "2745380724541325406096968912226044001380746839002024891129051350082855883019", 10);
|
|
mpz_set_str(table[12], "18578811272340796339152937865611762481872723316542456705139039481163687738332", 10);
|
|
mpz_set_str(table[13], "2425775122854145386815938828931415327776003258471747598242708291495617929485", 10);
|
|
mpz_set_str(table[14], "6624190979490887753607145270599154442609102942489740594865769673982472987095", 10);
|
|
mpz_set_str(table[15], "16550735493976434121694085033134106858767024792868376739764392960414699925090", 10);
|
|
mpz_set_str(table[16], "2609185846889441899632451308921558333135507923791146141973623333983254118114", 10);
|
|
mpz_set_str(table[17], "3128388219312507797943733743934125881272287210807537710504178685046068424940", 10);
|
|
mpz_set_str(table[18], "1631419261593077055754270280622847363744903652300695125750830967401424446523", 10);
|
|
mpz_set_str(table[19], "15147896011056951490027572947548152626757975451655652481419024740369994757679", 10);
|
|
mpz_set_str(table[20], "5261032549199954715985188871499491612674243433210817703512867104812943299704", 10);
|
|
mpz_set_str(table[21], "15379701544662412922985153734102777907498119859009752431510905537719553613417", 10);
|
|
mpz_set_str(table[22], "15542900674859521460851566971797467423963604529330485784814714353791030458468", 10);
|
|
mpz_set_str(table[23], "21174190477648535421511450294582133644831703304157077597233258663234633574651", 10);
|
|
mpz_set_str(table[24], "20521721139420521276189128580979670607640236898205705568180292325094574601345", 10);
|
|
mpz_set_str(table[25], "6976056275994036729931351212815220394713764023388649843283648471634691420654", 10);
|
|
mpz_set_str(table[26], "647636496819107507992243397199505462496725688818073691089620783734095697572", 10);
|
|
mpz_set_str(table[27], "20395776713487040931655033291218280370083125973922809764582104216169425231675", 10);
|
|
mpz_set_str(table[28], "3546122781595532492764733250051292210638959659269150010342239694731215975323", 10);
|
|
mpz_set_str(table[29], "6199886119535540361773626066158702474449599794105186680124520304371563609288", 10);
|
|
mpz_set_str(table[30], "5166330174073572939309093846170185403393681986590142698387793551634131658057", 10);
|
|
mpz_set_str(table[31], "11512936838276345379224546846186531767031582084192422933847584006283272950168", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=58
|
|
*/
|
|
void EscalarMulWindow_e687de0c27bf89a9(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "21840141749610387754774432797908309732309863121581275191202770640817754098298", 10);
|
|
mpz_set_str(table[3], "16121115176401552416225504359299555883216331214787802615953368580708969452949", 10);
|
|
mpz_set_str(table[4], "20479748022130457249287908385155084683315030457488003901691751187243928830015", 10);
|
|
mpz_set_str(table[5], "20436138116689734655301941926623362885780775867653553646933875694389266930849", 10);
|
|
mpz_set_str(table[6], "16252559098422301812043927829353321451275573400198182034048789776047282935847", 10);
|
|
mpz_set_str(table[7], "12651954987463682013877190517656057321600847395042902498636704295230659032998", 10);
|
|
mpz_set_str(table[8], "19536244689743357034001457944585084875535151491880762881216777352371097461782", 10);
|
|
mpz_set_str(table[9], "11272692943803020755510133503676768476644826907872522118804751620144214997832", 10);
|
|
mpz_set_str(table[10], "5878394741809159641363870504056202230531370126503940005523061529764793903582", 10);
|
|
mpz_set_str(table[11], "12953084022753321867708936609022290356094744059577981257496393967361661019407", 10);
|
|
mpz_set_str(table[12], "17821186880162567381846384073172321528984587538561979368940709298630476769452", 10);
|
|
mpz_set_str(table[13], "2453932413862302529461250119196509110304672427108846387775754459419354907908", 10);
|
|
mpz_set_str(table[14], "17095624200756109828341053845889384585750751152352752838005880347562538073319", 10);
|
|
mpz_set_str(table[15], "16076674139841729984081082282873122077278790925174911239076258038125438945635", 10);
|
|
mpz_set_str(table[16], "15973677262219376317351463530833773955453896346108270633915370208269159592772", 10);
|
|
mpz_set_str(table[17], "8555405976272674802677648396132318170100820349735810537047511720310046490378", 10);
|
|
mpz_set_str(table[18], "5007836521370151647140054242821403967845400744763922051204144049383046884886", 10);
|
|
mpz_set_str(table[19], "3676492877157582188496454362703063642130930261996541105166757165946392262605", 10);
|
|
mpz_set_str(table[20], "13167754804322970785623821175583995474458361119382052992718501945220665582657", 10);
|
|
mpz_set_str(table[21], "17982661690480314134763956742930605650839672005300279176833957583710446017925", 10);
|
|
mpz_set_str(table[22], "16196615919394269913715524046362709382879889470445788994112355838960323104800", 10);
|
|
mpz_set_str(table[23], "13780842158881551966843701740475262896099286351827028055980576712738150558403", 10);
|
|
mpz_set_str(table[24], "18822193107165131686868826351408896582461805319307522493259902802875154533314", 10);
|
|
mpz_set_str(table[25], "980489996106118979994210626629207892716891335312670525040567169180579388605", 10);
|
|
mpz_set_str(table[26], "518609507629433196828276288289486933387442800316313178613901943943087073660", 10);
|
|
mpz_set_str(table[27], "7774130979666374330087005330604381141993157173791087107601100780057759614636", 10);
|
|
mpz_set_str(table[28], "21732216142397554500293555787717479468957109510832694583240361357998284898936", 10);
|
|
mpz_set_str(table[29], "7055504651733494631811984866737923947263408897781959770632366791537382855891", 10);
|
|
mpz_set_str(table[30], "21543969199073775299412959336886535374665597560771837803487744253900410014695", 10);
|
|
mpz_set_str(table[31], "3776645205667743630556897477925975880673676768067512443876418300914494865443", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=59
|
|
*/
|
|
void EscalarMulWindow_e687dd0c27bf87f6(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3581485013057186115055677179127042033344735698342979450016018954682943544783", 10);
|
|
mpz_set_str(table[3], "2449879450823548727389514566261608400955020121032999969540608621437434713518", 10);
|
|
mpz_set_str(table[4], "20771498172790118352172888220973388926333630649003906658535744886052260489492", 10);
|
|
mpz_set_str(table[5], "18838190635415086630798767220109460008019909252421468104523785924955266453647", 10);
|
|
mpz_set_str(table[6], "11283227683656579335643245963145341362047556594535741690630232325490268844885", 10);
|
|
mpz_set_str(table[7], "11100969964312729437913424574140218154400657346914148881998431362325433455493", 10);
|
|
mpz_set_str(table[8], "11652522142803112814061813550215422143199337859990477748819895282960016043883", 10);
|
|
mpz_set_str(table[9], "17432730010492282985256199043879873469887761450348945702972514836449377244465", 10);
|
|
mpz_set_str(table[10], "15619147669628020310722559932857054723359210729672770669455227871419142713792", 10);
|
|
mpz_set_str(table[11], "5494309253306004292273014968599465259731266286213884727244655038166368524645", 10);
|
|
mpz_set_str(table[12], "13562028699561761865216513406334648442925887485866604346647136095444407000081", 10);
|
|
mpz_set_str(table[13], "6358988846639310645881145167261730784194515526202785898817306474592057733266", 10);
|
|
mpz_set_str(table[14], "16641742585659036018328972066095326787166622056264456535218855428306938695589", 10);
|
|
mpz_set_str(table[15], "17317610457673916133408856968482477923419776296609414421727531904931753047575", 10);
|
|
mpz_set_str(table[16], "18823073556301391501465557554563172476792312124717801839905503918706045126714", 10);
|
|
mpz_set_str(table[17], "14376868830083824040789531342160326019697492043948100941128839142793042169608", 10);
|
|
mpz_set_str(table[18], "12550498958774643001493279083898346641712182211933958734729148696530411766813", 10);
|
|
mpz_set_str(table[19], "15083597137638325740195153667924734721743563402942897515324811056051190383808", 10);
|
|
mpz_set_str(table[20], "10786674815081732469175381999708594345771132188850070300247068143790473373494", 10);
|
|
mpz_set_str(table[21], "4437780706978496623390008136039717210598748754524433838265190784599709998930", 10);
|
|
mpz_set_str(table[22], "19551790697903554698691073132217153920541170116588573399367377229949484049711", 10);
|
|
mpz_set_str(table[23], "8733341334732625322352868992803429909282609963276541352291647595671314860020", 10);
|
|
mpz_set_str(table[24], "12358897331936404122265834993169558129636387941293086036052824783886557431366", 10);
|
|
mpz_set_str(table[25], "12516419364387885313414349019433846381812591923769435689156912741446012419537", 10);
|
|
mpz_set_str(table[26], "3998646453002821861806239297052000773369614246449171526928972738525403213446", 10);
|
|
mpz_set_str(table[27], "10379551391939871867130438317961303899141677775939477704272174964498370579094", 10);
|
|
mpz_set_str(table[28], "16916663389312051189985528299091847697105948440997078657249090497433436518687", 10);
|
|
mpz_set_str(table[29], "11953633702700660365536312315018557930111957821417006184476201912110087742920", 10);
|
|
mpz_set_str(table[30], "10934615037536040128502257196829543616846312662225410635128573995727485998601", 10);
|
|
mpz_set_str(table[31], "21180242432950060858380613335607135850238909751262563237872188847950116310017", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=60
|
|
*/
|
|
void EscalarMulWindow_e68aec0c27c1d74a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "5329718093401832461289759633473155714837923950815847249810633756458556098837", 10);
|
|
mpz_set_str(table[3], "12900985693670780751244123814206237528567126431403215971145816339577800381828", 10);
|
|
mpz_set_str(table[4], "5508863281622493712898926772752698967157539623965838154668479831499964155928", 10);
|
|
mpz_set_str(table[5], "17962736758473458608519319205169843462888249209539147118599751672019645725954", 10);
|
|
mpz_set_str(table[6], "21814700598382765608485632289705350686042483003906952848452221635999248032723", 10);
|
|
mpz_set_str(table[7], "10746837810131045600498503180851005764075230532223872812929739278942493148445", 10);
|
|
mpz_set_str(table[8], "12961472500822337513001910298056431336788558805834368437087377932432654905745", 10);
|
|
mpz_set_str(table[9], "282960684094498589882312639999054244237093782515234067311574441907227143722", 10);
|
|
mpz_set_str(table[10], "5939199498233700087181058953396343961514492227529970332685455894421764383916", 10);
|
|
mpz_set_str(table[11], "2979356392809707951443943430555591106718791747623802510990137095501840888598", 10);
|
|
mpz_set_str(table[12], "5817944539411315257495426006112088829610949650207072725588365762408049559392", 10);
|
|
mpz_set_str(table[13], "17102432335100992507653074074396906774256812262219724933422943959279093261963", 10);
|
|
mpz_set_str(table[14], "7368864545090791635291092484816831328738558881316039517497385698546975748166", 10);
|
|
mpz_set_str(table[15], "5881798095454432906461989115126697962302695933534293891543742374557317789799", 10);
|
|
mpz_set_str(table[16], "16185102384598457040305236706789430602702547767527527070912154893945425003349", 10);
|
|
mpz_set_str(table[17], "1509949711440243372857009904055283093935667484074353992824572752991617597292", 10);
|
|
mpz_set_str(table[18], "12410424223062224270113130588728064408972622217290538286392714614436621161170", 10);
|
|
mpz_set_str(table[19], "1701691521940871512561023290038582782456724028833403585053374295653963308604", 10);
|
|
mpz_set_str(table[20], "693530362272448974257837077605167000078837802192655122343826284598552129867", 10);
|
|
mpz_set_str(table[21], "1132082509140464948411551008661058325511185640991168364722855936111865527578", 10);
|
|
mpz_set_str(table[22], "11594759724715027730801700469999381894382905258658255292188947038824487802680", 10);
|
|
mpz_set_str(table[23], "12957850856419054202676584620368290890886621134103862742364058327901904862923", 10);
|
|
mpz_set_str(table[24], "71321569139369374526264649008721242534430244618908826752930858288395330140", 10);
|
|
mpz_set_str(table[25], "1315902956152924856166663521246653513475131771174010153786565316750104815030", 10);
|
|
mpz_set_str(table[26], "5307132264373243703866642583330149108628674133690724078905688577443419933943", 10);
|
|
mpz_set_str(table[27], "9505889273318423975208084028710414664488356291083883457642847896302727995481", 10);
|
|
mpz_set_str(table[28], "6011374467816723661747678853435133830757957331890311472807362784879689905550", 10);
|
|
mpz_set_str(table[29], "11510794113424102121747573608303226682005679949007694223440952622865345372445", 10);
|
|
mpz_set_str(table[30], "6133673212618310678184294081206076187296372854838749951523391156071767534788", 10);
|
|
mpz_set_str(table[31], "13494901840780481600925491575516103394816749627644427732666596299868587990152", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=61
|
|
*/
|
|
void EscalarMulWindow_e68aed0c27c1d8fd(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8690132215001510855525661707125195116169972801166338995960306063598868523134", 10);
|
|
mpz_set_str(table[3], "10628008448893706196877570560651842566415484866399806369046949157096644079399", 10);
|
|
mpz_set_str(table[4], "2992118602331571302807622306124171084395369081596727494517467980726225538338", 10);
|
|
mpz_set_str(table[5], "15884522913625643883642072502342763718678053705722093350973254736469260409818", 10);
|
|
mpz_set_str(table[6], "13469869415032280681748875393314727808289661954240199071555686001959296963028", 10);
|
|
mpz_set_str(table[7], "4725115634754108566776323109457915358001088734265208740722718113425145050724", 10);
|
|
mpz_set_str(table[8], "5066761258645415765137423691170489290738080646027143372259594054573856352261", 10);
|
|
mpz_set_str(table[9], "970187200307873850688565566968603471576282225087910174557295560376601732957", 10);
|
|
mpz_set_str(table[10], "3062596509204177345499610882044000017875226802064340424454530465509009563943", 10);
|
|
mpz_set_str(table[11], "17389776994439434136540634213920558165685663870223963101978635528475183546729", 10);
|
|
mpz_set_str(table[12], "5033073489915153511587186277233837183528646156509486536579770704089704683989", 10);
|
|
mpz_set_str(table[13], "6394995862562815798537059351009227683113333105751271424252692101543140164918", 10);
|
|
mpz_set_str(table[14], "5915316518646313368501331247979611263730162528672367851839214419889470015310", 10);
|
|
mpz_set_str(table[15], "371031883635111023498422775081141077637227079327035961137907152815570877531", 10);
|
|
mpz_set_str(table[16], "7807367514401030403372445442161017583241211321365011117782972922373573814705", 10);
|
|
mpz_set_str(table[17], "10407835675521613498736587089375329008864560182826581569441173151874235834339", 10);
|
|
mpz_set_str(table[18], "12329421014805923072773859126150817938434574929964430407670273802069341407340", 10);
|
|
mpz_set_str(table[19], "21070233111029586505155158167938698528294603989448096131694301893763094002524", 10);
|
|
mpz_set_str(table[20], "8143009126463936384848481139560345267672812165744010358697699680019261617965", 10);
|
|
mpz_set_str(table[21], "16063098527292609924683127550661079366537285688932309674912886506325580584258", 10);
|
|
mpz_set_str(table[22], "497134865100447633085532112198824274140257439867828195383838293334600091777", 10);
|
|
mpz_set_str(table[23], "19732372214508377704960642956362259671089729573369794822036790076954102078256", 10);
|
|
mpz_set_str(table[24], "19493637389735003608234471576760905944482300936960526036369686941777744150453", 10);
|
|
mpz_set_str(table[25], "18380526094057075762006762287368638318541581132610665095075060979774377097683", 10);
|
|
mpz_set_str(table[26], "15051386733101312432255446957055711738971873360289672449434177087434262525366", 10);
|
|
mpz_set_str(table[27], "8487231337159539936165115912716720477949889100189288481318078725692489364253", 10);
|
|
mpz_set_str(table[28], "8561759613343053109988884281844247035696469170858052060664988324565738885651", 10);
|
|
mpz_set_str(table[29], "10169478941845759867620777158696743036996020677057268844192246712999996760938", 10);
|
|
mpz_set_str(table[30], "16111947654263471062987951280933612107797745914404747800879419436244925700160", 10);
|
|
mpz_set_str(table[31], "2816313998096377331329464739618546925298330235352507252445643434708670236613", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317]
|
|
k=62
|
|
sel[2]=0
|
|
sel[3]=0
|
|
*/
|
|
void EscalarMulWindow_04331b56a98f2867(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "2401533621621056639229827562937649963990842351400311499822063218569939743237", 10);
|
|
mpz_set_str(table[3], "4854496669479974955369764197611004447018055605684746490663358322047649631427", 10);
|
|
mpz_set_str(table[4], "8636605064084931784708728904364011398644223276243075880136138272077826517059", 10);
|
|
mpz_set_str(table[5], "20516451417255783586307942218726228704556620573170058938117233409366750061772", 10);
|
|
mpz_set_str(table[6], "7291581887654520377080356484648867223387514198503829517506424589864987157009", 10);
|
|
mpz_set_str(table[7], "5052305923292895020449465423757368989608894159439880668464526697060758962029", 10);
|
|
mpz_set_str(table[8], "2987409044237919138230446301182123540511030111592830867028787349099414142061", 10);
|
|
mpz_set_str(table[9], "5364081456978211591904772714849539553795139930715244062079192622674017580276", 10);
|
|
mpz_set_str(table[10], "13524325827846504973487682702107846473013960827147501312009698731283423665814", 10);
|
|
mpz_set_str(table[11], "1855761682303320144267949465344911140933411024799789711821279849640624021915", 10);
|
|
mpz_set_str(table[12], "10386592326729448225285742115053606773124867543003687249868091752363688960584", 10);
|
|
mpz_set_str(table[13], "11027109230685264970996929522237471185958846286248479390550791497615496141997", 10);
|
|
mpz_set_str(table[14], "20565183328003872635242132644273019992762593114016879535887283130423097901445", 10);
|
|
mpz_set_str(table[15], "10934604535457090798050813442859417042898222087342703097830389120839008795593", 10);
|
|
mpz_set_str(table[16], "17046382121482353685388213772041341063559639924041456554337984877973524133687", 10);
|
|
mpz_set_str(table[17], "11698950125850889205864944006739422575998738942302523943486737963576287732292", 10);
|
|
mpz_set_str(table[18], "6753423321137978153314426594304464840752360496363090195948512321633056549348", 10);
|
|
mpz_set_str(table[19], "17053701604158674202115982646431841547977027569862778817218240355815366533269", 10);
|
|
mpz_set_str(table[20], "7814418104658789495012756671586973503015101447661359190245586882711902499288", 10);
|
|
mpz_set_str(table[21], "4884809386272632346260085316264952456128723913431284295922545075579272997776", 10);
|
|
mpz_set_str(table[22], "13370648175110326735616539525540991721500970345295164929810376161334657804081", 10);
|
|
mpz_set_str(table[23], "359712335075769797957965687115617532427754473261443754898252606148908006836", 10);
|
|
mpz_set_str(table[24], "11540959163541907023399933519631654649021346801315816824361701457904159010893", 10);
|
|
mpz_set_str(table[25], "8736172202908959764683971721482986700339944699691493549732117625521817431224", 10);
|
|
mpz_set_str(table[26], "11655258207334483419447826168458800613717999771746446200823133210063403521139", 10);
|
|
mpz_set_str(table[27], "16180852090760558718567754050638991619723564315748839335655881961503420983781", 10);
|
|
mpz_set_str(table[28], "16926983117539301171430170992653986152010926752019725784525498344174035890992", 10);
|
|
mpz_set_str(table[29], "5682205926059888235852706855333279964534500809866220088108873331941408076178", 10);
|
|
mpz_set_str(table[30], "6297376933798356724927828249238067875569883973771389161440033358181866272888", 10);
|
|
mpz_set_str(table[31], "13952643067521014993155836650160228088408448372010464939744235439026274695523", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
MultiMux4
|
|
c[0][0]=0
|
|
c[0][10]=0
|
|
c[0][11]=0
|
|
c[0][12]=0
|
|
c[0][13]=0
|
|
c[0][14]=0
|
|
c[0][15]=0
|
|
c[0][1]=0
|
|
c[0][2]=0
|
|
c[0][3]=0
|
|
c[0][4]=0
|
|
c[0][5]=0
|
|
c[0][6]=0
|
|
c[0][7]=0
|
|
c[0][8]=0
|
|
c[0][9]=0
|
|
c[1][0]=0
|
|
c[1][10]=0
|
|
c[1][11]=0
|
|
c[1][12]=0
|
|
c[1][13]=0
|
|
c[1][14]=0
|
|
c[1][15]=0
|
|
c[1][1]=0
|
|
c[1][2]=0
|
|
c[1][3]=0
|
|
c[1][4]=0
|
|
c[1][5]=0
|
|
c[1][6]=0
|
|
c[1][7]=0
|
|
c[1][8]=0
|
|
c[1][9]=0
|
|
n=2
|
|
*/
|
|
void MultiMux4_e43006c194d99269(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_1;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _tmp = ctx->allocBigInts(1);
|
|
int _sigIdx_2;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_2;
|
|
int _offset_2;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_3;
|
|
int _offset_3;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_1 = ctx->allocBigInts(1);
|
|
int _sigIdx_5;
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_4;
|
|
int _offset_4;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_5;
|
|
int _offset_5;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_10;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_6;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
int _sigIdx_11;
|
|
int _sigIdx_12;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_11;
|
|
PBigInt _sigValue_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_13;
|
|
PBigInt _sigValue_9 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _sigIdx_14;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_15;
|
|
PBigInt _sigValue_10 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_17;
|
|
PBigInt _sigValue_11 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_16;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_19;
|
|
PBigInt _sigValue_12 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_12;
|
|
int _offset_21;
|
|
PBigInt _sigValue_13 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_9 = ctx->allocBigInts(1);
|
|
int _sigIdx_18;
|
|
Circom_Sizes _sigSizes_13;
|
|
int _offset_23;
|
|
PBigInt _sigValue_14 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_10 = ctx->allocBigInts(1);
|
|
int _sigIdx_19;
|
|
Circom_Sizes _sigSizes_14;
|
|
int _offset_25;
|
|
PBigInt _sigValue_15 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_11 = ctx->allocBigInts(1);
|
|
int _sigIdx_20;
|
|
Circom_Sizes _sigSizes_15;
|
|
int _offset_27;
|
|
PBigInt _sigValue_16 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_12 = ctx->allocBigInts(1);
|
|
int _sigIdx_21;
|
|
Circom_Sizes _sigSizes_16;
|
|
int _offset_29;
|
|
PBigInt _sigValue_17 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_13 = ctx->allocBigInts(1);
|
|
int _sigIdx_22;
|
|
Circom_Sizes _sigSizes_17;
|
|
int _offset_31;
|
|
PBigInt _sigValue_18 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_14 = ctx->allocBigInts(1);
|
|
int _sigIdx_23;
|
|
Circom_Sizes _sigSizes_18;
|
|
int _offset_33;
|
|
PBigInt _sigValue_19 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_15 = ctx->allocBigInts(1);
|
|
int _sigIdx_24;
|
|
Circom_Sizes _sigSizes_19;
|
|
int _offset_35;
|
|
PBigInt _sigValue_20 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_16 = ctx->allocBigInts(1);
|
|
int _sigIdx_25;
|
|
Circom_Sizes _sigSizes_20;
|
|
int _offset_37;
|
|
PBigInt _sigValue_21 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_17 = ctx->allocBigInts(1);
|
|
int _sigIdx_26;
|
|
Circom_Sizes _sigSizes_21;
|
|
int _offset_39;
|
|
PBigInt _sigValue_22 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_18 = ctx->allocBigInts(1);
|
|
int _sigIdx_27;
|
|
Circom_Sizes _sigSizes_22;
|
|
int _offset_41;
|
|
PBigInt _sigValue_23 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_19 = ctx->allocBigInts(1);
|
|
int _sigIdx_28;
|
|
PBigInt _sigValue_24 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_20 = ctx->allocBigInts(1);
|
|
int _sigIdx_29;
|
|
Circom_Sizes _sigSizes_23;
|
|
int _offset_43;
|
|
int _sigIdx_30;
|
|
Circom_Sizes _sigSizes_24;
|
|
int _offset_45;
|
|
PBigInt _sigValue_25 = ctx->allocBigInts(1);
|
|
int _sigIdx_31;
|
|
Circom_Sizes _sigSizes_25;
|
|
int _offset_47;
|
|
PBigInt _sigValue_26 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_21 = ctx->allocBigInts(1);
|
|
int _sigIdx_32;
|
|
Circom_Sizes _sigSizes_26;
|
|
int _offset_49;
|
|
PBigInt _sigValue_27 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_22 = ctx->allocBigInts(1);
|
|
int _sigIdx_33;
|
|
Circom_Sizes _sigSizes_27;
|
|
int _offset_51;
|
|
PBigInt _sigValue_28 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_23 = ctx->allocBigInts(1);
|
|
int _sigIdx_34;
|
|
Circom_Sizes _sigSizes_28;
|
|
int _offset_53;
|
|
PBigInt _sigValue_29 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_24 = ctx->allocBigInts(1);
|
|
int _sigIdx_35;
|
|
Circom_Sizes _sigSizes_29;
|
|
int _offset_55;
|
|
PBigInt _sigValue_30 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_25 = ctx->allocBigInts(1);
|
|
int _sigIdx_36;
|
|
Circom_Sizes _sigSizes_30;
|
|
int _offset_57;
|
|
PBigInt _sigValue_31 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_26 = ctx->allocBigInts(1);
|
|
int _sigIdx_37;
|
|
Circom_Sizes _sigSizes_31;
|
|
int _offset_59;
|
|
PBigInt _sigValue_32 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_27 = ctx->allocBigInts(1);
|
|
int _sigIdx_38;
|
|
PBigInt _sigValue_33 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_28 = ctx->allocBigInts(1);
|
|
int _sigIdx_39;
|
|
Circom_Sizes _sigSizes_32;
|
|
int _offset_61;
|
|
int _sigIdx_40;
|
|
Circom_Sizes _sigSizes_33;
|
|
int _offset_63;
|
|
PBigInt _sigValue_34 = ctx->allocBigInts(1);
|
|
int _sigIdx_41;
|
|
Circom_Sizes _sigSizes_34;
|
|
int _offset_65;
|
|
PBigInt _sigValue_35 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_29 = ctx->allocBigInts(1);
|
|
int _sigIdx_42;
|
|
Circom_Sizes _sigSizes_35;
|
|
int _offset_67;
|
|
PBigInt _sigValue_36 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_30 = ctx->allocBigInts(1);
|
|
int _sigIdx_43;
|
|
Circom_Sizes _sigSizes_36;
|
|
int _offset_69;
|
|
PBigInt _sigValue_37 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_31 = ctx->allocBigInts(1);
|
|
int _sigIdx_44;
|
|
Circom_Sizes _sigSizes_37;
|
|
int _offset_71;
|
|
PBigInt _sigValue_38 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_32 = ctx->allocBigInts(1);
|
|
int _sigIdx_45;
|
|
Circom_Sizes _sigSizes_38;
|
|
int _offset_73;
|
|
PBigInt _sigValue_39 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_33 = ctx->allocBigInts(1);
|
|
int _sigIdx_46;
|
|
Circom_Sizes _sigSizes_39;
|
|
int _offset_75;
|
|
PBigInt _sigValue_40 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_34 = ctx->allocBigInts(1);
|
|
int _sigIdx_47;
|
|
Circom_Sizes _sigSizes_40;
|
|
int _offset_77;
|
|
PBigInt _sigValue_41 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_35 = ctx->allocBigInts(1);
|
|
int _sigIdx_48;
|
|
PBigInt _sigValue_42 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_36 = ctx->allocBigInts(1);
|
|
int _sigIdx_49;
|
|
Circom_Sizes _sigSizes_41;
|
|
int _offset_79;
|
|
int _sigIdx_50;
|
|
Circom_Sizes _sigSizes_42;
|
|
int _offset_81;
|
|
PBigInt _sigValue_43 = ctx->allocBigInts(1);
|
|
int _sigIdx_51;
|
|
Circom_Sizes _sigSizes_43;
|
|
int _offset_83;
|
|
PBigInt _sigValue_44 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_37 = ctx->allocBigInts(1);
|
|
int _sigIdx_52;
|
|
Circom_Sizes _sigSizes_44;
|
|
int _offset_85;
|
|
PBigInt _sigValue_45 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_38 = ctx->allocBigInts(1);
|
|
int _sigIdx_53;
|
|
Circom_Sizes _sigSizes_45;
|
|
int _offset_87;
|
|
PBigInt _sigValue_46 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_39 = ctx->allocBigInts(1);
|
|
int _sigIdx_54;
|
|
Circom_Sizes _sigSizes_46;
|
|
int _offset_89;
|
|
PBigInt _sigValue_47 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_40 = ctx->allocBigInts(1);
|
|
int _sigIdx_55;
|
|
Circom_Sizes _sigSizes_47;
|
|
int _offset_91;
|
|
PBigInt _sigValue_48 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_41 = ctx->allocBigInts(1);
|
|
int _sigIdx_56;
|
|
Circom_Sizes _sigSizes_48;
|
|
int _offset_93;
|
|
PBigInt _sigValue_49 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_42 = ctx->allocBigInts(1);
|
|
int _sigIdx_57;
|
|
Circom_Sizes _sigSizes_49;
|
|
int _offset_95;
|
|
PBigInt _sigValue_50 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_43 = ctx->allocBigInts(1);
|
|
int _sigIdx_58;
|
|
PBigInt _sigValue_51 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_44 = ctx->allocBigInts(1);
|
|
int _sigIdx_59;
|
|
Circom_Sizes _sigSizes_50;
|
|
int _offset_97;
|
|
int _sigIdx_60;
|
|
Circom_Sizes _sigSizes_51;
|
|
int _offset_99;
|
|
PBigInt _sigValue_52 = ctx->allocBigInts(1);
|
|
int _sigIdx_61;
|
|
Circom_Sizes _sigSizes_52;
|
|
int _offset_101;
|
|
PBigInt _sigValue_53 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_45 = ctx->allocBigInts(1);
|
|
int _sigIdx_62;
|
|
Circom_Sizes _sigSizes_53;
|
|
int _offset_103;
|
|
PBigInt _sigValue_54 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_46 = ctx->allocBigInts(1);
|
|
int _sigIdx_63;
|
|
Circom_Sizes _sigSizes_54;
|
|
int _offset_105;
|
|
PBigInt _sigValue_55 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_47 = ctx->allocBigInts(1);
|
|
int _sigIdx_64;
|
|
Circom_Sizes _sigSizes_55;
|
|
int _offset_106;
|
|
PBigInt _sigValue_56 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_48 = ctx->allocBigInts(1);
|
|
int _sigIdx_65;
|
|
Circom_Sizes _sigSizes_56;
|
|
int _offset_108;
|
|
int _sigIdx_66;
|
|
Circom_Sizes _sigSizes_57;
|
|
int _offset_110;
|
|
PBigInt _sigValue_57 = ctx->allocBigInts(1);
|
|
int _sigIdx_67;
|
|
Circom_Sizes _sigSizes_58;
|
|
int _offset_112;
|
|
PBigInt _sigValue_58 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_49 = ctx->allocBigInts(1);
|
|
int _sigIdx_68;
|
|
Circom_Sizes _sigSizes_59;
|
|
int _offset_114;
|
|
PBigInt _sigValue_59 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_50 = ctx->allocBigInts(1);
|
|
int _sigIdx_69;
|
|
Circom_Sizes _sigSizes_60;
|
|
int _offset_116;
|
|
PBigInt _sigValue_60 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_51 = ctx->allocBigInts(1);
|
|
int _sigIdx_70;
|
|
Circom_Sizes _sigSizes_61;
|
|
int _offset_117;
|
|
PBigInt _sigValue_61 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_52 = ctx->allocBigInts(1);
|
|
int _sigIdx_71;
|
|
Circom_Sizes _sigSizes_62;
|
|
int _offset_119;
|
|
int _sigIdx_72;
|
|
Circom_Sizes _sigSizes_63;
|
|
int _offset_121;
|
|
PBigInt _sigValue_62 = ctx->allocBigInts(1);
|
|
int _sigIdx_73;
|
|
Circom_Sizes _sigSizes_64;
|
|
int _offset_123;
|
|
PBigInt _sigValue_63 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_53 = ctx->allocBigInts(1);
|
|
int _sigIdx_74;
|
|
Circom_Sizes _sigSizes_65;
|
|
int _offset_125;
|
|
PBigInt _sigValue_64 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_54 = ctx->allocBigInts(1);
|
|
int _sigIdx_75;
|
|
Circom_Sizes _sigSizes_66;
|
|
int _offset_127;
|
|
PBigInt _sigValue_65 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_55 = ctx->allocBigInts(1);
|
|
int _sigIdx_76;
|
|
Circom_Sizes _sigSizes_67;
|
|
int _offset_128;
|
|
PBigInt _sigValue_66 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_56 = ctx->allocBigInts(1);
|
|
int _sigIdx_77;
|
|
Circom_Sizes _sigSizes_68;
|
|
int _offset_130;
|
|
int _sigIdx_78;
|
|
Circom_Sizes _sigSizes_69;
|
|
int _offset_132;
|
|
PBigInt _sigValue_67 = ctx->allocBigInts(1);
|
|
int _sigIdx_79;
|
|
Circom_Sizes _sigSizes_70;
|
|
int _offset_134;
|
|
PBigInt _sigValue_68 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_57 = ctx->allocBigInts(1);
|
|
int _sigIdx_80;
|
|
Circom_Sizes _sigSizes_71;
|
|
int _offset_136;
|
|
int _sigIdx_81;
|
|
Circom_Sizes _sigSizes_72;
|
|
int _offset_138;
|
|
PBigInt _sigValue_69 = ctx->allocBigInts(1);
|
|
int _sigIdx_82;
|
|
Circom_Sizes _sigSizes_73;
|
|
int _offset_140;
|
|
PBigInt _sigValue_70 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_58 = ctx->allocBigInts(1);
|
|
int _sigIdx_83;
|
|
Circom_Sizes _sigSizes_74;
|
|
int _offset_142;
|
|
PBigInt _sigValue_71 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_59 = ctx->allocBigInts(1);
|
|
int _sigIdx_84;
|
|
Circom_Sizes _sigSizes_75;
|
|
int _offset_144;
|
|
PBigInt _sigValue_72 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_60 = ctx->allocBigInts(1);
|
|
int _sigIdx_85;
|
|
Circom_Sizes _sigSizes_76;
|
|
int _offset_146;
|
|
PBigInt _sigValue_73 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_61 = ctx->allocBigInts(1);
|
|
int _sigIdx_86;
|
|
Circom_Sizes _sigSizes_77;
|
|
int _offset_148;
|
|
PBigInt _sigValue_74 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_62 = ctx->allocBigInts(1);
|
|
int _sigIdx_87;
|
|
Circom_Sizes _sigSizes_78;
|
|
int _offset_150;
|
|
PBigInt _sigValue_75 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_63 = ctx->allocBigInts(1);
|
|
int _sigIdx_88;
|
|
Circom_Sizes _sigSizes_79;
|
|
int _offset_152;
|
|
PBigInt _sigValue_76 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_64 = ctx->allocBigInts(1);
|
|
int _sigIdx_89;
|
|
PBigInt _sigValue_77 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_65 = ctx->allocBigInts(1);
|
|
int _sigIdx_90;
|
|
Circom_Sizes _sigSizes_80;
|
|
int _offset_154;
|
|
int _sigIdx_91;
|
|
Circom_Sizes _sigSizes_81;
|
|
int _offset_156;
|
|
PBigInt _sigValue_78 = ctx->allocBigInts(1);
|
|
int _sigIdx_92;
|
|
Circom_Sizes _sigSizes_82;
|
|
int _offset_158;
|
|
PBigInt _sigValue_79 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_66 = ctx->allocBigInts(1);
|
|
int _sigIdx_93;
|
|
Circom_Sizes _sigSizes_83;
|
|
int _offset_160;
|
|
PBigInt _sigValue_80 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_67 = ctx->allocBigInts(1);
|
|
int _sigIdx_94;
|
|
Circom_Sizes _sigSizes_84;
|
|
int _offset_162;
|
|
PBigInt _sigValue_81 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_68 = ctx->allocBigInts(1);
|
|
int _sigIdx_95;
|
|
PBigInt _sigValue_82 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_69 = ctx->allocBigInts(1);
|
|
int _sigIdx_96;
|
|
Circom_Sizes _sigSizes_85;
|
|
int _offset_164;
|
|
int _sigIdx_97;
|
|
Circom_Sizes _sigSizes_86;
|
|
int _offset_166;
|
|
PBigInt _sigValue_83 = ctx->allocBigInts(1);
|
|
int _sigIdx_98;
|
|
Circom_Sizes _sigSizes_87;
|
|
int _offset_168;
|
|
PBigInt _sigValue_84 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_70 = ctx->allocBigInts(1);
|
|
int _sigIdx_99;
|
|
Circom_Sizes _sigSizes_88;
|
|
int _offset_170;
|
|
PBigInt _sigValue_85 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_71 = ctx->allocBigInts(1);
|
|
int _sigIdx_100;
|
|
Circom_Sizes _sigSizes_89;
|
|
int _offset_172;
|
|
PBigInt _sigValue_86 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_72 = ctx->allocBigInts(1);
|
|
int _sigIdx_101;
|
|
PBigInt _sigValue_87 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_73 = ctx->allocBigInts(1);
|
|
int _sigIdx_102;
|
|
Circom_Sizes _sigSizes_90;
|
|
int _offset_174;
|
|
int _sigIdx_103;
|
|
Circom_Sizes _sigSizes_91;
|
|
int _offset_176;
|
|
PBigInt _sigValue_88 = ctx->allocBigInts(1);
|
|
int _sigIdx_104;
|
|
Circom_Sizes _sigSizes_92;
|
|
int _offset_178;
|
|
PBigInt _sigValue_89 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_74 = ctx->allocBigInts(1);
|
|
int _sigIdx_105;
|
|
Circom_Sizes _sigSizes_93;
|
|
int _offset_180;
|
|
PBigInt _sigValue_90 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_75 = ctx->allocBigInts(1);
|
|
int _sigIdx_106;
|
|
Circom_Sizes _sigSizes_94;
|
|
int _offset_182;
|
|
PBigInt _sigValue_91 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_76 = ctx->allocBigInts(1);
|
|
int _sigIdx_107;
|
|
PBigInt _sigValue_92 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_77 = ctx->allocBigInts(1);
|
|
int _sigIdx_108;
|
|
Circom_Sizes _sigSizes_95;
|
|
int _offset_184;
|
|
int _sigIdx_109;
|
|
Circom_Sizes _sigSizes_96;
|
|
int _offset_186;
|
|
PBigInt _sigValue_93 = ctx->allocBigInts(1);
|
|
int _sigIdx_110;
|
|
Circom_Sizes _sigSizes_97;
|
|
int _offset_188;
|
|
PBigInt _sigValue_94 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_78 = ctx->allocBigInts(1);
|
|
int _sigIdx_111;
|
|
Circom_Sizes _sigSizes_98;
|
|
int _offset_189;
|
|
PBigInt _sigValue_95 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_79 = ctx->allocBigInts(1);
|
|
int _sigIdx_112;
|
|
Circom_Sizes _sigSizes_99;
|
|
int _offset_191;
|
|
int _sigIdx_113;
|
|
Circom_Sizes _sigSizes_100;
|
|
int _offset_193;
|
|
PBigInt _sigValue_96 = ctx->allocBigInts(1);
|
|
int _sigIdx_114;
|
|
Circom_Sizes _sigSizes_101;
|
|
int _offset_195;
|
|
PBigInt _sigValue_97 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_80 = ctx->allocBigInts(1);
|
|
int _sigIdx_115;
|
|
Circom_Sizes _sigSizes_102;
|
|
int _offset_196;
|
|
PBigInt _sigValue_98 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_81 = ctx->allocBigInts(1);
|
|
int _sigIdx_116;
|
|
Circom_Sizes _sigSizes_103;
|
|
int _offset_198;
|
|
int _sigIdx_117;
|
|
Circom_Sizes _sigSizes_104;
|
|
int _offset_200;
|
|
PBigInt _sigValue_99 = ctx->allocBigInts(1);
|
|
int _sigIdx_118;
|
|
Circom_Sizes _sigSizes_105;
|
|
int _offset_202;
|
|
PBigInt _sigValue_100 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_82 = ctx->allocBigInts(1);
|
|
int _sigIdx_119;
|
|
Circom_Sizes _sigSizes_106;
|
|
int _offset_203;
|
|
PBigInt _sigValue_101 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_83 = ctx->allocBigInts(1);
|
|
int _sigIdx_120;
|
|
Circom_Sizes _sigSizes_107;
|
|
int _offset_205;
|
|
int _sigIdx_121;
|
|
Circom_Sizes _sigSizes_108;
|
|
int _offset_207;
|
|
PBigInt _sigValue_102 = ctx->allocBigInts(1);
|
|
int _sigIdx_122;
|
|
Circom_Sizes _sigSizes_109;
|
|
int _offset_209;
|
|
int _sigIdx_123;
|
|
Circom_Sizes _sigSizes_110;
|
|
int _offset_211;
|
|
PBigInt _sigValue_103 = ctx->allocBigInts(1);
|
|
int _sigIdx_124;
|
|
Circom_Sizes _sigSizes_111;
|
|
int _offset_213;
|
|
PBigInt _sigValue_104 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_84 = ctx->allocBigInts(1);
|
|
int _sigIdx_125;
|
|
Circom_Sizes _sigSizes_112;
|
|
int _offset_215;
|
|
PBigInt _sigValue_105 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_85 = ctx->allocBigInts(1);
|
|
int _sigIdx_126;
|
|
Circom_Sizes _sigSizes_113;
|
|
int _offset_217;
|
|
PBigInt _sigValue_106 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_86 = ctx->allocBigInts(1);
|
|
int _sigIdx_127;
|
|
Circom_Sizes _sigSizes_114;
|
|
int _offset_219;
|
|
PBigInt _sigValue_107 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_87 = ctx->allocBigInts(1);
|
|
int _sigIdx_128;
|
|
Circom_Sizes _sigSizes_115;
|
|
int _offset_221;
|
|
PBigInt _sigValue_108 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_88 = ctx->allocBigInts(1);
|
|
int _sigIdx_129;
|
|
Circom_Sizes _sigSizes_116;
|
|
int _offset_223;
|
|
PBigInt _sigValue_109 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_89 = ctx->allocBigInts(1);
|
|
int _sigIdx_130;
|
|
Circom_Sizes _sigSizes_117;
|
|
int _offset_225;
|
|
PBigInt _sigValue_110 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_90 = ctx->allocBigInts(1);
|
|
int _sigIdx_131;
|
|
Circom_Sizes _sigSizes_118;
|
|
int _offset_226;
|
|
PBigInt _sigValue_111 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_91 = ctx->allocBigInts(1);
|
|
int _sigIdx_132;
|
|
Circom_Sizes _sigSizes_119;
|
|
int _offset_228;
|
|
PBigInt _sigValue_112 = ctx->allocBigInts(1);
|
|
int _sigIdx_133;
|
|
Circom_Sizes _sigSizes_120;
|
|
int _offset_230;
|
|
PBigInt _sigValue_113 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_92 = ctx->allocBigInts(1);
|
|
int _sigIdx_134;
|
|
Circom_Sizes _sigSizes_121;
|
|
int _offset_232;
|
|
PBigInt _sigValue_114 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_93 = ctx->allocBigInts(1);
|
|
int _sigIdx_135;
|
|
Circom_Sizes _sigSizes_122;
|
|
int _offset_234;
|
|
PBigInt _sigValue_115 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_94 = ctx->allocBigInts(1);
|
|
int _sigIdx_136;
|
|
Circom_Sizes _sigSizes_123;
|
|
int _offset_236;
|
|
PBigInt _sigValue_116 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_95 = ctx->allocBigInts(1);
|
|
int _sigIdx_137;
|
|
Circom_Sizes _sigSizes_124;
|
|
int _offset_238;
|
|
PBigInt _sigValue_117 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_96 = ctx->allocBigInts(1);
|
|
int _sigIdx_138;
|
|
Circom_Sizes _sigSizes_125;
|
|
int _offset_240;
|
|
PBigInt _sigValue_118 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_97 = ctx->allocBigInts(1);
|
|
int _sigIdx_139;
|
|
Circom_Sizes _sigSizes_126;
|
|
int _offset_242;
|
|
PBigInt _sigValue_119 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_98 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_99 = ctx->allocBigInts(1);
|
|
int _sigIdx_140;
|
|
Circom_Sizes _sigSizes_127;
|
|
int _offset_244;
|
|
PBigInt _tmp_101 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _sigIdx_141;
|
|
Circom_Sizes _sigSizes_128;
|
|
PBigInt _v_119;
|
|
int _offset_250;
|
|
PBigInt _sigValue_120 = ctx->allocBigInts(1);
|
|
int _sigIdx_142;
|
|
Circom_Sizes _sigSizes_129;
|
|
PBigInt _v_120;
|
|
int _offset_252;
|
|
PBigInt _sigValue_121 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_102 = ctx->allocBigInts(1);
|
|
int _sigIdx_143;
|
|
Circom_Sizes _sigSizes_130;
|
|
PBigInt _v_121;
|
|
int _offset_254;
|
|
PBigInt _sigValue_122 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_103 = ctx->allocBigInts(1);
|
|
int _sigIdx_144;
|
|
Circom_Sizes _sigSizes_131;
|
|
PBigInt _v_122;
|
|
int _offset_256;
|
|
PBigInt _sigValue_123 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_104 = ctx->allocBigInts(1);
|
|
int _sigIdx_145;
|
|
Circom_Sizes _sigSizes_132;
|
|
PBigInt _v_123;
|
|
int _offset_258;
|
|
PBigInt _sigValue_124 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_105 = ctx->allocBigInts(1);
|
|
int _sigIdx_146;
|
|
Circom_Sizes _sigSizes_133;
|
|
PBigInt _v_124;
|
|
int _offset_260;
|
|
PBigInt _sigValue_125 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_106 = ctx->allocBigInts(1);
|
|
int _sigIdx_147;
|
|
Circom_Sizes _sigSizes_134;
|
|
PBigInt _v_125;
|
|
int _offset_262;
|
|
PBigInt _sigValue_126 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_107 = ctx->allocBigInts(1);
|
|
int _sigIdx_148;
|
|
Circom_Sizes _sigSizes_135;
|
|
PBigInt _v_126;
|
|
int _offset_264;
|
|
PBigInt _sigValue_127 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_108 = ctx->allocBigInts(1);
|
|
int _sigIdx_149;
|
|
Circom_Sizes _sigSizes_136;
|
|
PBigInt _v_127;
|
|
int _offset_266;
|
|
PBigInt _sigValue_128 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_109 = ctx->allocBigInts(1);
|
|
int _sigIdx_150;
|
|
Circom_Sizes _sigSizes_137;
|
|
PBigInt _v_128;
|
|
int _offset_268;
|
|
PBigInt _sigValue_129 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_110 = ctx->allocBigInts(1);
|
|
int _sigIdx_151;
|
|
Circom_Sizes _sigSizes_138;
|
|
PBigInt _v_129;
|
|
int _offset_270;
|
|
PBigInt _sigValue_130 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_111 = ctx->allocBigInts(1);
|
|
int _sigIdx_152;
|
|
Circom_Sizes _sigSizes_139;
|
|
PBigInt _v_130;
|
|
int _offset_272;
|
|
PBigInt _sigValue_131 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_112 = ctx->allocBigInts(1);
|
|
int _sigIdx_153;
|
|
Circom_Sizes _sigSizes_140;
|
|
PBigInt _v_131;
|
|
int _offset_274;
|
|
PBigInt _sigValue_132 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_113 = ctx->allocBigInts(1);
|
|
int _sigIdx_154;
|
|
Circom_Sizes _sigSizes_141;
|
|
PBigInt _v_132;
|
|
int _offset_276;
|
|
PBigInt _sigValue_133 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_114 = ctx->allocBigInts(1);
|
|
int _sigIdx_155;
|
|
Circom_Sizes _sigSizes_142;
|
|
PBigInt _v_133;
|
|
int _offset_278;
|
|
PBigInt _sigValue_134 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_115 = ctx->allocBigInts(1);
|
|
int _sigIdx_156;
|
|
Circom_Sizes _sigSizes_143;
|
|
PBigInt _v_134;
|
|
int _offset_280;
|
|
PBigInt _sigValue_135 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_116 = ctx->allocBigInts(1);
|
|
int _sigIdx_157;
|
|
PBigInt _sigValue_136 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_117 = ctx->allocBigInts(1);
|
|
int _sigIdx_158;
|
|
Circom_Sizes _sigSizes_144;
|
|
PBigInt _v_135;
|
|
int _offset_282;
|
|
int _sigIdx_159;
|
|
Circom_Sizes _sigSizes_145;
|
|
PBigInt _v_136;
|
|
int _offset_284;
|
|
PBigInt _sigValue_137 = ctx->allocBigInts(1);
|
|
int _sigIdx_160;
|
|
Circom_Sizes _sigSizes_146;
|
|
PBigInt _v_137;
|
|
int _offset_286;
|
|
PBigInt _sigValue_138 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_118 = ctx->allocBigInts(1);
|
|
int _sigIdx_161;
|
|
Circom_Sizes _sigSizes_147;
|
|
PBigInt _v_138;
|
|
int _offset_288;
|
|
PBigInt _sigValue_139 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_119 = ctx->allocBigInts(1);
|
|
int _sigIdx_162;
|
|
Circom_Sizes _sigSizes_148;
|
|
PBigInt _v_139;
|
|
int _offset_290;
|
|
PBigInt _sigValue_140 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_120 = ctx->allocBigInts(1);
|
|
int _sigIdx_163;
|
|
Circom_Sizes _sigSizes_149;
|
|
PBigInt _v_140;
|
|
int _offset_292;
|
|
PBigInt _sigValue_141 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_121 = ctx->allocBigInts(1);
|
|
int _sigIdx_164;
|
|
Circom_Sizes _sigSizes_150;
|
|
PBigInt _v_141;
|
|
int _offset_294;
|
|
PBigInt _sigValue_142 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_122 = ctx->allocBigInts(1);
|
|
int _sigIdx_165;
|
|
Circom_Sizes _sigSizes_151;
|
|
PBigInt _v_142;
|
|
int _offset_296;
|
|
PBigInt _sigValue_143 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_123 = ctx->allocBigInts(1);
|
|
int _sigIdx_166;
|
|
Circom_Sizes _sigSizes_152;
|
|
PBigInt _v_143;
|
|
int _offset_298;
|
|
PBigInt _sigValue_144 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_124 = ctx->allocBigInts(1);
|
|
int _sigIdx_167;
|
|
PBigInt _sigValue_145 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_125 = ctx->allocBigInts(1);
|
|
int _sigIdx_168;
|
|
Circom_Sizes _sigSizes_153;
|
|
PBigInt _v_144;
|
|
int _offset_300;
|
|
int _sigIdx_169;
|
|
Circom_Sizes _sigSizes_154;
|
|
PBigInt _v_145;
|
|
int _offset_302;
|
|
PBigInt _sigValue_146 = ctx->allocBigInts(1);
|
|
int _sigIdx_170;
|
|
Circom_Sizes _sigSizes_155;
|
|
PBigInt _v_146;
|
|
int _offset_304;
|
|
PBigInt _sigValue_147 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_126 = ctx->allocBigInts(1);
|
|
int _sigIdx_171;
|
|
Circom_Sizes _sigSizes_156;
|
|
PBigInt _v_147;
|
|
int _offset_306;
|
|
PBigInt _sigValue_148 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_127 = ctx->allocBigInts(1);
|
|
int _sigIdx_172;
|
|
Circom_Sizes _sigSizes_157;
|
|
PBigInt _v_148;
|
|
int _offset_308;
|
|
PBigInt _sigValue_149 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_128 = ctx->allocBigInts(1);
|
|
int _sigIdx_173;
|
|
Circom_Sizes _sigSizes_158;
|
|
PBigInt _v_149;
|
|
int _offset_310;
|
|
PBigInt _sigValue_150 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_129 = ctx->allocBigInts(1);
|
|
int _sigIdx_174;
|
|
Circom_Sizes _sigSizes_159;
|
|
PBigInt _v_150;
|
|
int _offset_312;
|
|
PBigInt _sigValue_151 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_130 = ctx->allocBigInts(1);
|
|
int _sigIdx_175;
|
|
Circom_Sizes _sigSizes_160;
|
|
PBigInt _v_151;
|
|
int _offset_314;
|
|
PBigInt _sigValue_152 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_131 = ctx->allocBigInts(1);
|
|
int _sigIdx_176;
|
|
Circom_Sizes _sigSizes_161;
|
|
PBigInt _v_152;
|
|
int _offset_316;
|
|
PBigInt _sigValue_153 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_132 = ctx->allocBigInts(1);
|
|
int _sigIdx_177;
|
|
PBigInt _sigValue_154 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_133 = ctx->allocBigInts(1);
|
|
int _sigIdx_178;
|
|
Circom_Sizes _sigSizes_162;
|
|
PBigInt _v_153;
|
|
int _offset_318;
|
|
int _sigIdx_179;
|
|
Circom_Sizes _sigSizes_163;
|
|
PBigInt _v_154;
|
|
int _offset_320;
|
|
PBigInt _sigValue_155 = ctx->allocBigInts(1);
|
|
int _sigIdx_180;
|
|
Circom_Sizes _sigSizes_164;
|
|
PBigInt _v_155;
|
|
int _offset_322;
|
|
PBigInt _sigValue_156 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_134 = ctx->allocBigInts(1);
|
|
int _sigIdx_181;
|
|
Circom_Sizes _sigSizes_165;
|
|
PBigInt _v_156;
|
|
int _offset_324;
|
|
PBigInt _sigValue_157 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_135 = ctx->allocBigInts(1);
|
|
int _sigIdx_182;
|
|
Circom_Sizes _sigSizes_166;
|
|
PBigInt _v_157;
|
|
int _offset_326;
|
|
PBigInt _sigValue_158 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_136 = ctx->allocBigInts(1);
|
|
int _sigIdx_183;
|
|
Circom_Sizes _sigSizes_167;
|
|
PBigInt _v_158;
|
|
int _offset_328;
|
|
PBigInt _sigValue_159 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_137 = ctx->allocBigInts(1);
|
|
int _sigIdx_184;
|
|
Circom_Sizes _sigSizes_168;
|
|
PBigInt _v_159;
|
|
int _offset_330;
|
|
PBigInt _sigValue_160 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_138 = ctx->allocBigInts(1);
|
|
int _sigIdx_185;
|
|
Circom_Sizes _sigSizes_169;
|
|
PBigInt _v_160;
|
|
int _offset_332;
|
|
PBigInt _sigValue_161 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_139 = ctx->allocBigInts(1);
|
|
int _sigIdx_186;
|
|
Circom_Sizes _sigSizes_170;
|
|
PBigInt _v_161;
|
|
int _offset_334;
|
|
PBigInt _sigValue_162 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_140 = ctx->allocBigInts(1);
|
|
int _sigIdx_187;
|
|
PBigInt _sigValue_163 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_141 = ctx->allocBigInts(1);
|
|
int _sigIdx_188;
|
|
Circom_Sizes _sigSizes_171;
|
|
PBigInt _v_162;
|
|
int _offset_336;
|
|
int _sigIdx_189;
|
|
Circom_Sizes _sigSizes_172;
|
|
PBigInt _v_163;
|
|
int _offset_338;
|
|
PBigInt _sigValue_164 = ctx->allocBigInts(1);
|
|
int _sigIdx_190;
|
|
Circom_Sizes _sigSizes_173;
|
|
PBigInt _v_164;
|
|
int _offset_340;
|
|
PBigInt _sigValue_165 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_142 = ctx->allocBigInts(1);
|
|
int _sigIdx_191;
|
|
Circom_Sizes _sigSizes_174;
|
|
PBigInt _v_165;
|
|
int _offset_342;
|
|
PBigInt _sigValue_166 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_143 = ctx->allocBigInts(1);
|
|
int _sigIdx_192;
|
|
Circom_Sizes _sigSizes_175;
|
|
PBigInt _v_166;
|
|
int _offset_344;
|
|
PBigInt _sigValue_167 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_144 = ctx->allocBigInts(1);
|
|
int _sigIdx_193;
|
|
Circom_Sizes _sigSizes_176;
|
|
int _offset_345;
|
|
PBigInt _sigValue_168 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_145 = ctx->allocBigInts(1);
|
|
int _sigIdx_194;
|
|
Circom_Sizes _sigSizes_177;
|
|
PBigInt _v_167;
|
|
int _offset_347;
|
|
int _sigIdx_195;
|
|
Circom_Sizes _sigSizes_178;
|
|
PBigInt _v_168;
|
|
int _offset_349;
|
|
PBigInt _sigValue_169 = ctx->allocBigInts(1);
|
|
int _sigIdx_196;
|
|
Circom_Sizes _sigSizes_179;
|
|
PBigInt _v_169;
|
|
int _offset_351;
|
|
PBigInt _sigValue_170 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_146 = ctx->allocBigInts(1);
|
|
int _sigIdx_197;
|
|
Circom_Sizes _sigSizes_180;
|
|
PBigInt _v_170;
|
|
int _offset_353;
|
|
PBigInt _sigValue_171 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_147 = ctx->allocBigInts(1);
|
|
int _sigIdx_198;
|
|
Circom_Sizes _sigSizes_181;
|
|
PBigInt _v_171;
|
|
int _offset_355;
|
|
PBigInt _sigValue_172 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_148 = ctx->allocBigInts(1);
|
|
int _sigIdx_199;
|
|
Circom_Sizes _sigSizes_182;
|
|
int _offset_356;
|
|
PBigInt _sigValue_173 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_149 = ctx->allocBigInts(1);
|
|
int _sigIdx_200;
|
|
Circom_Sizes _sigSizes_183;
|
|
PBigInt _v_172;
|
|
int _offset_358;
|
|
int _sigIdx_201;
|
|
Circom_Sizes _sigSizes_184;
|
|
PBigInt _v_173;
|
|
int _offset_360;
|
|
PBigInt _sigValue_174 = ctx->allocBigInts(1);
|
|
int _sigIdx_202;
|
|
Circom_Sizes _sigSizes_185;
|
|
PBigInt _v_174;
|
|
int _offset_362;
|
|
PBigInt _sigValue_175 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_150 = ctx->allocBigInts(1);
|
|
int _sigIdx_203;
|
|
Circom_Sizes _sigSizes_186;
|
|
PBigInt _v_175;
|
|
int _offset_364;
|
|
PBigInt _sigValue_176 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_151 = ctx->allocBigInts(1);
|
|
int _sigIdx_204;
|
|
Circom_Sizes _sigSizes_187;
|
|
PBigInt _v_176;
|
|
int _offset_366;
|
|
PBigInt _sigValue_177 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_152 = ctx->allocBigInts(1);
|
|
int _sigIdx_205;
|
|
Circom_Sizes _sigSizes_188;
|
|
int _offset_367;
|
|
PBigInt _sigValue_178 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_153 = ctx->allocBigInts(1);
|
|
int _sigIdx_206;
|
|
Circom_Sizes _sigSizes_189;
|
|
PBigInt _v_177;
|
|
int _offset_369;
|
|
int _sigIdx_207;
|
|
Circom_Sizes _sigSizes_190;
|
|
PBigInt _v_178;
|
|
int _offset_371;
|
|
PBigInt _sigValue_179 = ctx->allocBigInts(1);
|
|
int _sigIdx_208;
|
|
Circom_Sizes _sigSizes_191;
|
|
PBigInt _v_179;
|
|
int _offset_373;
|
|
PBigInt _sigValue_180 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_154 = ctx->allocBigInts(1);
|
|
int _sigIdx_209;
|
|
Circom_Sizes _sigSizes_192;
|
|
PBigInt _v_180;
|
|
int _offset_375;
|
|
int _sigIdx_210;
|
|
Circom_Sizes _sigSizes_193;
|
|
PBigInt _v_181;
|
|
int _offset_377;
|
|
PBigInt _sigValue_181 = ctx->allocBigInts(1);
|
|
int _sigIdx_211;
|
|
Circom_Sizes _sigSizes_194;
|
|
PBigInt _v_182;
|
|
int _offset_379;
|
|
PBigInt _sigValue_182 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_155 = ctx->allocBigInts(1);
|
|
int _sigIdx_212;
|
|
Circom_Sizes _sigSizes_195;
|
|
PBigInt _v_183;
|
|
int _offset_381;
|
|
PBigInt _sigValue_183 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_156 = ctx->allocBigInts(1);
|
|
int _sigIdx_213;
|
|
Circom_Sizes _sigSizes_196;
|
|
PBigInt _v_184;
|
|
int _offset_383;
|
|
PBigInt _sigValue_184 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_157 = ctx->allocBigInts(1);
|
|
int _sigIdx_214;
|
|
Circom_Sizes _sigSizes_197;
|
|
PBigInt _v_185;
|
|
int _offset_385;
|
|
PBigInt _sigValue_185 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_158 = ctx->allocBigInts(1);
|
|
int _sigIdx_215;
|
|
Circom_Sizes _sigSizes_198;
|
|
PBigInt _v_186;
|
|
int _offset_387;
|
|
PBigInt _sigValue_186 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_159 = ctx->allocBigInts(1);
|
|
int _sigIdx_216;
|
|
Circom_Sizes _sigSizes_199;
|
|
PBigInt _v_187;
|
|
int _offset_389;
|
|
PBigInt _sigValue_187 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_160 = ctx->allocBigInts(1);
|
|
int _sigIdx_217;
|
|
Circom_Sizes _sigSizes_200;
|
|
PBigInt _v_188;
|
|
int _offset_391;
|
|
PBigInt _sigValue_188 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_161 = ctx->allocBigInts(1);
|
|
int _sigIdx_218;
|
|
PBigInt _sigValue_189 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_162 = ctx->allocBigInts(1);
|
|
int _sigIdx_219;
|
|
Circom_Sizes _sigSizes_201;
|
|
PBigInt _v_189;
|
|
int _offset_393;
|
|
int _sigIdx_220;
|
|
Circom_Sizes _sigSizes_202;
|
|
PBigInt _v_190;
|
|
int _offset_395;
|
|
PBigInt _sigValue_190 = ctx->allocBigInts(1);
|
|
int _sigIdx_221;
|
|
Circom_Sizes _sigSizes_203;
|
|
PBigInt _v_191;
|
|
int _offset_397;
|
|
PBigInt _sigValue_191 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_163 = ctx->allocBigInts(1);
|
|
int _sigIdx_222;
|
|
Circom_Sizes _sigSizes_204;
|
|
PBigInt _v_192;
|
|
int _offset_399;
|
|
PBigInt _sigValue_192 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_164 = ctx->allocBigInts(1);
|
|
int _sigIdx_223;
|
|
Circom_Sizes _sigSizes_205;
|
|
PBigInt _v_193;
|
|
int _offset_401;
|
|
PBigInt _sigValue_193 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_165 = ctx->allocBigInts(1);
|
|
int _sigIdx_224;
|
|
PBigInt _sigValue_194 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_166 = ctx->allocBigInts(1);
|
|
int _sigIdx_225;
|
|
Circom_Sizes _sigSizes_206;
|
|
PBigInt _v_194;
|
|
int _offset_403;
|
|
int _sigIdx_226;
|
|
Circom_Sizes _sigSizes_207;
|
|
PBigInt _v_195;
|
|
int _offset_405;
|
|
PBigInt _sigValue_195 = ctx->allocBigInts(1);
|
|
int _sigIdx_227;
|
|
Circom_Sizes _sigSizes_208;
|
|
PBigInt _v_196;
|
|
int _offset_407;
|
|
PBigInt _sigValue_196 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_167 = ctx->allocBigInts(1);
|
|
int _sigIdx_228;
|
|
Circom_Sizes _sigSizes_209;
|
|
PBigInt _v_197;
|
|
int _offset_409;
|
|
PBigInt _sigValue_197 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_168 = ctx->allocBigInts(1);
|
|
int _sigIdx_229;
|
|
Circom_Sizes _sigSizes_210;
|
|
PBigInt _v_198;
|
|
int _offset_411;
|
|
PBigInt _sigValue_198 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_169 = ctx->allocBigInts(1);
|
|
int _sigIdx_230;
|
|
PBigInt _sigValue_199 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_170 = ctx->allocBigInts(1);
|
|
int _sigIdx_231;
|
|
Circom_Sizes _sigSizes_211;
|
|
PBigInt _v_199;
|
|
int _offset_413;
|
|
int _sigIdx_232;
|
|
Circom_Sizes _sigSizes_212;
|
|
PBigInt _v_200;
|
|
int _offset_415;
|
|
PBigInt _sigValue_200 = ctx->allocBigInts(1);
|
|
int _sigIdx_233;
|
|
Circom_Sizes _sigSizes_213;
|
|
PBigInt _v_201;
|
|
int _offset_417;
|
|
PBigInt _sigValue_201 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_171 = ctx->allocBigInts(1);
|
|
int _sigIdx_234;
|
|
Circom_Sizes _sigSizes_214;
|
|
PBigInt _v_202;
|
|
int _offset_419;
|
|
PBigInt _sigValue_202 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_172 = ctx->allocBigInts(1);
|
|
int _sigIdx_235;
|
|
Circom_Sizes _sigSizes_215;
|
|
PBigInt _v_203;
|
|
int _offset_421;
|
|
PBigInt _sigValue_203 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_173 = ctx->allocBigInts(1);
|
|
int _sigIdx_236;
|
|
PBigInt _sigValue_204 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_174 = ctx->allocBigInts(1);
|
|
int _sigIdx_237;
|
|
Circom_Sizes _sigSizes_216;
|
|
PBigInt _v_204;
|
|
int _offset_423;
|
|
int _sigIdx_238;
|
|
Circom_Sizes _sigSizes_217;
|
|
PBigInt _v_205;
|
|
int _offset_425;
|
|
PBigInt _sigValue_205 = ctx->allocBigInts(1);
|
|
int _sigIdx_239;
|
|
Circom_Sizes _sigSizes_218;
|
|
PBigInt _v_206;
|
|
int _offset_427;
|
|
PBigInt _sigValue_206 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_175 = ctx->allocBigInts(1);
|
|
int _sigIdx_240;
|
|
Circom_Sizes _sigSizes_219;
|
|
int _offset_428;
|
|
PBigInt _sigValue_207 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_176 = ctx->allocBigInts(1);
|
|
int _sigIdx_241;
|
|
Circom_Sizes _sigSizes_220;
|
|
PBigInt _v_207;
|
|
int _offset_430;
|
|
int _sigIdx_242;
|
|
Circom_Sizes _sigSizes_221;
|
|
PBigInt _v_208;
|
|
int _offset_432;
|
|
PBigInt _sigValue_208 = ctx->allocBigInts(1);
|
|
int _sigIdx_243;
|
|
Circom_Sizes _sigSizes_222;
|
|
PBigInt _v_209;
|
|
int _offset_434;
|
|
PBigInt _sigValue_209 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_177 = ctx->allocBigInts(1);
|
|
int _sigIdx_244;
|
|
Circom_Sizes _sigSizes_223;
|
|
int _offset_435;
|
|
PBigInt _sigValue_210 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_178 = ctx->allocBigInts(1);
|
|
int _sigIdx_245;
|
|
Circom_Sizes _sigSizes_224;
|
|
PBigInt _v_210;
|
|
int _offset_437;
|
|
int _sigIdx_246;
|
|
Circom_Sizes _sigSizes_225;
|
|
PBigInt _v_211;
|
|
int _offset_439;
|
|
PBigInt _sigValue_211 = ctx->allocBigInts(1);
|
|
int _sigIdx_247;
|
|
Circom_Sizes _sigSizes_226;
|
|
PBigInt _v_212;
|
|
int _offset_441;
|
|
PBigInt _sigValue_212 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_179 = ctx->allocBigInts(1);
|
|
int _sigIdx_248;
|
|
Circom_Sizes _sigSizes_227;
|
|
int _offset_442;
|
|
PBigInt _sigValue_213 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_180 = ctx->allocBigInts(1);
|
|
int _sigIdx_249;
|
|
Circom_Sizes _sigSizes_228;
|
|
PBigInt _v_213;
|
|
int _offset_444;
|
|
int _sigIdx_250;
|
|
Circom_Sizes _sigSizes_229;
|
|
PBigInt _v_214;
|
|
int _offset_446;
|
|
PBigInt _sigValue_214 = ctx->allocBigInts(1);
|
|
int _sigIdx_251;
|
|
Circom_Sizes _sigSizes_230;
|
|
PBigInt _v_215;
|
|
int _offset_448;
|
|
int _sigIdx_252;
|
|
Circom_Sizes _sigSizes_231;
|
|
PBigInt _v_216;
|
|
int _offset_450;
|
|
PBigInt _sigValue_215 = ctx->allocBigInts(1);
|
|
int _sigIdx_253;
|
|
Circom_Sizes _sigSizes_232;
|
|
PBigInt _v_217;
|
|
int _offset_452;
|
|
PBigInt _sigValue_216 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_181 = ctx->allocBigInts(1);
|
|
int _sigIdx_254;
|
|
Circom_Sizes _sigSizes_233;
|
|
PBigInt _v_218;
|
|
int _offset_454;
|
|
PBigInt _sigValue_217 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_182 = ctx->allocBigInts(1);
|
|
int _sigIdx_255;
|
|
Circom_Sizes _sigSizes_234;
|
|
PBigInt _v_219;
|
|
int _offset_456;
|
|
PBigInt _sigValue_218 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_183 = ctx->allocBigInts(1);
|
|
int _sigIdx_256;
|
|
Circom_Sizes _sigSizes_235;
|
|
PBigInt _v_220;
|
|
int _offset_458;
|
|
PBigInt _sigValue_219 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_184 = ctx->allocBigInts(1);
|
|
int _sigIdx_257;
|
|
Circom_Sizes _sigSizes_236;
|
|
PBigInt _v_221;
|
|
int _offset_460;
|
|
PBigInt _sigValue_220 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_185 = ctx->allocBigInts(1);
|
|
int _sigIdx_258;
|
|
Circom_Sizes _sigSizes_237;
|
|
PBigInt _v_222;
|
|
int _offset_462;
|
|
PBigInt _sigValue_221 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_186 = ctx->allocBigInts(1);
|
|
int _sigIdx_259;
|
|
Circom_Sizes _sigSizes_238;
|
|
PBigInt _v_223;
|
|
int _offset_464;
|
|
PBigInt _sigValue_222 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_187 = ctx->allocBigInts(1);
|
|
int _sigIdx_260;
|
|
Circom_Sizes _sigSizes_239;
|
|
int _offset_465;
|
|
PBigInt _sigValue_223 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_188 = ctx->allocBigInts(1);
|
|
int _sigIdx_261;
|
|
Circom_Sizes _sigSizes_240;
|
|
PBigInt _v_224;
|
|
int _offset_467;
|
|
PBigInt _sigValue_224 = ctx->allocBigInts(1);
|
|
int _sigIdx_262;
|
|
Circom_Sizes _sigSizes_241;
|
|
PBigInt _v_225;
|
|
int _offset_469;
|
|
PBigInt _sigValue_225 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_189 = ctx->allocBigInts(1);
|
|
int _sigIdx_263;
|
|
Circom_Sizes _sigSizes_242;
|
|
PBigInt _v_226;
|
|
int _offset_471;
|
|
PBigInt _sigValue_226 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_190 = ctx->allocBigInts(1);
|
|
int _sigIdx_264;
|
|
Circom_Sizes _sigSizes_243;
|
|
PBigInt _v_227;
|
|
int _offset_473;
|
|
PBigInt _sigValue_227 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_191 = ctx->allocBigInts(1);
|
|
int _sigIdx_265;
|
|
Circom_Sizes _sigSizes_244;
|
|
PBigInt _v_228;
|
|
int _offset_475;
|
|
PBigInt _sigValue_228 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_192 = ctx->allocBigInts(1);
|
|
int _sigIdx_266;
|
|
Circom_Sizes _sigSizes_245;
|
|
PBigInt _v_229;
|
|
int _offset_477;
|
|
PBigInt _sigValue_229 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_193 = ctx->allocBigInts(1);
|
|
int _sigIdx_267;
|
|
Circom_Sizes _sigSizes_246;
|
|
PBigInt _v_230;
|
|
int _offset_479;
|
|
PBigInt _sigValue_230 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_194 = ctx->allocBigInts(1);
|
|
int _sigIdx_268;
|
|
Circom_Sizes _sigSizes_247;
|
|
PBigInt _v_231;
|
|
int _offset_481;
|
|
PBigInt _sigValue_231 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_195 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_196 = ctx->allocBigInts(1);
|
|
int _sigIdx_269;
|
|
Circom_Sizes _sigSizes_248;
|
|
PBigInt _v_232;
|
|
int _offset_483;
|
|
PBigInt _v_233;
|
|
PBigInt _tmp_197 = ctx->allocBigInts(1);
|
|
PBigInt _v_234;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "2", 10);
|
|
PBigInt _tmp_198 = ctx->allocBigInts(1);
|
|
|
|
|
|
/* signal input c[n][16] */
|
|
|
|
/* signal input s[4] */
|
|
|
|
/* signal output out[n] */
|
|
|
|
/* signal a3210[n] */
|
|
|
|
/* signal a321[n] */
|
|
|
|
/* signal a320[n] */
|
|
|
|
/* signal a310[n] */
|
|
|
|
/* signal a32[n] */
|
|
|
|
/* signal a31[n] */
|
|
|
|
/* signal a30[n] */
|
|
|
|
/* signal a3[n] */
|
|
|
|
/* signal a210[n] */
|
|
|
|
/* signal a21[n] */
|
|
|
|
/* signal a20[n] */
|
|
|
|
/* signal a10[n] */
|
|
|
|
/* signal a2[n] */
|
|
|
|
/* signal a1[n] */
|
|
|
|
/* signal a0[n] */
|
|
|
|
/* signal a[n] */
|
|
|
|
/* signal s10 */
|
|
|
|
/* s10 <== s[1] * s[0] */
|
|
_sigIdx = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset = _sigIdx + 1*_sigSizes[1];
|
|
ctx->getSignal(ctx->cIdx, _offset, _sigValue);
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_1 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1);
|
|
ctx->field->mul(_tmp,_sigValue,_sigValue_1);
|
|
_sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp);
|
|
|
|
/* signal s20 */
|
|
|
|
/* s20 <== s[2] * s[0] */
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_2 = _sigIdx_3 + 2*_sigSizes_2[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_2, _sigValue_2);
|
|
_sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_3 = _sigIdx_4 + 0*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_3);
|
|
ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3);
|
|
_sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1);
|
|
|
|
/* signal s21 */
|
|
|
|
/* s21 <== s[2] * s[1] */
|
|
_sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_4 = _sigIdx_6 + 2*_sigSizes_4[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_4);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_5 = _sigIdx_7 + 1*_sigSizes_5[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_5, _sigValue_5);
|
|
ctx->field->mul(_tmp_2,_sigValue_4,_sigValue_5);
|
|
_sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_8, _tmp_2);
|
|
|
|
/* signal s210 */
|
|
|
|
/* s210 <== s21 * s[0] */
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_6);
|
|
_sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx_10 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_7);
|
|
ctx->field->mul(_tmp_3,_sigValue_6,_sigValue_7);
|
|
_sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_11, _tmp_3);
|
|
|
|
/* for (var i=0,i<n,i++) */
|
|
|
|
/* a3210[i] <== ( c[i][15]-c[i][14]-c[i][13]+c[i][12] - c[i][11]+c[i][10]+c[i][ 9]-c[i][ 8]
|
|
-c[i][ 7]+c[i][ 6]+c[i][ 5]-c[i][ 4] + c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s210 */
|
|
_sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_11 = _sigIdx_12 + 0*_sigSizes_7[1] + 15*_sigSizes_7[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_8);
|
|
_sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_13 = _sigIdx_13 + 0*_sigSizes_8[1] + 14*_sigSizes_8[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_9);
|
|
ctx->field->sub(_tmp_5,_sigValue_8,_sigValue_9);
|
|
_sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_15 = _sigIdx_14 + 0*_sigSizes_9[1] + 13*_sigSizes_9[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_10);
|
|
ctx->field->sub(_tmp_6,_tmp_5,_sigValue_10);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_17 = _sigIdx_15 + 0*_sigSizes_10[1] + 12*_sigSizes_10[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_11);
|
|
ctx->field->add(_tmp_7,_tmp_6,_sigValue_11);
|
|
_sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_19 = _sigIdx_16 + 0*_sigSizes_11[1] + 11*_sigSizes_11[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_12);
|
|
ctx->field->sub(_tmp_8,_tmp_7,_sigValue_12);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_21 = _sigIdx_17 + 0*_sigSizes_12[1] + 10*_sigSizes_12[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_13);
|
|
ctx->field->add(_tmp_9,_tmp_8,_sigValue_13);
|
|
_sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_23 = _sigIdx_18 + 0*_sigSizes_13[1] + 9*_sigSizes_13[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_23, _sigValue_14);
|
|
ctx->field->add(_tmp_10,_tmp_9,_sigValue_14);
|
|
_sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_25 = _sigIdx_19 + 0*_sigSizes_14[1] + 8*_sigSizes_14[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_15);
|
|
ctx->field->sub(_tmp_11,_tmp_10,_sigValue_15);
|
|
_sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_27 = _sigIdx_20 + 0*_sigSizes_15[1] + 7*_sigSizes_15[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_27, _sigValue_16);
|
|
ctx->field->sub(_tmp_12,_tmp_11,_sigValue_16);
|
|
_sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_16 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_29 = _sigIdx_21 + 0*_sigSizes_16[1] + 6*_sigSizes_16[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_17);
|
|
ctx->field->add(_tmp_13,_tmp_12,_sigValue_17);
|
|
_sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_31 = _sigIdx_22 + 0*_sigSizes_17[1] + 5*_sigSizes_17[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_18);
|
|
ctx->field->add(_tmp_14,_tmp_13,_sigValue_18);
|
|
_sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_33 = _sigIdx_23 + 0*_sigSizes_18[1] + 4*_sigSizes_18[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_19);
|
|
ctx->field->sub(_tmp_15,_tmp_14,_sigValue_19);
|
|
_sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_35 = _sigIdx_24 + 0*_sigSizes_19[1] + 3*_sigSizes_19[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_35, _sigValue_20);
|
|
ctx->field->add(_tmp_16,_tmp_15,_sigValue_20);
|
|
_sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_20 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_37 = _sigIdx_25 + 0*_sigSizes_20[1] + 2*_sigSizes_20[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_37, _sigValue_21);
|
|
ctx->field->sub(_tmp_17,_tmp_16,_sigValue_21);
|
|
_sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_39 = _sigIdx_26 + 0*_sigSizes_21[1] + 1*_sigSizes_21[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_39, _sigValue_22);
|
|
ctx->field->sub(_tmp_18,_tmp_17,_sigValue_22);
|
|
_sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_22 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_41 = _sigIdx_27 + 0*_sigSizes_22[1] + 0*_sigSizes_22[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_23);
|
|
ctx->field->add(_tmp_19,_tmp_18,_sigValue_23);
|
|
_sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_24);
|
|
ctx->field->mul(_tmp_20,_tmp_19,_sigValue_24);
|
|
_sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_sigSizes_23 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_offset_43 = _sigIdx_29 + 0*_sigSizes_23[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_43, _tmp_20);
|
|
|
|
/* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */
|
|
_sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_24 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_45 = _sigIdx_30 + 0*_sigSizes_24[1] + 14*_sigSizes_24[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_45, _sigValue_25);
|
|
_sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_25 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_47 = _sigIdx_31 + 0*_sigSizes_25[1] + 12*_sigSizes_25[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_47, _sigValue_26);
|
|
ctx->field->sub(_tmp_21,_sigValue_25,_sigValue_26);
|
|
_sigIdx_32 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_26 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_49 = _sigIdx_32 + 0*_sigSizes_26[1] + 10*_sigSizes_26[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_49, _sigValue_27);
|
|
ctx->field->sub(_tmp_22,_tmp_21,_sigValue_27);
|
|
_sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_27 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_51 = _sigIdx_33 + 0*_sigSizes_27[1] + 8*_sigSizes_27[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_51, _sigValue_28);
|
|
ctx->field->add(_tmp_23,_tmp_22,_sigValue_28);
|
|
_sigIdx_34 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_28 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_53 = _sigIdx_34 + 0*_sigSizes_28[1] + 6*_sigSizes_28[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_53, _sigValue_29);
|
|
ctx->field->sub(_tmp_24,_tmp_23,_sigValue_29);
|
|
_sigIdx_35 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_29 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_55 = _sigIdx_35 + 0*_sigSizes_29[1] + 4*_sigSizes_29[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_55, _sigValue_30);
|
|
ctx->field->add(_tmp_25,_tmp_24,_sigValue_30);
|
|
_sigIdx_36 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_30 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_57 = _sigIdx_36 + 0*_sigSizes_30[1] + 2*_sigSizes_30[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_57, _sigValue_31);
|
|
ctx->field->add(_tmp_26,_tmp_25,_sigValue_31);
|
|
_sigIdx_37 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_59 = _sigIdx_37 + 0*_sigSizes_31[1] + 0*_sigSizes_31[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_59, _sigValue_32);
|
|
ctx->field->sub(_tmp_27,_tmp_26,_sigValue_32);
|
|
_sigIdx_38 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_38, _sigValue_33);
|
|
ctx->field->mul(_tmp_28,_tmp_27,_sigValue_33);
|
|
_sigIdx_39 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_sigSizes_32 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_offset_61 = _sigIdx_39 + 0*_sigSizes_32[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_61, _tmp_28);
|
|
|
|
/* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */
|
|
_sigIdx_40 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_63 = _sigIdx_40 + 0*_sigSizes_33[1] + 13*_sigSizes_33[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_63, _sigValue_34);
|
|
_sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_34 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_65 = _sigIdx_41 + 0*_sigSizes_34[1] + 12*_sigSizes_34[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_65, _sigValue_35);
|
|
ctx->field->sub(_tmp_29,_sigValue_34,_sigValue_35);
|
|
_sigIdx_42 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_35 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_67 = _sigIdx_42 + 0*_sigSizes_35[1] + 9*_sigSizes_35[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_67, _sigValue_36);
|
|
ctx->field->sub(_tmp_30,_tmp_29,_sigValue_36);
|
|
_sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_36 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_69 = _sigIdx_43 + 0*_sigSizes_36[1] + 8*_sigSizes_36[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_37);
|
|
ctx->field->add(_tmp_31,_tmp_30,_sigValue_37);
|
|
_sigIdx_44 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_37 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_71 = _sigIdx_44 + 0*_sigSizes_37[1] + 5*_sigSizes_37[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_71, _sigValue_38);
|
|
ctx->field->sub(_tmp_32,_tmp_31,_sigValue_38);
|
|
_sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_38 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_73 = _sigIdx_45 + 0*_sigSizes_38[1] + 4*_sigSizes_38[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_73, _sigValue_39);
|
|
ctx->field->add(_tmp_33,_tmp_32,_sigValue_39);
|
|
_sigIdx_46 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_39 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_75 = _sigIdx_46 + 0*_sigSizes_39[1] + 1*_sigSizes_39[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_75, _sigValue_40);
|
|
ctx->field->add(_tmp_34,_tmp_33,_sigValue_40);
|
|
_sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_40 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_77 = _sigIdx_47 + 0*_sigSizes_40[1] + 0*_sigSizes_40[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_77, _sigValue_41);
|
|
ctx->field->sub(_tmp_35,_tmp_34,_sigValue_41);
|
|
_sigIdx_48 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_48, _sigValue_42);
|
|
ctx->field->mul(_tmp_36,_tmp_35,_sigValue_42);
|
|
_sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_offset_79 = _sigIdx_49 + 0*_sigSizes_41[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_79, _tmp_36);
|
|
|
|
/* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */
|
|
_sigIdx_50 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_42 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_81 = _sigIdx_50 + 0*_sigSizes_42[1] + 11*_sigSizes_42[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_81, _sigValue_43);
|
|
_sigIdx_51 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_83 = _sigIdx_51 + 0*_sigSizes_43[1] + 10*_sigSizes_43[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_83, _sigValue_44);
|
|
ctx->field->sub(_tmp_37,_sigValue_43,_sigValue_44);
|
|
_sigIdx_52 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_44 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_85 = _sigIdx_52 + 0*_sigSizes_44[1] + 9*_sigSizes_44[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_85, _sigValue_45);
|
|
ctx->field->sub(_tmp_38,_tmp_37,_sigValue_45);
|
|
_sigIdx_53 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_87 = _sigIdx_53 + 0*_sigSizes_45[1] + 8*_sigSizes_45[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_87, _sigValue_46);
|
|
ctx->field->add(_tmp_39,_tmp_38,_sigValue_46);
|
|
_sigIdx_54 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_46 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_89 = _sigIdx_54 + 0*_sigSizes_46[1] + 3*_sigSizes_46[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_89, _sigValue_47);
|
|
ctx->field->sub(_tmp_40,_tmp_39,_sigValue_47);
|
|
_sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_91 = _sigIdx_55 + 0*_sigSizes_47[1] + 2*_sigSizes_47[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_91, _sigValue_48);
|
|
ctx->field->add(_tmp_41,_tmp_40,_sigValue_48);
|
|
_sigIdx_56 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_48 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_93 = _sigIdx_56 + 0*_sigSizes_48[1] + 1*_sigSizes_48[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_93, _sigValue_49);
|
|
ctx->field->add(_tmp_42,_tmp_41,_sigValue_49);
|
|
_sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_95 = _sigIdx_57 + 0*_sigSizes_49[1] + 0*_sigSizes_49[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_95, _sigValue_50);
|
|
ctx->field->sub(_tmp_43,_tmp_42,_sigValue_50);
|
|
_sigIdx_58 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_58, _sigValue_51);
|
|
ctx->field->mul(_tmp_44,_tmp_43,_sigValue_51);
|
|
_sigIdx_59 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_sigSizes_50 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_offset_97 = _sigIdx_59 + 0*_sigSizes_50[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_97, _tmp_44);
|
|
|
|
/* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */
|
|
_sigIdx_60 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_51 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_99 = _sigIdx_60 + 0*_sigSizes_51[1] + 12*_sigSizes_51[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_99, _sigValue_52);
|
|
_sigIdx_61 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_52 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_101 = _sigIdx_61 + 0*_sigSizes_52[1] + 8*_sigSizes_52[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_101, _sigValue_53);
|
|
ctx->field->sub(_tmp_45,_sigValue_52,_sigValue_53);
|
|
_sigIdx_62 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_53 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_103 = _sigIdx_62 + 0*_sigSizes_53[1] + 4*_sigSizes_53[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_103, _sigValue_54);
|
|
ctx->field->sub(_tmp_46,_tmp_45,_sigValue_54);
|
|
_sigIdx_63 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_54 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_105 = _sigIdx_63 + 0*_sigSizes_54[1] + 0*_sigSizes_54[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_105, _sigValue_55);
|
|
ctx->field->add(_tmp_47,_tmp_46,_sigValue_55);
|
|
_sigIdx_64 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_106 = _sigIdx_64 + 2*_sigSizes_55[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_106, _sigValue_56);
|
|
ctx->field->mul(_tmp_48,_tmp_47,_sigValue_56);
|
|
_sigIdx_65 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_sigSizes_56 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_offset_108 = _sigIdx_65 + 0*_sigSizes_56[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_108, _tmp_48);
|
|
|
|
/* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */
|
|
_sigIdx_66 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_110 = _sigIdx_66 + 0*_sigSizes_57[1] + 10*_sigSizes_57[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_110, _sigValue_57);
|
|
_sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_58 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_112 = _sigIdx_67 + 0*_sigSizes_58[1] + 8*_sigSizes_58[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_112, _sigValue_58);
|
|
ctx->field->sub(_tmp_49,_sigValue_57,_sigValue_58);
|
|
_sigIdx_68 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_59 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_114 = _sigIdx_68 + 0*_sigSizes_59[1] + 2*_sigSizes_59[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_114, _sigValue_59);
|
|
ctx->field->sub(_tmp_50,_tmp_49,_sigValue_59);
|
|
_sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_60 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_116 = _sigIdx_69 + 0*_sigSizes_60[1] + 0*_sigSizes_60[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_116, _sigValue_60);
|
|
ctx->field->add(_tmp_51,_tmp_50,_sigValue_60);
|
|
_sigIdx_70 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_61 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_117 = _sigIdx_70 + 1*_sigSizes_61[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_117, _sigValue_61);
|
|
ctx->field->mul(_tmp_52,_tmp_51,_sigValue_61);
|
|
_sigIdx_71 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_sigSizes_62 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_offset_119 = _sigIdx_71 + 0*_sigSizes_62[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_119, _tmp_52);
|
|
|
|
/* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */
|
|
_sigIdx_72 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_63 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_121 = _sigIdx_72 + 0*_sigSizes_63[1] + 9*_sigSizes_63[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_121, _sigValue_62);
|
|
_sigIdx_73 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_64 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_123 = _sigIdx_73 + 0*_sigSizes_64[1] + 8*_sigSizes_64[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_123, _sigValue_63);
|
|
ctx->field->sub(_tmp_53,_sigValue_62,_sigValue_63);
|
|
_sigIdx_74 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_65 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_125 = _sigIdx_74 + 0*_sigSizes_65[1] + 1*_sigSizes_65[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_125, _sigValue_64);
|
|
ctx->field->sub(_tmp_54,_tmp_53,_sigValue_64);
|
|
_sigIdx_75 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_66 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_127 = _sigIdx_75 + 0*_sigSizes_66[1] + 0*_sigSizes_66[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_127, _sigValue_65);
|
|
ctx->field->add(_tmp_55,_tmp_54,_sigValue_65);
|
|
_sigIdx_76 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_128 = _sigIdx_76 + 0*_sigSizes_67[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_128, _sigValue_66);
|
|
ctx->field->mul(_tmp_56,_tmp_55,_sigValue_66);
|
|
_sigIdx_77 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_sigSizes_68 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_offset_130 = _sigIdx_77 + 0*_sigSizes_68[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_130, _tmp_56);
|
|
|
|
/* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */
|
|
_sigIdx_78 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_132 = _sigIdx_78 + 0*_sigSizes_69[1] + 8*_sigSizes_69[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_132, _sigValue_67);
|
|
_sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_70 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_134 = _sigIdx_79 + 0*_sigSizes_70[1] + 0*_sigSizes_70[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_134, _sigValue_68);
|
|
ctx->field->sub(_tmp_57,_sigValue_67,_sigValue_68);
|
|
_sigIdx_80 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_sigSizes_71 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_offset_136 = _sigIdx_80 + 0*_sigSizes_71[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_136, _tmp_57);
|
|
|
|
/* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */
|
|
_sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_72 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_138 = _sigIdx_81 + 0*_sigSizes_72[1] + 7*_sigSizes_72[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_138, _sigValue_69);
|
|
_sigIdx_82 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_73 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_140 = _sigIdx_82 + 0*_sigSizes_73[1] + 6*_sigSizes_73[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_140, _sigValue_70);
|
|
ctx->field->sub(_tmp_58,_sigValue_69,_sigValue_70);
|
|
_sigIdx_83 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_74 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_142 = _sigIdx_83 + 0*_sigSizes_74[1] + 5*_sigSizes_74[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_142, _sigValue_71);
|
|
ctx->field->sub(_tmp_59,_tmp_58,_sigValue_71);
|
|
_sigIdx_84 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_75 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_144 = _sigIdx_84 + 0*_sigSizes_75[1] + 4*_sigSizes_75[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_144, _sigValue_72);
|
|
ctx->field->add(_tmp_60,_tmp_59,_sigValue_72);
|
|
_sigIdx_85 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_76 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_146 = _sigIdx_85 + 0*_sigSizes_76[1] + 3*_sigSizes_76[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_146, _sigValue_73);
|
|
ctx->field->sub(_tmp_61,_tmp_60,_sigValue_73);
|
|
_sigIdx_86 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_77 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_148 = _sigIdx_86 + 0*_sigSizes_77[1] + 2*_sigSizes_77[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_148, _sigValue_74);
|
|
ctx->field->add(_tmp_62,_tmp_61,_sigValue_74);
|
|
_sigIdx_87 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_78 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_150 = _sigIdx_87 + 0*_sigSizes_78[1] + 1*_sigSizes_78[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_150, _sigValue_75);
|
|
ctx->field->add(_tmp_63,_tmp_62,_sigValue_75);
|
|
_sigIdx_88 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_152 = _sigIdx_88 + 0*_sigSizes_79[1] + 0*_sigSizes_79[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_152, _sigValue_76);
|
|
ctx->field->sub(_tmp_64,_tmp_63,_sigValue_76);
|
|
_sigIdx_89 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_89, _sigValue_77);
|
|
ctx->field->mul(_tmp_65,_tmp_64,_sigValue_77);
|
|
_sigIdx_90 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_sigSizes_80 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_offset_154 = _sigIdx_90 + 0*_sigSizes_80[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_154, _tmp_65);
|
|
|
|
/* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */
|
|
_sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_156 = _sigIdx_91 + 0*_sigSizes_81[1] + 6*_sigSizes_81[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_156, _sigValue_78);
|
|
_sigIdx_92 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_82 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_158 = _sigIdx_92 + 0*_sigSizes_82[1] + 4*_sigSizes_82[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_158, _sigValue_79);
|
|
ctx->field->sub(_tmp_66,_sigValue_78,_sigValue_79);
|
|
_sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_83 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_160 = _sigIdx_93 + 0*_sigSizes_83[1] + 2*_sigSizes_83[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_160, _sigValue_80);
|
|
ctx->field->sub(_tmp_67,_tmp_66,_sigValue_80);
|
|
_sigIdx_94 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_84 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_162 = _sigIdx_94 + 0*_sigSizes_84[1] + 0*_sigSizes_84[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_162, _sigValue_81);
|
|
ctx->field->add(_tmp_68,_tmp_67,_sigValue_81);
|
|
_sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_95, _sigValue_82);
|
|
ctx->field->mul(_tmp_69,_tmp_68,_sigValue_82);
|
|
_sigIdx_96 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_sigSizes_85 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_offset_164 = _sigIdx_96 + 0*_sigSizes_85[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_164, _tmp_69);
|
|
|
|
/* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */
|
|
_sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_86 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_166 = _sigIdx_97 + 0*_sigSizes_86[1] + 5*_sigSizes_86[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_166, _sigValue_83);
|
|
_sigIdx_98 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_87 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_168 = _sigIdx_98 + 0*_sigSizes_87[1] + 4*_sigSizes_87[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_168, _sigValue_84);
|
|
ctx->field->sub(_tmp_70,_sigValue_83,_sigValue_84);
|
|
_sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_88 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_170 = _sigIdx_99 + 0*_sigSizes_88[1] + 1*_sigSizes_88[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_170, _sigValue_85);
|
|
ctx->field->sub(_tmp_71,_tmp_70,_sigValue_85);
|
|
_sigIdx_100 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_89 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_172 = _sigIdx_100 + 0*_sigSizes_89[1] + 0*_sigSizes_89[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_172, _sigValue_86);
|
|
ctx->field->add(_tmp_72,_tmp_71,_sigValue_86);
|
|
_sigIdx_101 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_101, _sigValue_87);
|
|
ctx->field->mul(_tmp_73,_tmp_72,_sigValue_87);
|
|
_sigIdx_102 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_sigSizes_90 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_offset_174 = _sigIdx_102 + 0*_sigSizes_90[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_174, _tmp_73);
|
|
|
|
/* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */
|
|
_sigIdx_103 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_176 = _sigIdx_103 + 0*_sigSizes_91[1] + 3*_sigSizes_91[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_176, _sigValue_88);
|
|
_sigIdx_104 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_92 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_178 = _sigIdx_104 + 0*_sigSizes_92[1] + 2*_sigSizes_92[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_178, _sigValue_89);
|
|
ctx->field->sub(_tmp_74,_sigValue_88,_sigValue_89);
|
|
_sigIdx_105 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_180 = _sigIdx_105 + 0*_sigSizes_93[1] + 1*_sigSizes_93[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_180, _sigValue_90);
|
|
ctx->field->sub(_tmp_75,_tmp_74,_sigValue_90);
|
|
_sigIdx_106 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_94 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_182 = _sigIdx_106 + 0*_sigSizes_94[1] + 0*_sigSizes_94[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_182, _sigValue_91);
|
|
ctx->field->add(_tmp_76,_tmp_75,_sigValue_91);
|
|
_sigIdx_107 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_107, _sigValue_92);
|
|
ctx->field->mul(_tmp_77,_tmp_76,_sigValue_92);
|
|
_sigIdx_108 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_offset_184 = _sigIdx_108 + 0*_sigSizes_95[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_184, _tmp_77);
|
|
|
|
/* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */
|
|
_sigIdx_109 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_96 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_186 = _sigIdx_109 + 0*_sigSizes_96[1] + 4*_sigSizes_96[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_186, _sigValue_93);
|
|
_sigIdx_110 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_188 = _sigIdx_110 + 0*_sigSizes_97[1] + 0*_sigSizes_97[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_188, _sigValue_94);
|
|
ctx->field->sub(_tmp_78,_sigValue_93,_sigValue_94);
|
|
_sigIdx_111 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_98 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_189 = _sigIdx_111 + 2*_sigSizes_98[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_189, _sigValue_95);
|
|
ctx->field->mul(_tmp_79,_tmp_78,_sigValue_95);
|
|
_sigIdx_112 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_offset_191 = _sigIdx_112 + 0*_sigSizes_99[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_191, _tmp_79);
|
|
|
|
/* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */
|
|
_sigIdx_113 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_100 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_193 = _sigIdx_113 + 0*_sigSizes_100[1] + 2*_sigSizes_100[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_193, _sigValue_96);
|
|
_sigIdx_114 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_101 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_195 = _sigIdx_114 + 0*_sigSizes_101[1] + 0*_sigSizes_101[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_195, _sigValue_97);
|
|
ctx->field->sub(_tmp_80,_sigValue_96,_sigValue_97);
|
|
_sigIdx_115 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_102 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_196 = _sigIdx_115 + 1*_sigSizes_102[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_196, _sigValue_98);
|
|
ctx->field->mul(_tmp_81,_tmp_80,_sigValue_98);
|
|
_sigIdx_116 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_sigSizes_103 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_offset_198 = _sigIdx_116 + 0*_sigSizes_103[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_198, _tmp_81);
|
|
|
|
/* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */
|
|
_sigIdx_117 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_104 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_200 = _sigIdx_117 + 0*_sigSizes_104[1] + 1*_sigSizes_104[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_200, _sigValue_99);
|
|
_sigIdx_118 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_105 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_202 = _sigIdx_118 + 0*_sigSizes_105[1] + 0*_sigSizes_105[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_202, _sigValue_100);
|
|
ctx->field->sub(_tmp_82,_sigValue_99,_sigValue_100);
|
|
_sigIdx_119 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_106 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_203 = _sigIdx_119 + 0*_sigSizes_106[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_203, _sigValue_101);
|
|
ctx->field->mul(_tmp_83,_tmp_82,_sigValue_101);
|
|
_sigIdx_120 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_sigSizes_107 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_offset_205 = _sigIdx_120 + 0*_sigSizes_107[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_205, _tmp_83);
|
|
|
|
/* a[i] <== ( c[i][ 0] ) */
|
|
_sigIdx_121 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_108 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_offset_207 = _sigIdx_121 + 0*_sigSizes_108[1] + 0*_sigSizes_108[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_207, _sigValue_102);
|
|
_sigIdx_122 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_sigSizes_109 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_offset_209 = _sigIdx_122 + 0*_sigSizes_109[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_209, _sigValue_102);
|
|
|
|
/* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] +
|
|
( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */
|
|
_sigIdx_123 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_sigSizes_110 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_offset_211 = _sigIdx_123 + 0*_sigSizes_110[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_211, _sigValue_103);
|
|
_sigIdx_124 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_sigSizes_111 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_offset_213 = _sigIdx_124 + 0*_sigSizes_111[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_213, _sigValue_104);
|
|
ctx->field->add(_tmp_84,_sigValue_103,_sigValue_104);
|
|
_sigIdx_125 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_sigSizes_112 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_offset_215 = _sigIdx_125 + 0*_sigSizes_112[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_215, _sigValue_105);
|
|
ctx->field->add(_tmp_85,_tmp_84,_sigValue_105);
|
|
_sigIdx_126 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_sigSizes_113 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_offset_217 = _sigIdx_126 + 0*_sigSizes_113[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_217, _sigValue_106);
|
|
ctx->field->add(_tmp_86,_tmp_85,_sigValue_106);
|
|
_sigIdx_127 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_sigSizes_114 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_offset_219 = _sigIdx_127 + 0*_sigSizes_114[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_219, _sigValue_107);
|
|
ctx->field->add(_tmp_87,_tmp_86,_sigValue_107);
|
|
_sigIdx_128 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_sigSizes_115 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_offset_221 = _sigIdx_128 + 0*_sigSizes_115[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_221, _sigValue_108);
|
|
ctx->field->add(_tmp_88,_tmp_87,_sigValue_108);
|
|
_sigIdx_129 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_sigSizes_116 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_offset_223 = _sigIdx_129 + 0*_sigSizes_116[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_223, _sigValue_109);
|
|
ctx->field->add(_tmp_89,_tmp_88,_sigValue_109);
|
|
_sigIdx_130 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_sigSizes_117 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_offset_225 = _sigIdx_130 + 0*_sigSizes_117[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_225, _sigValue_110);
|
|
ctx->field->add(_tmp_90,_tmp_89,_sigValue_110);
|
|
_sigIdx_131 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_118 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_226 = _sigIdx_131 + 3*_sigSizes_118[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_226, _sigValue_111);
|
|
ctx->field->mul(_tmp_91,_tmp_90,_sigValue_111);
|
|
_sigIdx_132 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_sigSizes_119 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_offset_228 = _sigIdx_132 + 0*_sigSizes_119[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_228, _sigValue_112);
|
|
_sigIdx_133 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_sigSizes_120 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_offset_230 = _sigIdx_133 + 0*_sigSizes_120[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_230, _sigValue_113);
|
|
ctx->field->add(_tmp_92,_sigValue_112,_sigValue_113);
|
|
_sigIdx_134 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_sigSizes_121 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_offset_232 = _sigIdx_134 + 0*_sigSizes_121[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_232, _sigValue_114);
|
|
ctx->field->add(_tmp_93,_tmp_92,_sigValue_114);
|
|
_sigIdx_135 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_sigSizes_122 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_offset_234 = _sigIdx_135 + 0*_sigSizes_122[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_234, _sigValue_115);
|
|
ctx->field->add(_tmp_94,_tmp_93,_sigValue_115);
|
|
_sigIdx_136 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_sigSizes_123 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_offset_236 = _sigIdx_136 + 0*_sigSizes_123[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_236, _sigValue_116);
|
|
ctx->field->add(_tmp_95,_tmp_94,_sigValue_116);
|
|
_sigIdx_137 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_sigSizes_124 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_offset_238 = _sigIdx_137 + 0*_sigSizes_124[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_238, _sigValue_117);
|
|
ctx->field->add(_tmp_96,_tmp_95,_sigValue_117);
|
|
_sigIdx_138 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_sigSizes_125 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_offset_240 = _sigIdx_138 + 0*_sigSizes_125[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_240, _sigValue_118);
|
|
ctx->field->add(_tmp_97,_tmp_96,_sigValue_118);
|
|
_sigIdx_139 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_sigSizes_126 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_offset_242 = _sigIdx_139 + 0*_sigSizes_126[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_242, _sigValue_119);
|
|
ctx->field->add(_tmp_98,_tmp_97,_sigValue_119);
|
|
ctx->field->add(_tmp_99,_tmp_91,_tmp_98);
|
|
_sigIdx_140 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_127 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_244 = _sigIdx_140 + 0*_sigSizes_127[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_244, _tmp_99);
|
|
mpz_set_str(_tmp_101[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_101);
|
|
while (_cond) {
|
|
|
|
/* a3210[i] <== ( c[i][15]-c[i][14]-c[i][13]+c[i][12] - c[i][11]+c[i][10]+c[i][ 9]-c[i][ 8]
|
|
-c[i][ 7]+c[i][ 6]+c[i][ 5]-c[i][ 4] + c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s210 */
|
|
_sigIdx_141 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_128 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_119 = i + 0;
|
|
_offset_250 = _sigIdx_141 + ctx->field->toInt(_v_119)*_sigSizes_128[1] + 15*_sigSizes_128[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_250, _sigValue_120);
|
|
_sigIdx_142 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_129 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_120 = i + 0;
|
|
_offset_252 = _sigIdx_142 + ctx->field->toInt(_v_120)*_sigSizes_129[1] + 14*_sigSizes_129[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_252, _sigValue_121);
|
|
ctx->field->sub(_tmp_102,_sigValue_120,_sigValue_121);
|
|
_sigIdx_143 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_130 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_121 = i + 0;
|
|
_offset_254 = _sigIdx_143 + ctx->field->toInt(_v_121)*_sigSizes_130[1] + 13*_sigSizes_130[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_254, _sigValue_122);
|
|
ctx->field->sub(_tmp_103,_tmp_102,_sigValue_122);
|
|
_sigIdx_144 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_131 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_122 = i + 0;
|
|
_offset_256 = _sigIdx_144 + ctx->field->toInt(_v_122)*_sigSizes_131[1] + 12*_sigSizes_131[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_256, _sigValue_123);
|
|
ctx->field->add(_tmp_104,_tmp_103,_sigValue_123);
|
|
_sigIdx_145 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_132 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_123 = i + 0;
|
|
_offset_258 = _sigIdx_145 + ctx->field->toInt(_v_123)*_sigSizes_132[1] + 11*_sigSizes_132[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_258, _sigValue_124);
|
|
ctx->field->sub(_tmp_105,_tmp_104,_sigValue_124);
|
|
_sigIdx_146 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_133 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_124 = i + 0;
|
|
_offset_260 = _sigIdx_146 + ctx->field->toInt(_v_124)*_sigSizes_133[1] + 10*_sigSizes_133[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_260, _sigValue_125);
|
|
ctx->field->add(_tmp_106,_tmp_105,_sigValue_125);
|
|
_sigIdx_147 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_134 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_125 = i + 0;
|
|
_offset_262 = _sigIdx_147 + ctx->field->toInt(_v_125)*_sigSizes_134[1] + 9*_sigSizes_134[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_262, _sigValue_126);
|
|
ctx->field->add(_tmp_107,_tmp_106,_sigValue_126);
|
|
_sigIdx_148 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_135 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_126 = i + 0;
|
|
_offset_264 = _sigIdx_148 + ctx->field->toInt(_v_126)*_sigSizes_135[1] + 8*_sigSizes_135[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_264, _sigValue_127);
|
|
ctx->field->sub(_tmp_108,_tmp_107,_sigValue_127);
|
|
_sigIdx_149 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_136 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_127 = i + 0;
|
|
_offset_266 = _sigIdx_149 + ctx->field->toInt(_v_127)*_sigSizes_136[1] + 7*_sigSizes_136[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_266, _sigValue_128);
|
|
ctx->field->sub(_tmp_109,_tmp_108,_sigValue_128);
|
|
_sigIdx_150 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_137 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_128 = i + 0;
|
|
_offset_268 = _sigIdx_150 + ctx->field->toInt(_v_128)*_sigSizes_137[1] + 6*_sigSizes_137[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_268, _sigValue_129);
|
|
ctx->field->add(_tmp_110,_tmp_109,_sigValue_129);
|
|
_sigIdx_151 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_138 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_129 = i + 0;
|
|
_offset_270 = _sigIdx_151 + ctx->field->toInt(_v_129)*_sigSizes_138[1] + 5*_sigSizes_138[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_270, _sigValue_130);
|
|
ctx->field->add(_tmp_111,_tmp_110,_sigValue_130);
|
|
_sigIdx_152 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_139 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_130 = i + 0;
|
|
_offset_272 = _sigIdx_152 + ctx->field->toInt(_v_130)*_sigSizes_139[1] + 4*_sigSizes_139[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_272, _sigValue_131);
|
|
ctx->field->sub(_tmp_112,_tmp_111,_sigValue_131);
|
|
_sigIdx_153 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_140 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_131 = i + 0;
|
|
_offset_274 = _sigIdx_153 + ctx->field->toInt(_v_131)*_sigSizes_140[1] + 3*_sigSizes_140[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_274, _sigValue_132);
|
|
ctx->field->add(_tmp_113,_tmp_112,_sigValue_132);
|
|
_sigIdx_154 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_141 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_132 = i + 0;
|
|
_offset_276 = _sigIdx_154 + ctx->field->toInt(_v_132)*_sigSizes_141[1] + 2*_sigSizes_141[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_276, _sigValue_133);
|
|
ctx->field->sub(_tmp_114,_tmp_113,_sigValue_133);
|
|
_sigIdx_155 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_142 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_133 = i + 0;
|
|
_offset_278 = _sigIdx_155 + ctx->field->toInt(_v_133)*_sigSizes_142[1] + 1*_sigSizes_142[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_278, _sigValue_134);
|
|
ctx->field->sub(_tmp_115,_tmp_114,_sigValue_134);
|
|
_sigIdx_156 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_143 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_134 = i + 0;
|
|
_offset_280 = _sigIdx_156 + ctx->field->toInt(_v_134)*_sigSizes_143[1] + 0*_sigSizes_143[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_280, _sigValue_135);
|
|
ctx->field->add(_tmp_116,_tmp_115,_sigValue_135);
|
|
_sigIdx_157 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_157, _sigValue_136);
|
|
ctx->field->mul(_tmp_117,_tmp_116,_sigValue_136);
|
|
_sigIdx_158 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_sigSizes_144 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_v_135 = i + 0;
|
|
_offset_282 = _sigIdx_158 + ctx->field->toInt(_v_135)*_sigSizes_144[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_282, _tmp_117);
|
|
|
|
/* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */
|
|
_sigIdx_159 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_145 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_136 = i + 0;
|
|
_offset_284 = _sigIdx_159 + ctx->field->toInt(_v_136)*_sigSizes_145[1] + 14*_sigSizes_145[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_284, _sigValue_137);
|
|
_sigIdx_160 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_146 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_137 = i + 0;
|
|
_offset_286 = _sigIdx_160 + ctx->field->toInt(_v_137)*_sigSizes_146[1] + 12*_sigSizes_146[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_286, _sigValue_138);
|
|
ctx->field->sub(_tmp_118,_sigValue_137,_sigValue_138);
|
|
_sigIdx_161 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_147 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_138 = i + 0;
|
|
_offset_288 = _sigIdx_161 + ctx->field->toInt(_v_138)*_sigSizes_147[1] + 10*_sigSizes_147[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_139);
|
|
ctx->field->sub(_tmp_119,_tmp_118,_sigValue_139);
|
|
_sigIdx_162 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_148 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_139 = i + 0;
|
|
_offset_290 = _sigIdx_162 + ctx->field->toInt(_v_139)*_sigSizes_148[1] + 8*_sigSizes_148[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_290, _sigValue_140);
|
|
ctx->field->add(_tmp_120,_tmp_119,_sigValue_140);
|
|
_sigIdx_163 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_149 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_140 = i + 0;
|
|
_offset_292 = _sigIdx_163 + ctx->field->toInt(_v_140)*_sigSizes_149[1] + 6*_sigSizes_149[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_292, _sigValue_141);
|
|
ctx->field->sub(_tmp_121,_tmp_120,_sigValue_141);
|
|
_sigIdx_164 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_150 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_141 = i + 0;
|
|
_offset_294 = _sigIdx_164 + ctx->field->toInt(_v_141)*_sigSizes_150[1] + 4*_sigSizes_150[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_294, _sigValue_142);
|
|
ctx->field->add(_tmp_122,_tmp_121,_sigValue_142);
|
|
_sigIdx_165 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_151 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_142 = i + 0;
|
|
_offset_296 = _sigIdx_165 + ctx->field->toInt(_v_142)*_sigSizes_151[1] + 2*_sigSizes_151[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_296, _sigValue_143);
|
|
ctx->field->add(_tmp_123,_tmp_122,_sigValue_143);
|
|
_sigIdx_166 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_152 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_143 = i + 0;
|
|
_offset_298 = _sigIdx_166 + ctx->field->toInt(_v_143)*_sigSizes_152[1] + 0*_sigSizes_152[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_298, _sigValue_144);
|
|
ctx->field->sub(_tmp_124,_tmp_123,_sigValue_144);
|
|
_sigIdx_167 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_167, _sigValue_145);
|
|
ctx->field->mul(_tmp_125,_tmp_124,_sigValue_145);
|
|
_sigIdx_168 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_sigSizes_153 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_v_144 = i + 0;
|
|
_offset_300 = _sigIdx_168 + ctx->field->toInt(_v_144)*_sigSizes_153[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_300, _tmp_125);
|
|
|
|
/* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */
|
|
_sigIdx_169 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_154 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_145 = i + 0;
|
|
_offset_302 = _sigIdx_169 + ctx->field->toInt(_v_145)*_sigSizes_154[1] + 13*_sigSizes_154[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_302, _sigValue_146);
|
|
_sigIdx_170 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_155 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_146 = i + 0;
|
|
_offset_304 = _sigIdx_170 + ctx->field->toInt(_v_146)*_sigSizes_155[1] + 12*_sigSizes_155[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_304, _sigValue_147);
|
|
ctx->field->sub(_tmp_126,_sigValue_146,_sigValue_147);
|
|
_sigIdx_171 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_156 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_147 = i + 0;
|
|
_offset_306 = _sigIdx_171 + ctx->field->toInt(_v_147)*_sigSizes_156[1] + 9*_sigSizes_156[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_306, _sigValue_148);
|
|
ctx->field->sub(_tmp_127,_tmp_126,_sigValue_148);
|
|
_sigIdx_172 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_157 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_148 = i + 0;
|
|
_offset_308 = _sigIdx_172 + ctx->field->toInt(_v_148)*_sigSizes_157[1] + 8*_sigSizes_157[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_308, _sigValue_149);
|
|
ctx->field->add(_tmp_128,_tmp_127,_sigValue_149);
|
|
_sigIdx_173 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_158 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_149 = i + 0;
|
|
_offset_310 = _sigIdx_173 + ctx->field->toInt(_v_149)*_sigSizes_158[1] + 5*_sigSizes_158[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_310, _sigValue_150);
|
|
ctx->field->sub(_tmp_129,_tmp_128,_sigValue_150);
|
|
_sigIdx_174 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_159 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_150 = i + 0;
|
|
_offset_312 = _sigIdx_174 + ctx->field->toInt(_v_150)*_sigSizes_159[1] + 4*_sigSizes_159[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_312, _sigValue_151);
|
|
ctx->field->add(_tmp_130,_tmp_129,_sigValue_151);
|
|
_sigIdx_175 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_160 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_151 = i + 0;
|
|
_offset_314 = _sigIdx_175 + ctx->field->toInt(_v_151)*_sigSizes_160[1] + 1*_sigSizes_160[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_314, _sigValue_152);
|
|
ctx->field->add(_tmp_131,_tmp_130,_sigValue_152);
|
|
_sigIdx_176 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_161 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_152 = i + 0;
|
|
_offset_316 = _sigIdx_176 + ctx->field->toInt(_v_152)*_sigSizes_161[1] + 0*_sigSizes_161[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_316, _sigValue_153);
|
|
ctx->field->sub(_tmp_132,_tmp_131,_sigValue_153);
|
|
_sigIdx_177 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_177, _sigValue_154);
|
|
ctx->field->mul(_tmp_133,_tmp_132,_sigValue_154);
|
|
_sigIdx_178 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_sigSizes_162 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_v_153 = i + 0;
|
|
_offset_318 = _sigIdx_178 + ctx->field->toInt(_v_153)*_sigSizes_162[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_318, _tmp_133);
|
|
|
|
/* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */
|
|
_sigIdx_179 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_163 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_154 = i + 0;
|
|
_offset_320 = _sigIdx_179 + ctx->field->toInt(_v_154)*_sigSizes_163[1] + 11*_sigSizes_163[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_320, _sigValue_155);
|
|
_sigIdx_180 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_164 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_155 = i + 0;
|
|
_offset_322 = _sigIdx_180 + ctx->field->toInt(_v_155)*_sigSizes_164[1] + 10*_sigSizes_164[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_322, _sigValue_156);
|
|
ctx->field->sub(_tmp_134,_sigValue_155,_sigValue_156);
|
|
_sigIdx_181 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_165 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_156 = i + 0;
|
|
_offset_324 = _sigIdx_181 + ctx->field->toInt(_v_156)*_sigSizes_165[1] + 9*_sigSizes_165[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_157);
|
|
ctx->field->sub(_tmp_135,_tmp_134,_sigValue_157);
|
|
_sigIdx_182 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_166 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_157 = i + 0;
|
|
_offset_326 = _sigIdx_182 + ctx->field->toInt(_v_157)*_sigSizes_166[1] + 8*_sigSizes_166[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_326, _sigValue_158);
|
|
ctx->field->add(_tmp_136,_tmp_135,_sigValue_158);
|
|
_sigIdx_183 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_167 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_158 = i + 0;
|
|
_offset_328 = _sigIdx_183 + ctx->field->toInt(_v_158)*_sigSizes_167[1] + 3*_sigSizes_167[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_328, _sigValue_159);
|
|
ctx->field->sub(_tmp_137,_tmp_136,_sigValue_159);
|
|
_sigIdx_184 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_168 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_159 = i + 0;
|
|
_offset_330 = _sigIdx_184 + ctx->field->toInt(_v_159)*_sigSizes_168[1] + 2*_sigSizes_168[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_330, _sigValue_160);
|
|
ctx->field->add(_tmp_138,_tmp_137,_sigValue_160);
|
|
_sigIdx_185 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_169 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_160 = i + 0;
|
|
_offset_332 = _sigIdx_185 + ctx->field->toInt(_v_160)*_sigSizes_169[1] + 1*_sigSizes_169[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_332, _sigValue_161);
|
|
ctx->field->add(_tmp_139,_tmp_138,_sigValue_161);
|
|
_sigIdx_186 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_170 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_161 = i + 0;
|
|
_offset_334 = _sigIdx_186 + ctx->field->toInt(_v_161)*_sigSizes_170[1] + 0*_sigSizes_170[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_334, _sigValue_162);
|
|
ctx->field->sub(_tmp_140,_tmp_139,_sigValue_162);
|
|
_sigIdx_187 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_187, _sigValue_163);
|
|
ctx->field->mul(_tmp_141,_tmp_140,_sigValue_163);
|
|
_sigIdx_188 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_sigSizes_171 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_v_162 = i + 0;
|
|
_offset_336 = _sigIdx_188 + ctx->field->toInt(_v_162)*_sigSizes_171[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_336, _tmp_141);
|
|
|
|
/* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */
|
|
_sigIdx_189 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_172 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_163 = i + 0;
|
|
_offset_338 = _sigIdx_189 + ctx->field->toInt(_v_163)*_sigSizes_172[1] + 12*_sigSizes_172[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_338, _sigValue_164);
|
|
_sigIdx_190 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_173 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_164 = i + 0;
|
|
_offset_340 = _sigIdx_190 + ctx->field->toInt(_v_164)*_sigSizes_173[1] + 8*_sigSizes_173[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_340, _sigValue_165);
|
|
ctx->field->sub(_tmp_142,_sigValue_164,_sigValue_165);
|
|
_sigIdx_191 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_174 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_165 = i + 0;
|
|
_offset_342 = _sigIdx_191 + ctx->field->toInt(_v_165)*_sigSizes_174[1] + 4*_sigSizes_174[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_342, _sigValue_166);
|
|
ctx->field->sub(_tmp_143,_tmp_142,_sigValue_166);
|
|
_sigIdx_192 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_175 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_166 = i + 0;
|
|
_offset_344 = _sigIdx_192 + ctx->field->toInt(_v_166)*_sigSizes_175[1] + 0*_sigSizes_175[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_344, _sigValue_167);
|
|
ctx->field->add(_tmp_144,_tmp_143,_sigValue_167);
|
|
_sigIdx_193 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_176 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_345 = _sigIdx_193 + 2*_sigSizes_176[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_345, _sigValue_168);
|
|
ctx->field->mul(_tmp_145,_tmp_144,_sigValue_168);
|
|
_sigIdx_194 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_sigSizes_177 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_v_167 = i + 0;
|
|
_offset_347 = _sigIdx_194 + ctx->field->toInt(_v_167)*_sigSizes_177[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_347, _tmp_145);
|
|
|
|
/* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */
|
|
_sigIdx_195 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_178 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_168 = i + 0;
|
|
_offset_349 = _sigIdx_195 + ctx->field->toInt(_v_168)*_sigSizes_178[1] + 10*_sigSizes_178[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_349, _sigValue_169);
|
|
_sigIdx_196 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_179 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_169 = i + 0;
|
|
_offset_351 = _sigIdx_196 + ctx->field->toInt(_v_169)*_sigSizes_179[1] + 8*_sigSizes_179[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_351, _sigValue_170);
|
|
ctx->field->sub(_tmp_146,_sigValue_169,_sigValue_170);
|
|
_sigIdx_197 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_180 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_170 = i + 0;
|
|
_offset_353 = _sigIdx_197 + ctx->field->toInt(_v_170)*_sigSizes_180[1] + 2*_sigSizes_180[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_353, _sigValue_171);
|
|
ctx->field->sub(_tmp_147,_tmp_146,_sigValue_171);
|
|
_sigIdx_198 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_181 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_171 = i + 0;
|
|
_offset_355 = _sigIdx_198 + ctx->field->toInt(_v_171)*_sigSizes_181[1] + 0*_sigSizes_181[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_355, _sigValue_172);
|
|
ctx->field->add(_tmp_148,_tmp_147,_sigValue_172);
|
|
_sigIdx_199 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_182 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_356 = _sigIdx_199 + 1*_sigSizes_182[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_356, _sigValue_173);
|
|
ctx->field->mul(_tmp_149,_tmp_148,_sigValue_173);
|
|
_sigIdx_200 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_sigSizes_183 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_v_172 = i + 0;
|
|
_offset_358 = _sigIdx_200 + ctx->field->toInt(_v_172)*_sigSizes_183[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_358, _tmp_149);
|
|
|
|
/* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */
|
|
_sigIdx_201 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_184 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_173 = i + 0;
|
|
_offset_360 = _sigIdx_201 + ctx->field->toInt(_v_173)*_sigSizes_184[1] + 9*_sigSizes_184[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_360, _sigValue_174);
|
|
_sigIdx_202 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_185 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_174 = i + 0;
|
|
_offset_362 = _sigIdx_202 + ctx->field->toInt(_v_174)*_sigSizes_185[1] + 8*_sigSizes_185[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_362, _sigValue_175);
|
|
ctx->field->sub(_tmp_150,_sigValue_174,_sigValue_175);
|
|
_sigIdx_203 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_186 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_175 = i + 0;
|
|
_offset_364 = _sigIdx_203 + ctx->field->toInt(_v_175)*_sigSizes_186[1] + 1*_sigSizes_186[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_364, _sigValue_176);
|
|
ctx->field->sub(_tmp_151,_tmp_150,_sigValue_176);
|
|
_sigIdx_204 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_187 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_176 = i + 0;
|
|
_offset_366 = _sigIdx_204 + ctx->field->toInt(_v_176)*_sigSizes_187[1] + 0*_sigSizes_187[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_366, _sigValue_177);
|
|
ctx->field->add(_tmp_152,_tmp_151,_sigValue_177);
|
|
_sigIdx_205 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_188 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_367 = _sigIdx_205 + 0*_sigSizes_188[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_367, _sigValue_178);
|
|
ctx->field->mul(_tmp_153,_tmp_152,_sigValue_178);
|
|
_sigIdx_206 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_sigSizes_189 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_v_177 = i + 0;
|
|
_offset_369 = _sigIdx_206 + ctx->field->toInt(_v_177)*_sigSizes_189[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_369, _tmp_153);
|
|
|
|
/* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */
|
|
_sigIdx_207 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_190 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_178 = i + 0;
|
|
_offset_371 = _sigIdx_207 + ctx->field->toInt(_v_178)*_sigSizes_190[1] + 8*_sigSizes_190[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_371, _sigValue_179);
|
|
_sigIdx_208 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_191 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_179 = i + 0;
|
|
_offset_373 = _sigIdx_208 + ctx->field->toInt(_v_179)*_sigSizes_191[1] + 0*_sigSizes_191[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_373, _sigValue_180);
|
|
ctx->field->sub(_tmp_154,_sigValue_179,_sigValue_180);
|
|
_sigIdx_209 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_sigSizes_192 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_v_180 = i + 0;
|
|
_offset_375 = _sigIdx_209 + ctx->field->toInt(_v_180)*_sigSizes_192[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_375, _tmp_154);
|
|
|
|
/* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */
|
|
_sigIdx_210 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_193 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_181 = i + 0;
|
|
_offset_377 = _sigIdx_210 + ctx->field->toInt(_v_181)*_sigSizes_193[1] + 7*_sigSizes_193[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_377, _sigValue_181);
|
|
_sigIdx_211 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_194 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_182 = i + 0;
|
|
_offset_379 = _sigIdx_211 + ctx->field->toInt(_v_182)*_sigSizes_194[1] + 6*_sigSizes_194[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_379, _sigValue_182);
|
|
ctx->field->sub(_tmp_155,_sigValue_181,_sigValue_182);
|
|
_sigIdx_212 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_195 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_183 = i + 0;
|
|
_offset_381 = _sigIdx_212 + ctx->field->toInt(_v_183)*_sigSizes_195[1] + 5*_sigSizes_195[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_381, _sigValue_183);
|
|
ctx->field->sub(_tmp_156,_tmp_155,_sigValue_183);
|
|
_sigIdx_213 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_196 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_184 = i + 0;
|
|
_offset_383 = _sigIdx_213 + ctx->field->toInt(_v_184)*_sigSizes_196[1] + 4*_sigSizes_196[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_383, _sigValue_184);
|
|
ctx->field->add(_tmp_157,_tmp_156,_sigValue_184);
|
|
_sigIdx_214 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_197 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_185 = i + 0;
|
|
_offset_385 = _sigIdx_214 + ctx->field->toInt(_v_185)*_sigSizes_197[1] + 3*_sigSizes_197[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_385, _sigValue_185);
|
|
ctx->field->sub(_tmp_158,_tmp_157,_sigValue_185);
|
|
_sigIdx_215 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_198 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_186 = i + 0;
|
|
_offset_387 = _sigIdx_215 + ctx->field->toInt(_v_186)*_sigSizes_198[1] + 2*_sigSizes_198[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_387, _sigValue_186);
|
|
ctx->field->add(_tmp_159,_tmp_158,_sigValue_186);
|
|
_sigIdx_216 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_199 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_187 = i + 0;
|
|
_offset_389 = _sigIdx_216 + ctx->field->toInt(_v_187)*_sigSizes_199[1] + 1*_sigSizes_199[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_389, _sigValue_187);
|
|
ctx->field->add(_tmp_160,_tmp_159,_sigValue_187);
|
|
_sigIdx_217 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_200 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_188 = i + 0;
|
|
_offset_391 = _sigIdx_217 + ctx->field->toInt(_v_188)*_sigSizes_200[1] + 0*_sigSizes_200[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_391, _sigValue_188);
|
|
ctx->field->sub(_tmp_161,_tmp_160,_sigValue_188);
|
|
_sigIdx_218 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_218, _sigValue_189);
|
|
ctx->field->mul(_tmp_162,_tmp_161,_sigValue_189);
|
|
_sigIdx_219 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_sigSizes_201 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_v_189 = i + 0;
|
|
_offset_393 = _sigIdx_219 + ctx->field->toInt(_v_189)*_sigSizes_201[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_393, _tmp_162);
|
|
|
|
/* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */
|
|
_sigIdx_220 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_202 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_190 = i + 0;
|
|
_offset_395 = _sigIdx_220 + ctx->field->toInt(_v_190)*_sigSizes_202[1] + 6*_sigSizes_202[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_395, _sigValue_190);
|
|
_sigIdx_221 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_203 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_191 = i + 0;
|
|
_offset_397 = _sigIdx_221 + ctx->field->toInt(_v_191)*_sigSizes_203[1] + 4*_sigSizes_203[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_397, _sigValue_191);
|
|
ctx->field->sub(_tmp_163,_sigValue_190,_sigValue_191);
|
|
_sigIdx_222 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_204 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_192 = i + 0;
|
|
_offset_399 = _sigIdx_222 + ctx->field->toInt(_v_192)*_sigSizes_204[1] + 2*_sigSizes_204[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_399, _sigValue_192);
|
|
ctx->field->sub(_tmp_164,_tmp_163,_sigValue_192);
|
|
_sigIdx_223 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_205 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_193 = i + 0;
|
|
_offset_401 = _sigIdx_223 + ctx->field->toInt(_v_193)*_sigSizes_205[1] + 0*_sigSizes_205[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_401, _sigValue_193);
|
|
ctx->field->add(_tmp_165,_tmp_164,_sigValue_193);
|
|
_sigIdx_224 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_224, _sigValue_194);
|
|
ctx->field->mul(_tmp_166,_tmp_165,_sigValue_194);
|
|
_sigIdx_225 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_sigSizes_206 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_v_194 = i + 0;
|
|
_offset_403 = _sigIdx_225 + ctx->field->toInt(_v_194)*_sigSizes_206[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_403, _tmp_166);
|
|
|
|
/* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */
|
|
_sigIdx_226 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_207 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_195 = i + 0;
|
|
_offset_405 = _sigIdx_226 + ctx->field->toInt(_v_195)*_sigSizes_207[1] + 5*_sigSizes_207[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_405, _sigValue_195);
|
|
_sigIdx_227 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_208 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_196 = i + 0;
|
|
_offset_407 = _sigIdx_227 + ctx->field->toInt(_v_196)*_sigSizes_208[1] + 4*_sigSizes_208[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_407, _sigValue_196);
|
|
ctx->field->sub(_tmp_167,_sigValue_195,_sigValue_196);
|
|
_sigIdx_228 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_209 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_197 = i + 0;
|
|
_offset_409 = _sigIdx_228 + ctx->field->toInt(_v_197)*_sigSizes_209[1] + 1*_sigSizes_209[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_409, _sigValue_197);
|
|
ctx->field->sub(_tmp_168,_tmp_167,_sigValue_197);
|
|
_sigIdx_229 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_210 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_198 = i + 0;
|
|
_offset_411 = _sigIdx_229 + ctx->field->toInt(_v_198)*_sigSizes_210[1] + 0*_sigSizes_210[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_411, _sigValue_198);
|
|
ctx->field->add(_tmp_169,_tmp_168,_sigValue_198);
|
|
_sigIdx_230 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_230, _sigValue_199);
|
|
ctx->field->mul(_tmp_170,_tmp_169,_sigValue_199);
|
|
_sigIdx_231 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_sigSizes_211 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_v_199 = i + 0;
|
|
_offset_413 = _sigIdx_231 + ctx->field->toInt(_v_199)*_sigSizes_211[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_413, _tmp_170);
|
|
|
|
/* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */
|
|
_sigIdx_232 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_212 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_200 = i + 0;
|
|
_offset_415 = _sigIdx_232 + ctx->field->toInt(_v_200)*_sigSizes_212[1] + 3*_sigSizes_212[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_415, _sigValue_200);
|
|
_sigIdx_233 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_213 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_201 = i + 0;
|
|
_offset_417 = _sigIdx_233 + ctx->field->toInt(_v_201)*_sigSizes_213[1] + 2*_sigSizes_213[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_417, _sigValue_201);
|
|
ctx->field->sub(_tmp_171,_sigValue_200,_sigValue_201);
|
|
_sigIdx_234 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_214 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_202 = i + 0;
|
|
_offset_419 = _sigIdx_234 + ctx->field->toInt(_v_202)*_sigSizes_214[1] + 1*_sigSizes_214[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_419, _sigValue_202);
|
|
ctx->field->sub(_tmp_172,_tmp_171,_sigValue_202);
|
|
_sigIdx_235 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_215 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_203 = i + 0;
|
|
_offset_421 = _sigIdx_235 + ctx->field->toInt(_v_203)*_sigSizes_215[1] + 0*_sigSizes_215[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_421, _sigValue_203);
|
|
ctx->field->add(_tmp_173,_tmp_172,_sigValue_203);
|
|
_sigIdx_236 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_236, _sigValue_204);
|
|
ctx->field->mul(_tmp_174,_tmp_173,_sigValue_204);
|
|
_sigIdx_237 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_sigSizes_216 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_v_204 = i + 0;
|
|
_offset_423 = _sigIdx_237 + ctx->field->toInt(_v_204)*_sigSizes_216[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_423, _tmp_174);
|
|
|
|
/* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */
|
|
_sigIdx_238 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_217 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_205 = i + 0;
|
|
_offset_425 = _sigIdx_238 + ctx->field->toInt(_v_205)*_sigSizes_217[1] + 4*_sigSizes_217[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_425, _sigValue_205);
|
|
_sigIdx_239 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_218 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_206 = i + 0;
|
|
_offset_427 = _sigIdx_239 + ctx->field->toInt(_v_206)*_sigSizes_218[1] + 0*_sigSizes_218[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_427, _sigValue_206);
|
|
ctx->field->sub(_tmp_175,_sigValue_205,_sigValue_206);
|
|
_sigIdx_240 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_219 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_428 = _sigIdx_240 + 2*_sigSizes_219[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_428, _sigValue_207);
|
|
ctx->field->mul(_tmp_176,_tmp_175,_sigValue_207);
|
|
_sigIdx_241 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_sigSizes_220 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_v_207 = i + 0;
|
|
_offset_430 = _sigIdx_241 + ctx->field->toInt(_v_207)*_sigSizes_220[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_430, _tmp_176);
|
|
|
|
/* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */
|
|
_sigIdx_242 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_221 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_208 = i + 0;
|
|
_offset_432 = _sigIdx_242 + ctx->field->toInt(_v_208)*_sigSizes_221[1] + 2*_sigSizes_221[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_432, _sigValue_208);
|
|
_sigIdx_243 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_222 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_209 = i + 0;
|
|
_offset_434 = _sigIdx_243 + ctx->field->toInt(_v_209)*_sigSizes_222[1] + 0*_sigSizes_222[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_434, _sigValue_209);
|
|
ctx->field->sub(_tmp_177,_sigValue_208,_sigValue_209);
|
|
_sigIdx_244 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_223 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_435 = _sigIdx_244 + 1*_sigSizes_223[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_435, _sigValue_210);
|
|
ctx->field->mul(_tmp_178,_tmp_177,_sigValue_210);
|
|
_sigIdx_245 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_sigSizes_224 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_v_210 = i + 0;
|
|
_offset_437 = _sigIdx_245 + ctx->field->toInt(_v_210)*_sigSizes_224[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_437, _tmp_178);
|
|
|
|
/* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */
|
|
_sigIdx_246 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_225 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_211 = i + 0;
|
|
_offset_439 = _sigIdx_246 + ctx->field->toInt(_v_211)*_sigSizes_225[1] + 1*_sigSizes_225[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_439, _sigValue_211);
|
|
_sigIdx_247 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_226 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_212 = i + 0;
|
|
_offset_441 = _sigIdx_247 + ctx->field->toInt(_v_212)*_sigSizes_226[1] + 0*_sigSizes_226[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_441, _sigValue_212);
|
|
ctx->field->sub(_tmp_179,_sigValue_211,_sigValue_212);
|
|
_sigIdx_248 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_227 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_442 = _sigIdx_248 + 0*_sigSizes_227[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_442, _sigValue_213);
|
|
ctx->field->mul(_tmp_180,_tmp_179,_sigValue_213);
|
|
_sigIdx_249 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_sigSizes_228 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_v_213 = i + 0;
|
|
_offset_444 = _sigIdx_249 + ctx->field->toInt(_v_213)*_sigSizes_228[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_444, _tmp_180);
|
|
|
|
/* a[i] <== ( c[i][ 0] ) */
|
|
_sigIdx_250 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_229 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_214 = i + 0;
|
|
_offset_446 = _sigIdx_250 + ctx->field->toInt(_v_214)*_sigSizes_229[1] + 0*_sigSizes_229[2];
|
|
ctx->getSignal(ctx->cIdx, _offset_446, _sigValue_214);
|
|
_sigIdx_251 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_sigSizes_230 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_v_215 = i + 0;
|
|
_offset_448 = _sigIdx_251 + ctx->field->toInt(_v_215)*_sigSizes_230[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_448, _sigValue_214);
|
|
|
|
/* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] +
|
|
( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */
|
|
_sigIdx_252 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_sigSizes_231 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */);
|
|
_v_216 = i + 0;
|
|
_offset_450 = _sigIdx_252 + ctx->field->toInt(_v_216)*_sigSizes_231[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_450, _sigValue_215);
|
|
_sigIdx_253 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_sigSizes_232 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */);
|
|
_v_217 = i + 0;
|
|
_offset_452 = _sigIdx_253 + ctx->field->toInt(_v_217)*_sigSizes_232[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_452, _sigValue_216);
|
|
ctx->field->add(_tmp_181,_sigValue_215,_sigValue_216);
|
|
_sigIdx_254 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_sigSizes_233 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */);
|
|
_v_218 = i + 0;
|
|
_offset_454 = _sigIdx_254 + ctx->field->toInt(_v_218)*_sigSizes_233[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_454, _sigValue_217);
|
|
ctx->field->add(_tmp_182,_tmp_181,_sigValue_217);
|
|
_sigIdx_255 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_sigSizes_234 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */);
|
|
_v_219 = i + 0;
|
|
_offset_456 = _sigIdx_255 + ctx->field->toInt(_v_219)*_sigSizes_234[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_456, _sigValue_218);
|
|
ctx->field->add(_tmp_183,_tmp_182,_sigValue_218);
|
|
_sigIdx_256 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_sigSizes_235 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */);
|
|
_v_220 = i + 0;
|
|
_offset_458 = _sigIdx_256 + ctx->field->toInt(_v_220)*_sigSizes_235[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_458, _sigValue_219);
|
|
ctx->field->add(_tmp_184,_tmp_183,_sigValue_219);
|
|
_sigIdx_257 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_sigSizes_236 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */);
|
|
_v_221 = i + 0;
|
|
_offset_460 = _sigIdx_257 + ctx->field->toInt(_v_221)*_sigSizes_236[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_460, _sigValue_220);
|
|
ctx->field->add(_tmp_185,_tmp_184,_sigValue_220);
|
|
_sigIdx_258 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_sigSizes_237 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */);
|
|
_v_222 = i + 0;
|
|
_offset_462 = _sigIdx_258 + ctx->field->toInt(_v_222)*_sigSizes_237[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_462, _sigValue_221);
|
|
ctx->field->add(_tmp_186,_tmp_185,_sigValue_221);
|
|
_sigIdx_259 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_sigSizes_238 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */);
|
|
_v_223 = i + 0;
|
|
_offset_464 = _sigIdx_259 + ctx->field->toInt(_v_223)*_sigSizes_238[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_464, _sigValue_222);
|
|
ctx->field->add(_tmp_187,_tmp_186,_sigValue_222);
|
|
_sigIdx_260 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_239 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_465 = _sigIdx_260 + 3*_sigSizes_239[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_465, _sigValue_223);
|
|
ctx->field->mul(_tmp_188,_tmp_187,_sigValue_223);
|
|
_sigIdx_261 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_sigSizes_240 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */);
|
|
_v_224 = i + 0;
|
|
_offset_467 = _sigIdx_261 + ctx->field->toInt(_v_224)*_sigSizes_240[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_467, _sigValue_224);
|
|
_sigIdx_262 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_sigSizes_241 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */);
|
|
_v_225 = i + 0;
|
|
_offset_469 = _sigIdx_262 + ctx->field->toInt(_v_225)*_sigSizes_241[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_469, _sigValue_225);
|
|
ctx->field->add(_tmp_189,_sigValue_224,_sigValue_225);
|
|
_sigIdx_263 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_sigSizes_242 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */);
|
|
_v_226 = i + 0;
|
|
_offset_471 = _sigIdx_263 + ctx->field->toInt(_v_226)*_sigSizes_242[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_471, _sigValue_226);
|
|
ctx->field->add(_tmp_190,_tmp_189,_sigValue_226);
|
|
_sigIdx_264 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_sigSizes_243 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */);
|
|
_v_227 = i + 0;
|
|
_offset_473 = _sigIdx_264 + ctx->field->toInt(_v_227)*_sigSizes_243[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_473, _sigValue_227);
|
|
ctx->field->add(_tmp_191,_tmp_190,_sigValue_227);
|
|
_sigIdx_265 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_sigSizes_244 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */);
|
|
_v_228 = i + 0;
|
|
_offset_475 = _sigIdx_265 + ctx->field->toInt(_v_228)*_sigSizes_244[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_475, _sigValue_228);
|
|
ctx->field->add(_tmp_192,_tmp_191,_sigValue_228);
|
|
_sigIdx_266 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_sigSizes_245 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */);
|
|
_v_229 = i + 0;
|
|
_offset_477 = _sigIdx_266 + ctx->field->toInt(_v_229)*_sigSizes_245[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_477, _sigValue_229);
|
|
ctx->field->add(_tmp_193,_tmp_192,_sigValue_229);
|
|
_sigIdx_267 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_sigSizes_246 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */);
|
|
_v_230 = i + 0;
|
|
_offset_479 = _sigIdx_267 + ctx->field->toInt(_v_230)*_sigSizes_246[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_479, _sigValue_230);
|
|
ctx->field->add(_tmp_194,_tmp_193,_sigValue_230);
|
|
_sigIdx_268 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_sigSizes_247 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */);
|
|
_v_231 = i + 0;
|
|
_offset_481 = _sigIdx_268 + ctx->field->toInt(_v_231)*_sigSizes_247[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_481, _sigValue_231);
|
|
ctx->field->add(_tmp_195,_tmp_194,_sigValue_231);
|
|
ctx->field->add(_tmp_196,_tmp_188,_tmp_195);
|
|
_sigIdx_269 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_248 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_232 = i + 0;
|
|
_offset_483 = _sigIdx_269 + ctx->field->toInt(_v_232)*_sigSizes_248[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_483, _tmp_196);
|
|
_v_233 = i + 0;
|
|
ctx->field->add(_tmp_197, _v_233, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_197, 1);
|
|
_v_234 = i + 0;
|
|
ctx->field->lt(_tmp_198,_v_234,_const);
|
|
_cond = ctx->field->isTrue(_tmp_198);
|
|
}
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_tmp_1, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_sigValue_8, 1);
|
|
ctx->freeBigInts(_sigValue_9, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(_sigValue_10, 1);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_sigValue_11, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_12, 1);
|
|
ctx->freeBigInts(_tmp_8, 1);
|
|
ctx->freeBigInts(_sigValue_13, 1);
|
|
ctx->freeBigInts(_tmp_9, 1);
|
|
ctx->freeBigInts(_sigValue_14, 1);
|
|
ctx->freeBigInts(_tmp_10, 1);
|
|
ctx->freeBigInts(_sigValue_15, 1);
|
|
ctx->freeBigInts(_tmp_11, 1);
|
|
ctx->freeBigInts(_sigValue_16, 1);
|
|
ctx->freeBigInts(_tmp_12, 1);
|
|
ctx->freeBigInts(_sigValue_17, 1);
|
|
ctx->freeBigInts(_tmp_13, 1);
|
|
ctx->freeBigInts(_sigValue_18, 1);
|
|
ctx->freeBigInts(_tmp_14, 1);
|
|
ctx->freeBigInts(_sigValue_19, 1);
|
|
ctx->freeBigInts(_tmp_15, 1);
|
|
ctx->freeBigInts(_sigValue_20, 1);
|
|
ctx->freeBigInts(_tmp_16, 1);
|
|
ctx->freeBigInts(_sigValue_21, 1);
|
|
ctx->freeBigInts(_tmp_17, 1);
|
|
ctx->freeBigInts(_sigValue_22, 1);
|
|
ctx->freeBigInts(_tmp_18, 1);
|
|
ctx->freeBigInts(_sigValue_23, 1);
|
|
ctx->freeBigInts(_tmp_19, 1);
|
|
ctx->freeBigInts(_sigValue_24, 1);
|
|
ctx->freeBigInts(_tmp_20, 1);
|
|
ctx->freeBigInts(_sigValue_25, 1);
|
|
ctx->freeBigInts(_sigValue_26, 1);
|
|
ctx->freeBigInts(_tmp_21, 1);
|
|
ctx->freeBigInts(_sigValue_27, 1);
|
|
ctx->freeBigInts(_tmp_22, 1);
|
|
ctx->freeBigInts(_sigValue_28, 1);
|
|
ctx->freeBigInts(_tmp_23, 1);
|
|
ctx->freeBigInts(_sigValue_29, 1);
|
|
ctx->freeBigInts(_tmp_24, 1);
|
|
ctx->freeBigInts(_sigValue_30, 1);
|
|
ctx->freeBigInts(_tmp_25, 1);
|
|
ctx->freeBigInts(_sigValue_31, 1);
|
|
ctx->freeBigInts(_tmp_26, 1);
|
|
ctx->freeBigInts(_sigValue_32, 1);
|
|
ctx->freeBigInts(_tmp_27, 1);
|
|
ctx->freeBigInts(_sigValue_33, 1);
|
|
ctx->freeBigInts(_tmp_28, 1);
|
|
ctx->freeBigInts(_sigValue_34, 1);
|
|
ctx->freeBigInts(_sigValue_35, 1);
|
|
ctx->freeBigInts(_tmp_29, 1);
|
|
ctx->freeBigInts(_sigValue_36, 1);
|
|
ctx->freeBigInts(_tmp_30, 1);
|
|
ctx->freeBigInts(_sigValue_37, 1);
|
|
ctx->freeBigInts(_tmp_31, 1);
|
|
ctx->freeBigInts(_sigValue_38, 1);
|
|
ctx->freeBigInts(_tmp_32, 1);
|
|
ctx->freeBigInts(_sigValue_39, 1);
|
|
ctx->freeBigInts(_tmp_33, 1);
|
|
ctx->freeBigInts(_sigValue_40, 1);
|
|
ctx->freeBigInts(_tmp_34, 1);
|
|
ctx->freeBigInts(_sigValue_41, 1);
|
|
ctx->freeBigInts(_tmp_35, 1);
|
|
ctx->freeBigInts(_sigValue_42, 1);
|
|
ctx->freeBigInts(_tmp_36, 1);
|
|
ctx->freeBigInts(_sigValue_43, 1);
|
|
ctx->freeBigInts(_sigValue_44, 1);
|
|
ctx->freeBigInts(_tmp_37, 1);
|
|
ctx->freeBigInts(_sigValue_45, 1);
|
|
ctx->freeBigInts(_tmp_38, 1);
|
|
ctx->freeBigInts(_sigValue_46, 1);
|
|
ctx->freeBigInts(_tmp_39, 1);
|
|
ctx->freeBigInts(_sigValue_47, 1);
|
|
ctx->freeBigInts(_tmp_40, 1);
|
|
ctx->freeBigInts(_sigValue_48, 1);
|
|
ctx->freeBigInts(_tmp_41, 1);
|
|
ctx->freeBigInts(_sigValue_49, 1);
|
|
ctx->freeBigInts(_tmp_42, 1);
|
|
ctx->freeBigInts(_sigValue_50, 1);
|
|
ctx->freeBigInts(_tmp_43, 1);
|
|
ctx->freeBigInts(_sigValue_51, 1);
|
|
ctx->freeBigInts(_tmp_44, 1);
|
|
ctx->freeBigInts(_sigValue_52, 1);
|
|
ctx->freeBigInts(_sigValue_53, 1);
|
|
ctx->freeBigInts(_tmp_45, 1);
|
|
ctx->freeBigInts(_sigValue_54, 1);
|
|
ctx->freeBigInts(_tmp_46, 1);
|
|
ctx->freeBigInts(_sigValue_55, 1);
|
|
ctx->freeBigInts(_tmp_47, 1);
|
|
ctx->freeBigInts(_sigValue_56, 1);
|
|
ctx->freeBigInts(_tmp_48, 1);
|
|
ctx->freeBigInts(_sigValue_57, 1);
|
|
ctx->freeBigInts(_sigValue_58, 1);
|
|
ctx->freeBigInts(_tmp_49, 1);
|
|
ctx->freeBigInts(_sigValue_59, 1);
|
|
ctx->freeBigInts(_tmp_50, 1);
|
|
ctx->freeBigInts(_sigValue_60, 1);
|
|
ctx->freeBigInts(_tmp_51, 1);
|
|
ctx->freeBigInts(_sigValue_61, 1);
|
|
ctx->freeBigInts(_tmp_52, 1);
|
|
ctx->freeBigInts(_sigValue_62, 1);
|
|
ctx->freeBigInts(_sigValue_63, 1);
|
|
ctx->freeBigInts(_tmp_53, 1);
|
|
ctx->freeBigInts(_sigValue_64, 1);
|
|
ctx->freeBigInts(_tmp_54, 1);
|
|
ctx->freeBigInts(_sigValue_65, 1);
|
|
ctx->freeBigInts(_tmp_55, 1);
|
|
ctx->freeBigInts(_sigValue_66, 1);
|
|
ctx->freeBigInts(_tmp_56, 1);
|
|
ctx->freeBigInts(_sigValue_67, 1);
|
|
ctx->freeBigInts(_sigValue_68, 1);
|
|
ctx->freeBigInts(_tmp_57, 1);
|
|
ctx->freeBigInts(_sigValue_69, 1);
|
|
ctx->freeBigInts(_sigValue_70, 1);
|
|
ctx->freeBigInts(_tmp_58, 1);
|
|
ctx->freeBigInts(_sigValue_71, 1);
|
|
ctx->freeBigInts(_tmp_59, 1);
|
|
ctx->freeBigInts(_sigValue_72, 1);
|
|
ctx->freeBigInts(_tmp_60, 1);
|
|
ctx->freeBigInts(_sigValue_73, 1);
|
|
ctx->freeBigInts(_tmp_61, 1);
|
|
ctx->freeBigInts(_sigValue_74, 1);
|
|
ctx->freeBigInts(_tmp_62, 1);
|
|
ctx->freeBigInts(_sigValue_75, 1);
|
|
ctx->freeBigInts(_tmp_63, 1);
|
|
ctx->freeBigInts(_sigValue_76, 1);
|
|
ctx->freeBigInts(_tmp_64, 1);
|
|
ctx->freeBigInts(_sigValue_77, 1);
|
|
ctx->freeBigInts(_tmp_65, 1);
|
|
ctx->freeBigInts(_sigValue_78, 1);
|
|
ctx->freeBigInts(_sigValue_79, 1);
|
|
ctx->freeBigInts(_tmp_66, 1);
|
|
ctx->freeBigInts(_sigValue_80, 1);
|
|
ctx->freeBigInts(_tmp_67, 1);
|
|
ctx->freeBigInts(_sigValue_81, 1);
|
|
ctx->freeBigInts(_tmp_68, 1);
|
|
ctx->freeBigInts(_sigValue_82, 1);
|
|
ctx->freeBigInts(_tmp_69, 1);
|
|
ctx->freeBigInts(_sigValue_83, 1);
|
|
ctx->freeBigInts(_sigValue_84, 1);
|
|
ctx->freeBigInts(_tmp_70, 1);
|
|
ctx->freeBigInts(_sigValue_85, 1);
|
|
ctx->freeBigInts(_tmp_71, 1);
|
|
ctx->freeBigInts(_sigValue_86, 1);
|
|
ctx->freeBigInts(_tmp_72, 1);
|
|
ctx->freeBigInts(_sigValue_87, 1);
|
|
ctx->freeBigInts(_tmp_73, 1);
|
|
ctx->freeBigInts(_sigValue_88, 1);
|
|
ctx->freeBigInts(_sigValue_89, 1);
|
|
ctx->freeBigInts(_tmp_74, 1);
|
|
ctx->freeBigInts(_sigValue_90, 1);
|
|
ctx->freeBigInts(_tmp_75, 1);
|
|
ctx->freeBigInts(_sigValue_91, 1);
|
|
ctx->freeBigInts(_tmp_76, 1);
|
|
ctx->freeBigInts(_sigValue_92, 1);
|
|
ctx->freeBigInts(_tmp_77, 1);
|
|
ctx->freeBigInts(_sigValue_93, 1);
|
|
ctx->freeBigInts(_sigValue_94, 1);
|
|
ctx->freeBigInts(_tmp_78, 1);
|
|
ctx->freeBigInts(_sigValue_95, 1);
|
|
ctx->freeBigInts(_tmp_79, 1);
|
|
ctx->freeBigInts(_sigValue_96, 1);
|
|
ctx->freeBigInts(_sigValue_97, 1);
|
|
ctx->freeBigInts(_tmp_80, 1);
|
|
ctx->freeBigInts(_sigValue_98, 1);
|
|
ctx->freeBigInts(_tmp_81, 1);
|
|
ctx->freeBigInts(_sigValue_99, 1);
|
|
ctx->freeBigInts(_sigValue_100, 1);
|
|
ctx->freeBigInts(_tmp_82, 1);
|
|
ctx->freeBigInts(_sigValue_101, 1);
|
|
ctx->freeBigInts(_tmp_83, 1);
|
|
ctx->freeBigInts(_sigValue_102, 1);
|
|
ctx->freeBigInts(_sigValue_103, 1);
|
|
ctx->freeBigInts(_sigValue_104, 1);
|
|
ctx->freeBigInts(_tmp_84, 1);
|
|
ctx->freeBigInts(_sigValue_105, 1);
|
|
ctx->freeBigInts(_tmp_85, 1);
|
|
ctx->freeBigInts(_sigValue_106, 1);
|
|
ctx->freeBigInts(_tmp_86, 1);
|
|
ctx->freeBigInts(_sigValue_107, 1);
|
|
ctx->freeBigInts(_tmp_87, 1);
|
|
ctx->freeBigInts(_sigValue_108, 1);
|
|
ctx->freeBigInts(_tmp_88, 1);
|
|
ctx->freeBigInts(_sigValue_109, 1);
|
|
ctx->freeBigInts(_tmp_89, 1);
|
|
ctx->freeBigInts(_sigValue_110, 1);
|
|
ctx->freeBigInts(_tmp_90, 1);
|
|
ctx->freeBigInts(_sigValue_111, 1);
|
|
ctx->freeBigInts(_tmp_91, 1);
|
|
ctx->freeBigInts(_sigValue_112, 1);
|
|
ctx->freeBigInts(_sigValue_113, 1);
|
|
ctx->freeBigInts(_tmp_92, 1);
|
|
ctx->freeBigInts(_sigValue_114, 1);
|
|
ctx->freeBigInts(_tmp_93, 1);
|
|
ctx->freeBigInts(_sigValue_115, 1);
|
|
ctx->freeBigInts(_tmp_94, 1);
|
|
ctx->freeBigInts(_sigValue_116, 1);
|
|
ctx->freeBigInts(_tmp_95, 1);
|
|
ctx->freeBigInts(_sigValue_117, 1);
|
|
ctx->freeBigInts(_tmp_96, 1);
|
|
ctx->freeBigInts(_sigValue_118, 1);
|
|
ctx->freeBigInts(_tmp_97, 1);
|
|
ctx->freeBigInts(_sigValue_119, 1);
|
|
ctx->freeBigInts(_tmp_98, 1);
|
|
ctx->freeBigInts(_tmp_99, 1);
|
|
ctx->freeBigInts(_tmp_101, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_120, 1);
|
|
ctx->freeBigInts(_sigValue_121, 1);
|
|
ctx->freeBigInts(_tmp_102, 1);
|
|
ctx->freeBigInts(_sigValue_122, 1);
|
|
ctx->freeBigInts(_tmp_103, 1);
|
|
ctx->freeBigInts(_sigValue_123, 1);
|
|
ctx->freeBigInts(_tmp_104, 1);
|
|
ctx->freeBigInts(_sigValue_124, 1);
|
|
ctx->freeBigInts(_tmp_105, 1);
|
|
ctx->freeBigInts(_sigValue_125, 1);
|
|
ctx->freeBigInts(_tmp_106, 1);
|
|
ctx->freeBigInts(_sigValue_126, 1);
|
|
ctx->freeBigInts(_tmp_107, 1);
|
|
ctx->freeBigInts(_sigValue_127, 1);
|
|
ctx->freeBigInts(_tmp_108, 1);
|
|
ctx->freeBigInts(_sigValue_128, 1);
|
|
ctx->freeBigInts(_tmp_109, 1);
|
|
ctx->freeBigInts(_sigValue_129, 1);
|
|
ctx->freeBigInts(_tmp_110, 1);
|
|
ctx->freeBigInts(_sigValue_130, 1);
|
|
ctx->freeBigInts(_tmp_111, 1);
|
|
ctx->freeBigInts(_sigValue_131, 1);
|
|
ctx->freeBigInts(_tmp_112, 1);
|
|
ctx->freeBigInts(_sigValue_132, 1);
|
|
ctx->freeBigInts(_tmp_113, 1);
|
|
ctx->freeBigInts(_sigValue_133, 1);
|
|
ctx->freeBigInts(_tmp_114, 1);
|
|
ctx->freeBigInts(_sigValue_134, 1);
|
|
ctx->freeBigInts(_tmp_115, 1);
|
|
ctx->freeBigInts(_sigValue_135, 1);
|
|
ctx->freeBigInts(_tmp_116, 1);
|
|
ctx->freeBigInts(_sigValue_136, 1);
|
|
ctx->freeBigInts(_tmp_117, 1);
|
|
ctx->freeBigInts(_sigValue_137, 1);
|
|
ctx->freeBigInts(_sigValue_138, 1);
|
|
ctx->freeBigInts(_tmp_118, 1);
|
|
ctx->freeBigInts(_sigValue_139, 1);
|
|
ctx->freeBigInts(_tmp_119, 1);
|
|
ctx->freeBigInts(_sigValue_140, 1);
|
|
ctx->freeBigInts(_tmp_120, 1);
|
|
ctx->freeBigInts(_sigValue_141, 1);
|
|
ctx->freeBigInts(_tmp_121, 1);
|
|
ctx->freeBigInts(_sigValue_142, 1);
|
|
ctx->freeBigInts(_tmp_122, 1);
|
|
ctx->freeBigInts(_sigValue_143, 1);
|
|
ctx->freeBigInts(_tmp_123, 1);
|
|
ctx->freeBigInts(_sigValue_144, 1);
|
|
ctx->freeBigInts(_tmp_124, 1);
|
|
ctx->freeBigInts(_sigValue_145, 1);
|
|
ctx->freeBigInts(_tmp_125, 1);
|
|
ctx->freeBigInts(_sigValue_146, 1);
|
|
ctx->freeBigInts(_sigValue_147, 1);
|
|
ctx->freeBigInts(_tmp_126, 1);
|
|
ctx->freeBigInts(_sigValue_148, 1);
|
|
ctx->freeBigInts(_tmp_127, 1);
|
|
ctx->freeBigInts(_sigValue_149, 1);
|
|
ctx->freeBigInts(_tmp_128, 1);
|
|
ctx->freeBigInts(_sigValue_150, 1);
|
|
ctx->freeBigInts(_tmp_129, 1);
|
|
ctx->freeBigInts(_sigValue_151, 1);
|
|
ctx->freeBigInts(_tmp_130, 1);
|
|
ctx->freeBigInts(_sigValue_152, 1);
|
|
ctx->freeBigInts(_tmp_131, 1);
|
|
ctx->freeBigInts(_sigValue_153, 1);
|
|
ctx->freeBigInts(_tmp_132, 1);
|
|
ctx->freeBigInts(_sigValue_154, 1);
|
|
ctx->freeBigInts(_tmp_133, 1);
|
|
ctx->freeBigInts(_sigValue_155, 1);
|
|
ctx->freeBigInts(_sigValue_156, 1);
|
|
ctx->freeBigInts(_tmp_134, 1);
|
|
ctx->freeBigInts(_sigValue_157, 1);
|
|
ctx->freeBigInts(_tmp_135, 1);
|
|
ctx->freeBigInts(_sigValue_158, 1);
|
|
ctx->freeBigInts(_tmp_136, 1);
|
|
ctx->freeBigInts(_sigValue_159, 1);
|
|
ctx->freeBigInts(_tmp_137, 1);
|
|
ctx->freeBigInts(_sigValue_160, 1);
|
|
ctx->freeBigInts(_tmp_138, 1);
|
|
ctx->freeBigInts(_sigValue_161, 1);
|
|
ctx->freeBigInts(_tmp_139, 1);
|
|
ctx->freeBigInts(_sigValue_162, 1);
|
|
ctx->freeBigInts(_tmp_140, 1);
|
|
ctx->freeBigInts(_sigValue_163, 1);
|
|
ctx->freeBigInts(_tmp_141, 1);
|
|
ctx->freeBigInts(_sigValue_164, 1);
|
|
ctx->freeBigInts(_sigValue_165, 1);
|
|
ctx->freeBigInts(_tmp_142, 1);
|
|
ctx->freeBigInts(_sigValue_166, 1);
|
|
ctx->freeBigInts(_tmp_143, 1);
|
|
ctx->freeBigInts(_sigValue_167, 1);
|
|
ctx->freeBigInts(_tmp_144, 1);
|
|
ctx->freeBigInts(_sigValue_168, 1);
|
|
ctx->freeBigInts(_tmp_145, 1);
|
|
ctx->freeBigInts(_sigValue_169, 1);
|
|
ctx->freeBigInts(_sigValue_170, 1);
|
|
ctx->freeBigInts(_tmp_146, 1);
|
|
ctx->freeBigInts(_sigValue_171, 1);
|
|
ctx->freeBigInts(_tmp_147, 1);
|
|
ctx->freeBigInts(_sigValue_172, 1);
|
|
ctx->freeBigInts(_tmp_148, 1);
|
|
ctx->freeBigInts(_sigValue_173, 1);
|
|
ctx->freeBigInts(_tmp_149, 1);
|
|
ctx->freeBigInts(_sigValue_174, 1);
|
|
ctx->freeBigInts(_sigValue_175, 1);
|
|
ctx->freeBigInts(_tmp_150, 1);
|
|
ctx->freeBigInts(_sigValue_176, 1);
|
|
ctx->freeBigInts(_tmp_151, 1);
|
|
ctx->freeBigInts(_sigValue_177, 1);
|
|
ctx->freeBigInts(_tmp_152, 1);
|
|
ctx->freeBigInts(_sigValue_178, 1);
|
|
ctx->freeBigInts(_tmp_153, 1);
|
|
ctx->freeBigInts(_sigValue_179, 1);
|
|
ctx->freeBigInts(_sigValue_180, 1);
|
|
ctx->freeBigInts(_tmp_154, 1);
|
|
ctx->freeBigInts(_sigValue_181, 1);
|
|
ctx->freeBigInts(_sigValue_182, 1);
|
|
ctx->freeBigInts(_tmp_155, 1);
|
|
ctx->freeBigInts(_sigValue_183, 1);
|
|
ctx->freeBigInts(_tmp_156, 1);
|
|
ctx->freeBigInts(_sigValue_184, 1);
|
|
ctx->freeBigInts(_tmp_157, 1);
|
|
ctx->freeBigInts(_sigValue_185, 1);
|
|
ctx->freeBigInts(_tmp_158, 1);
|
|
ctx->freeBigInts(_sigValue_186, 1);
|
|
ctx->freeBigInts(_tmp_159, 1);
|
|
ctx->freeBigInts(_sigValue_187, 1);
|
|
ctx->freeBigInts(_tmp_160, 1);
|
|
ctx->freeBigInts(_sigValue_188, 1);
|
|
ctx->freeBigInts(_tmp_161, 1);
|
|
ctx->freeBigInts(_sigValue_189, 1);
|
|
ctx->freeBigInts(_tmp_162, 1);
|
|
ctx->freeBigInts(_sigValue_190, 1);
|
|
ctx->freeBigInts(_sigValue_191, 1);
|
|
ctx->freeBigInts(_tmp_163, 1);
|
|
ctx->freeBigInts(_sigValue_192, 1);
|
|
ctx->freeBigInts(_tmp_164, 1);
|
|
ctx->freeBigInts(_sigValue_193, 1);
|
|
ctx->freeBigInts(_tmp_165, 1);
|
|
ctx->freeBigInts(_sigValue_194, 1);
|
|
ctx->freeBigInts(_tmp_166, 1);
|
|
ctx->freeBigInts(_sigValue_195, 1);
|
|
ctx->freeBigInts(_sigValue_196, 1);
|
|
ctx->freeBigInts(_tmp_167, 1);
|
|
ctx->freeBigInts(_sigValue_197, 1);
|
|
ctx->freeBigInts(_tmp_168, 1);
|
|
ctx->freeBigInts(_sigValue_198, 1);
|
|
ctx->freeBigInts(_tmp_169, 1);
|
|
ctx->freeBigInts(_sigValue_199, 1);
|
|
ctx->freeBigInts(_tmp_170, 1);
|
|
ctx->freeBigInts(_sigValue_200, 1);
|
|
ctx->freeBigInts(_sigValue_201, 1);
|
|
ctx->freeBigInts(_tmp_171, 1);
|
|
ctx->freeBigInts(_sigValue_202, 1);
|
|
ctx->freeBigInts(_tmp_172, 1);
|
|
ctx->freeBigInts(_sigValue_203, 1);
|
|
ctx->freeBigInts(_tmp_173, 1);
|
|
ctx->freeBigInts(_sigValue_204, 1);
|
|
ctx->freeBigInts(_tmp_174, 1);
|
|
ctx->freeBigInts(_sigValue_205, 1);
|
|
ctx->freeBigInts(_sigValue_206, 1);
|
|
ctx->freeBigInts(_tmp_175, 1);
|
|
ctx->freeBigInts(_sigValue_207, 1);
|
|
ctx->freeBigInts(_tmp_176, 1);
|
|
ctx->freeBigInts(_sigValue_208, 1);
|
|
ctx->freeBigInts(_sigValue_209, 1);
|
|
ctx->freeBigInts(_tmp_177, 1);
|
|
ctx->freeBigInts(_sigValue_210, 1);
|
|
ctx->freeBigInts(_tmp_178, 1);
|
|
ctx->freeBigInts(_sigValue_211, 1);
|
|
ctx->freeBigInts(_sigValue_212, 1);
|
|
ctx->freeBigInts(_tmp_179, 1);
|
|
ctx->freeBigInts(_sigValue_213, 1);
|
|
ctx->freeBigInts(_tmp_180, 1);
|
|
ctx->freeBigInts(_sigValue_214, 1);
|
|
ctx->freeBigInts(_sigValue_215, 1);
|
|
ctx->freeBigInts(_sigValue_216, 1);
|
|
ctx->freeBigInts(_tmp_181, 1);
|
|
ctx->freeBigInts(_sigValue_217, 1);
|
|
ctx->freeBigInts(_tmp_182, 1);
|
|
ctx->freeBigInts(_sigValue_218, 1);
|
|
ctx->freeBigInts(_tmp_183, 1);
|
|
ctx->freeBigInts(_sigValue_219, 1);
|
|
ctx->freeBigInts(_tmp_184, 1);
|
|
ctx->freeBigInts(_sigValue_220, 1);
|
|
ctx->freeBigInts(_tmp_185, 1);
|
|
ctx->freeBigInts(_sigValue_221, 1);
|
|
ctx->freeBigInts(_tmp_186, 1);
|
|
ctx->freeBigInts(_sigValue_222, 1);
|
|
ctx->freeBigInts(_tmp_187, 1);
|
|
ctx->freeBigInts(_sigValue_223, 1);
|
|
ctx->freeBigInts(_tmp_188, 1);
|
|
ctx->freeBigInts(_sigValue_224, 1);
|
|
ctx->freeBigInts(_sigValue_225, 1);
|
|
ctx->freeBigInts(_tmp_189, 1);
|
|
ctx->freeBigInts(_sigValue_226, 1);
|
|
ctx->freeBigInts(_tmp_190, 1);
|
|
ctx->freeBigInts(_sigValue_227, 1);
|
|
ctx->freeBigInts(_tmp_191, 1);
|
|
ctx->freeBigInts(_sigValue_228, 1);
|
|
ctx->freeBigInts(_tmp_192, 1);
|
|
ctx->freeBigInts(_sigValue_229, 1);
|
|
ctx->freeBigInts(_tmp_193, 1);
|
|
ctx->freeBigInts(_sigValue_230, 1);
|
|
ctx->freeBigInts(_tmp_194, 1);
|
|
ctx->freeBigInts(_sigValue_231, 1);
|
|
ctx->freeBigInts(_tmp_195, 1);
|
|
ctx->freeBigInts(_tmp_196, 1);
|
|
ctx->freeBigInts(_tmp_197, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_198, 1);
|
|
}
|
|
|
|
/*
|
|
BabyAdd
|
|
*/
|
|
void BabyAdd_4d10bd4b8f5eb590(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _sigIdx;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
int _sigIdx_1;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _tmp = ctx->allocBigInts(1);
|
|
int _sigIdx_2;
|
|
int _sigIdx_3;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _sigIdx_4;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_1 = ctx->allocBigInts(1);
|
|
int _sigIdx_5;
|
|
int _sigIdx_6;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "21888242871839275222246405745257275088548364400416034343698204186575808326917", 10);
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
int _sigIdx_7;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
int _sigIdx_8;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_9;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_10;
|
|
int _sigIdx_11;
|
|
PBigInt _sigValue_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_12;
|
|
PBigInt _sigValue_9 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_13;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_10 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
PBigInt _sigValue_11 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_8 = ctx->allocBigInts(1);
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_12 = ctx->allocBigInts(1);
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "168696", 10);
|
|
PBigInt _tmp_9 = ctx->allocBigInts(1);
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "1", 10);
|
|
PBigInt _tmp_10 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_11 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
int _sigIdx_18;
|
|
PBigInt _sigValue_13 = ctx->allocBigInts(1);
|
|
PBigInt _const_3;
|
|
_const_3 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_3[0], "168696", 10);
|
|
PBigInt _tmp_12 = ctx->allocBigInts(1);
|
|
PBigInt _const_4;
|
|
_const_4 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_4[0], "1", 10);
|
|
PBigInt _tmp_13 = ctx->allocBigInts(1);
|
|
int _sigIdx_19;
|
|
PBigInt _sigValue_14 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_14 = ctx->allocBigInts(1);
|
|
int _sigIdx_20;
|
|
PBigInt _sigValue_15 = ctx->allocBigInts(1);
|
|
int _sigIdx_21;
|
|
PBigInt _sigValue_16 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_15 = ctx->allocBigInts(1);
|
|
int _sigIdx_22;
|
|
PBigInt _sigValue_17 = ctx->allocBigInts(1);
|
|
int _sigIdx_23;
|
|
PBigInt _sigValue_18 = ctx->allocBigInts(1);
|
|
PBigInt _const_5;
|
|
_const_5 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_5[0], "168700", 10);
|
|
PBigInt _tmp_16 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_17 = ctx->allocBigInts(1);
|
|
int _sigIdx_24;
|
|
PBigInt _sigValue_19 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_18 = ctx->allocBigInts(1);
|
|
int _sigIdx_25;
|
|
PBigInt _sigValue_20 = ctx->allocBigInts(1);
|
|
PBigInt _const_6;
|
|
_const_6 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_6[0], "168696", 10);
|
|
PBigInt _tmp_19 = ctx->allocBigInts(1);
|
|
PBigInt _const_7;
|
|
_const_7 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_7[0], "1", 10);
|
|
PBigInt _tmp_20 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_21 = ctx->allocBigInts(1);
|
|
int _sigIdx_26;
|
|
int _sigIdx_27;
|
|
PBigInt _sigValue_21 = ctx->allocBigInts(1);
|
|
PBigInt _const_8;
|
|
_const_8 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_8[0], "168696", 10);
|
|
PBigInt _tmp_22 = ctx->allocBigInts(1);
|
|
PBigInt _const_9;
|
|
_const_9 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_9[0], "1", 10);
|
|
PBigInt _tmp_23 = ctx->allocBigInts(1);
|
|
int _sigIdx_28;
|
|
PBigInt _sigValue_22 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_24 = ctx->allocBigInts(1);
|
|
int _sigIdx_29;
|
|
PBigInt _sigValue_23 = ctx->allocBigInts(1);
|
|
int _sigIdx_30;
|
|
PBigInt _sigValue_24 = ctx->allocBigInts(1);
|
|
PBigInt _const_10;
|
|
_const_10 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_10[0], "168700", 10);
|
|
PBigInt _tmp_25 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_26 = ctx->allocBigInts(1);
|
|
int _sigIdx_31;
|
|
PBigInt _sigValue_25 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_27 = ctx->allocBigInts(1);
|
|
|
|
|
|
/* signal input x1 */
|
|
|
|
/* signal input y1 */
|
|
|
|
/* signal input x2 */
|
|
|
|
/* signal input y2 */
|
|
|
|
/* signal output xout */
|
|
|
|
/* signal output yout */
|
|
|
|
/* signal beta */
|
|
|
|
/* signal gamma */
|
|
|
|
/* signal delta */
|
|
|
|
/* signal tau */
|
|
|
|
/* var a = 168700 */
|
|
|
|
/* var d = 168696 */
|
|
|
|
/* beta <== x1*y2 */
|
|
_sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue);
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue_1);
|
|
ctx->field->mul(_tmp,_sigValue,_sigValue_1);
|
|
_sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp);
|
|
|
|
/* gamma <== y1*x2 */
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2);
|
|
_sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_4, _sigValue_3);
|
|
ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3);
|
|
_sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1);
|
|
|
|
/* delta <== (-a*x1+y1)*(x2 + y2) */
|
|
_sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_6, _sigValue_4);
|
|
ctx->field->mul(_tmp_3,_const,_sigValue_4);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5);
|
|
ctx->field->add(_tmp_4,_tmp_3,_sigValue_5);
|
|
_sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_8, _sigValue_6);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7);
|
|
ctx->field->add(_tmp_5,_sigValue_6,_sigValue_7);
|
|
ctx->field->mul(_tmp_6,_tmp_4,_tmp_5);
|
|
_sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_10, _tmp_6);
|
|
|
|
/* tau <== beta * gamma */
|
|
_sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_8);
|
|
_sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_9);
|
|
ctx->field->mul(_tmp_7,_sigValue_8,_sigValue_9);
|
|
_sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_13, _tmp_7);
|
|
|
|
/* xout <-- (beta + gamma) / (1+ d*tau) */
|
|
_sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_14, _sigValue_10);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_11);
|
|
ctx->field->add(_tmp_8,_sigValue_10,_sigValue_11);
|
|
_sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_16, _sigValue_12);
|
|
ctx->field->mul(_tmp_9,_const_1,_sigValue_12);
|
|
ctx->field->add(_tmp_10,_const_2,_tmp_9);
|
|
ctx->field->div(_tmp_11,_tmp_8,_tmp_10);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_17, _tmp_11);
|
|
|
|
/* (1+ d*tau) * xout === (beta + gamma) */
|
|
_sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_18, _sigValue_13);
|
|
ctx->field->mul(_tmp_12,_const_3,_sigValue_13);
|
|
ctx->field->add(_tmp_13,_const_4,_tmp_12);
|
|
_sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_19, _sigValue_14);
|
|
ctx->field->mul(_tmp_14,_tmp_13,_sigValue_14);
|
|
_sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_20, _sigValue_15);
|
|
_sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_21, _sigValue_16);
|
|
ctx->field->add(_tmp_15,_sigValue_15,_sigValue_16);
|
|
ctx->checkConstraint(_tmp_14, _tmp_15, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:45:4");
|
|
/* yout <-- (delta + a*beta - gamma) / (1-d*tau) */
|
|
_sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_22, _sigValue_17);
|
|
_sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_23, _sigValue_18);
|
|
ctx->field->mul(_tmp_16,_const_5,_sigValue_18);
|
|
ctx->field->add(_tmp_17,_sigValue_17,_tmp_16);
|
|
_sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_24, _sigValue_19);
|
|
ctx->field->sub(_tmp_18,_tmp_17,_sigValue_19);
|
|
_sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_25, _sigValue_20);
|
|
ctx->field->mul(_tmp_19,_const_6,_sigValue_20);
|
|
ctx->field->sub(_tmp_20,_const_7,_tmp_19);
|
|
ctx->field->div(_tmp_21,_tmp_18,_tmp_20);
|
|
_sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->setSignal(ctx->cIdx, _sigIdx_26, _tmp_21);
|
|
|
|
/* (1-d*tau)*yout === (delta + a*beta - gamma) */
|
|
_sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_27, _sigValue_21);
|
|
ctx->field->mul(_tmp_22,_const_8,_sigValue_21);
|
|
ctx->field->sub(_tmp_23,_const_9,_tmp_22);
|
|
_sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_22);
|
|
ctx->field->mul(_tmp_24,_tmp_23,_sigValue_22);
|
|
_sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_29, _sigValue_23);
|
|
_sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_30, _sigValue_24);
|
|
ctx->field->mul(_tmp_25,_const_10,_sigValue_24);
|
|
ctx->field->add(_tmp_26,_sigValue_23,_tmp_25);
|
|
_sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_31, _sigValue_25);
|
|
ctx->field->sub(_tmp_27,_tmp_26,_sigValue_25);
|
|
ctx->checkConstraint(_tmp_24, _tmp_27, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:48:4");
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_tmp_1, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_sigValue_8, 1);
|
|
ctx->freeBigInts(_sigValue_9, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_10, 1);
|
|
ctx->freeBigInts(_sigValue_11, 1);
|
|
ctx->freeBigInts(_tmp_8, 1);
|
|
ctx->freeBigInts(_sigValue_12, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_9, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_10, 1);
|
|
ctx->freeBigInts(_tmp_11, 1);
|
|
ctx->freeBigInts(_sigValue_13, 1);
|
|
ctx->freeBigInts(_const_3, 1);
|
|
ctx->freeBigInts(_tmp_12, 1);
|
|
ctx->freeBigInts(_const_4, 1);
|
|
ctx->freeBigInts(_tmp_13, 1);
|
|
ctx->freeBigInts(_sigValue_14, 1);
|
|
ctx->freeBigInts(_tmp_14, 1);
|
|
ctx->freeBigInts(_sigValue_15, 1);
|
|
ctx->freeBigInts(_sigValue_16, 1);
|
|
ctx->freeBigInts(_tmp_15, 1);
|
|
ctx->freeBigInts(_sigValue_17, 1);
|
|
ctx->freeBigInts(_sigValue_18, 1);
|
|
ctx->freeBigInts(_const_5, 1);
|
|
ctx->freeBigInts(_tmp_16, 1);
|
|
ctx->freeBigInts(_tmp_17, 1);
|
|
ctx->freeBigInts(_sigValue_19, 1);
|
|
ctx->freeBigInts(_tmp_18, 1);
|
|
ctx->freeBigInts(_sigValue_20, 1);
|
|
ctx->freeBigInts(_const_6, 1);
|
|
ctx->freeBigInts(_tmp_19, 1);
|
|
ctx->freeBigInts(_const_7, 1);
|
|
ctx->freeBigInts(_tmp_20, 1);
|
|
ctx->freeBigInts(_tmp_21, 1);
|
|
ctx->freeBigInts(_sigValue_21, 1);
|
|
ctx->freeBigInts(_const_8, 1);
|
|
ctx->freeBigInts(_tmp_22, 1);
|
|
ctx->freeBigInts(_const_9, 1);
|
|
ctx->freeBigInts(_tmp_23, 1);
|
|
ctx->freeBigInts(_sigValue_22, 1);
|
|
ctx->freeBigInts(_tmp_24, 1);
|
|
ctx->freeBigInts(_sigValue_23, 1);
|
|
ctx->freeBigInts(_sigValue_24, 1);
|
|
ctx->freeBigInts(_const_10, 1);
|
|
ctx->freeBigInts(_tmp_25, 1);
|
|
ctx->freeBigInts(_tmp_26, 1);
|
|
ctx->freeBigInts(_sigValue_25, 1);
|
|
ctx->freeBigInts(_tmp_27, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=0
|
|
*/
|
|
void EscalarMulWindow_c58c15588b83ea88(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "2671756056509184035029146175565761955751135805354291559563293617232983272177", 10);
|
|
mpz_set_str(table[3], "2663205510731142763556352975002641716101654201788071096152948830924149045094", 10);
|
|
mpz_set_str(table[4], "21061849532035604199835446647463213287644222029065034749734651703816665561936", 10);
|
|
mpz_set_str(table[5], "10590233619556693821464000850700822860334161666884611627447818867434809995703", 10);
|
|
mpz_set_str(table[6], "20317648563765902174667075232032560370309215640559693287156736658161704424594", 10);
|
|
mpz_set_str(table[7], "21013647718336911519764140024913157479577493715202328677986614600884911794491", 10);
|
|
mpz_set_str(table[8], "14478206612680015666001373583501139293983486047137949145191530060944286683521", 10);
|
|
mpz_set_str(table[9], "10123863954505892803935721758442873472294119246957893940443040317515579486726", 10);
|
|
mpz_set_str(table[10], "17533772573527889246527547392489694739099032758079124639632822701511575877562", 10);
|
|
mpz_set_str(table[11], "10485946492182283858299804441446054924473212259565210991291733992330817035622", 10);
|
|
mpz_set_str(table[12], "10691945132484551239590811899222374800071270413484981694447010851744275692492", 10);
|
|
mpz_set_str(table[13], "17017220761087367377437872599437857226988338675941324372991530149189226041639", 10);
|
|
mpz_set_str(table[14], "11512305266119483002967267541281378583475563590412603361589692706428762942919", 10);
|
|
mpz_set_str(table[15], "17701998960898923168769796194904256588134759210821296842657572359646247369904", 10);
|
|
mpz_set_str(table[16], "14748579267318245095313355470697847753165312291616751728218498300852858576240", 10);
|
|
mpz_set_str(table[17], "12348105919434692489761959759489837184429607773008554537644575195064773395599", 10);
|
|
mpz_set_str(table[18], "20627209280839605123458262072710281132770262871506070816948130741226736752378", 10);
|
|
mpz_set_str(table[19], "19774165882217531119739800793352824781327668198019718066011577860282902125243", 10);
|
|
mpz_set_str(table[20], "13138473324145907025806656975321736895998099375896328736232314856705580868417", 10);
|
|
mpz_set_str(table[21], "11161378845903559652998558387712808648701614065229446679904118706678977704673", 10);
|
|
mpz_set_str(table[22], "4783703548184459946824339914087560705114529464571510440857756065249448387111", 10);
|
|
mpz_set_str(table[23], "17372228386106645746052050627097719626888756085069034782717276260887316255101", 10);
|
|
mpz_set_str(table[24], "14047413995832988517702590877959433912209562292767914010963039996558229040933", 10);
|
|
mpz_set_str(table[25], "15371248093363251128008345015380390264962889173415460722202760022337670229170", 10);
|
|
mpz_set_str(table[26], "14909468781625592758256535742632378596186891695566342467657803191467264544669", 10);
|
|
mpz_set_str(table[27], "3548853310819272883077126647158239434842415848621355976908519691315221761647", 10);
|
|
mpz_set_str(table[28], "4549037862652931337968683807757208928887981760400435154359412727518098339337", 10);
|
|
mpz_set_str(table[29], "9570397906664064215145622756617417040436100343051281135720852571956974557834", 10);
|
|
mpz_set_str(table[30], "15639545649252730533429378371400422015088795179548877158373407950802419394172", 10);
|
|
mpz_set_str(table[31], "10862252642237447003556041796754771236159124858390445391230106925080927464385", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=1
|
|
*/
|
|
void EscalarMulWindow_c58c16588b83ec3b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "19455639892203982161904065887827858143789210199458192045947095791879563002868", 10);
|
|
mpz_set_str(table[3], "5728209579115735160253096048399417829610899048655747609318106071850801912321", 10);
|
|
mpz_set_str(table[4], "18686111957603690142897163935624451798199750214413650410111676285463855030329", 10);
|
|
mpz_set_str(table[5], "19323810151487654006030918772798553609636456219633670253832750591762532092432", 10);
|
|
mpz_set_str(table[6], "706228624705042566868137974354817500023047387261009322012026511666994805696", 10);
|
|
mpz_set_str(table[7], "12718753489108893940617839864580563828565238915991990901201774215604335348934", 10);
|
|
mpz_set_str(table[8], "219027113030251483556148462862945817714391143716517443418769250867495969997", 10);
|
|
mpz_set_str(table[9], "16962394730098992742840890875321417988868456101920458125612662972429881454408", 10);
|
|
mpz_set_str(table[10], "13016826415290691919553731757976770379671939718956443199809356095112004579699", 10);
|
|
mpz_set_str(table[11], "1359466613565304654749319254848103402738704679493312522734974950562290665325", 10);
|
|
mpz_set_str(table[12], "5140095991777712156655118225691596094097957392214510343203353723912782997132", 10);
|
|
mpz_set_str(table[13], "3987059370913932243425052982430684796273382748549604198559328872438757141590", 10);
|
|
mpz_set_str(table[14], "2283566044616545281776255683217251843611107557577469795054423579012635869675", 10);
|
|
mpz_set_str(table[15], "70264709290222483776098951810282562276044890574113774620457455075794591312", 10);
|
|
mpz_set_str(table[16], "16555314855491486874438631352543335040340030241816507059736477310745154472640", 10);
|
|
mpz_set_str(table[17], "19382928900222393377473659441126625670945163376073678194142983735634141916263", 10);
|
|
mpz_set_str(table[18], "8086092990754260566701029612135162344420167517529259360723765668718606900034", 10);
|
|
mpz_set_str(table[19], "16111606256110216805458928120918958525326838805009433283434999243360680375910", 10);
|
|
mpz_set_str(table[20], "18248481455996927337609181666090322265796817336713969037740875253880857812596", 10);
|
|
mpz_set_str(table[21], "3081229463882440249188163677994210271499208795907811910647944775042100707985", 10);
|
|
mpz_set_str(table[22], "5640279503961230459401276264741775148836142745649387394373819934366888926345", 10);
|
|
mpz_set_str(table[23], "15396724379836625238543402477270760289309088934474925981791699207401537515620", 10);
|
|
mpz_set_str(table[24], "8607722889528498400823478295882721091737905572460707006751171159342906843742", 10);
|
|
mpz_set_str(table[25], "21466865367587905325003930902912047106650665927536036768946340342192655382096", 10);
|
|
mpz_set_str(table[26], "4854500387999538816548985530147382852450171939158774084937784863757011025279", 10);
|
|
mpz_set_str(table[27], "10310501313371743938750396948922110166818977458931556811646942602928314527040", 10);
|
|
mpz_set_str(table[28], "14604549082165157031789965675930596799936491131656743459412745484005719211110", 10);
|
|
mpz_set_str(table[29], "1339979265112341323491906777046183714637158038283904900091428409914103298899", 10);
|
|
mpz_set_str(table[30], "4792538761263689650036234468785937904696616586598070710846239025949758471218", 10);
|
|
mpz_set_str(table[31], "12711691658268437920239413698528095261450592977303563540981382180495087939658", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=2
|
|
*/
|
|
void EscalarMulWindow_c58c17588b83edee(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9446005552421437632171670368411141852950491030316681294022758941762353691302", 10);
|
|
mpz_set_str(table[3], "2659082391675250564706486650259869870961386176207643658467710396489318334239", 10);
|
|
mpz_set_str(table[4], "3567776678731498205360741700177218786645604816296171311351827198380504470091", 10);
|
|
mpz_set_str(table[5], "8566560682186698983919280572805734023394051348324032030872146310266738697218", 10);
|
|
mpz_set_str(table[6], "258911588087935750556942942400031114216937370209695211046780804829949135511", 10);
|
|
mpz_set_str(table[7], "14300986411385662963053584650495461488028522919951330498240837785458712915934", 10);
|
|
mpz_set_str(table[8], "15564738851955513773493711440024193357909300986464999380286348490264230670386", 10);
|
|
mpz_set_str(table[9], "5965579401397693974925033270864680183364822636666363235432562636579089978930", 10);
|
|
mpz_set_str(table[10], "7657407311087419164589122153471097548039283075908805789298656400236333314321", 10);
|
|
mpz_set_str(table[11], "9545803729989116516909189980406185940534435535160487234366655346494995944031", 10);
|
|
mpz_set_str(table[12], "8904879112878954266045205312892118060926220046935092572749733631753765966133", 10);
|
|
mpz_set_str(table[13], "5397942272759262673541954303471790981432054904879506655872748899940928743848", 10);
|
|
mpz_set_str(table[14], "16005405010959983253060935791915368839392689218364939430089223865098988491261", 10);
|
|
mpz_set_str(table[15], "12780906601762734568154860729143030086742693287996922377232618204399174262389", 10);
|
|
mpz_set_str(table[16], "6355113513875581014627558583581851782513034723503575831227260581989021260986", 10);
|
|
mpz_set_str(table[17], "19228898953773995361652944393706800625574665856608795952703625316607893036471", 10);
|
|
mpz_set_str(table[18], "13341589571471376591988824520667845474859907413843030067082319287114707148997", 10);
|
|
mpz_set_str(table[19], "11939769823730562198751801938985875475927535850886049883104757466206396080091", 10);
|
|
mpz_set_str(table[20], "16490585193629424755585755820029525210801181920131533025324423002003774108689", 10);
|
|
mpz_set_str(table[21], "13764187366310991388903774097630124543619255258828595613110964142183378786976", 10);
|
|
mpz_set_str(table[22], "8006315467798305079984157816179731973218311346019365349814756162269404722839", 10);
|
|
mpz_set_str(table[23], "1605023994361242947668016322130262544864224794817220524339289545125698624339", 10);
|
|
mpz_set_str(table[24], "9530959617474658142363905231723417839467126504682984204053041372375877710848", 10);
|
|
mpz_set_str(table[25], "16118223422123893792488680167063782747373990466155676430595485511134433349476", 10);
|
|
mpz_set_str(table[26], "2865399069098153375767726449428261452275209590690129835321747816113392404504", 10);
|
|
mpz_set_str(table[27], "8928564173378216588030433107324122575827378299963147498101157041063618300439", 10);
|
|
mpz_set_str(table[28], "10339017142837648466886820897040099586220256711351150134165915735328557576324", 10);
|
|
mpz_set_str(table[29], "6596585013208715469387108496234424289676462443093059959055359882641385749585", 10);
|
|
mpz_set_str(table[30], "14825605545088609252050521210594268465512765862272571308204873997578798474325", 10);
|
|
mpz_set_str(table[31], "12187805937843977377971909266679659960602587881013889583696693031688772786111", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=3
|
|
*/
|
|
void EscalarMulWindow_c58c18588b83efa1(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8150092786527816117187776982124415533909397268460948027014784329744581130055", 10);
|
|
mpz_set_str(table[3], "9518404959558566461656628035698053553320470917559935829024277026442632056374", 10);
|
|
mpz_set_str(table[4], "19557512886391178973040556919290088965905391130848997966415180460989529314240", 10);
|
|
mpz_set_str(table[5], "13180631977306207642756209240118576579994394123759676161103836152880322549063", 10);
|
|
mpz_set_str(table[6], "19477474816043793545117155715097546600589596961654549537557057126397214129618", 10);
|
|
mpz_set_str(table[7], "8777943635232350965989221427258224047780458468881792910136531538587040893617", 10);
|
|
mpz_set_str(table[8], "12030196390222755730200134355747729718237637263992972457879893194696449174278", 10);
|
|
mpz_set_str(table[9], "17846471008363408645850734457538034601310377961363285443030130502052793125919", 10);
|
|
mpz_set_str(table[10], "4549527814713249266071034960306756526094528593868529547706421904603490190414", 10);
|
|
mpz_set_str(table[11], "3378272617647076909564417794520077205413646921985457795877389705928708328881", 10);
|
|
mpz_set_str(table[12], "5996432105003214217061307570202564768225021824385263349334268127523564597056", 10);
|
|
mpz_set_str(table[13], "7770619726190874830265312966887584714987914307242217484543218976822310113700", 10);
|
|
mpz_set_str(table[14], "1483679205901265195758427835974928922190981298819003793956998332436015765360", 10);
|
|
mpz_set_str(table[15], "3073341262968435807189266353884391706594011592475698977361871901736181092796", 10);
|
|
mpz_set_str(table[16], "10985704671102161346854146792047362123740315488132666227309860492960747383468", 10);
|
|
mpz_set_str(table[17], "5011814540563716381283896406542887602569134987549250765805611764631975504631", 10);
|
|
mpz_set_str(table[18], "9796417847389666106133741044999871704158698170778634927072967498096563971465", 10);
|
|
mpz_set_str(table[19], "7139881315939230237213038310613971673498303203772940185084463029730438207111", 10);
|
|
mpz_set_str(table[20], "3858790035360253599992673710272605999900361113229111656484083455737561764266", 10);
|
|
mpz_set_str(table[21], "18193594779659082118327670475682455165691956974006422261251303354759573985179", 10);
|
|
mpz_set_str(table[22], "15913395802415558156450090448958994836876094485178169297011671361802250846294", 10);
|
|
mpz_set_str(table[23], "6290954700813415583702420446892893724592386469368652831713294424023921328391", 10);
|
|
mpz_set_str(table[24], "12234154988449955295007801346911730456263810093685589990745736296694691331689", 10);
|
|
mpz_set_str(table[25], "4071619348865044242854337481102671518468245316509398317323413829676831184140", 10);
|
|
mpz_set_str(table[26], "18296970670987470541928352293945651926143113385337809319372379472353243645271", 10);
|
|
mpz_set_str(table[27], "4335070521515665236648391284184099626198223819230647317471408272758195314225", 10);
|
|
mpz_set_str(table[28], "7371225017789541274935253781835429956558085106989173971539756734534037636223", 10);
|
|
mpz_set_str(table[29], "16010871926200898046323835838781774961955270791100780009807204854105126992789", 10);
|
|
mpz_set_str(table[30], "16441281352077729865298617620287397671304532588403423939109136321565674518251", 10);
|
|
mpz_set_str(table[31], "3943334682388292137963538837370597916654690547563398341672467979005282708582", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=4
|
|
*/
|
|
void EscalarMulWindow_c58c19588b83f154(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3417806579160556134333813259460474815981119464296707667859014889696018752668", 10);
|
|
mpz_set_str(table[3], "18303530119038872491958068153679093932762993086624566840246755837399985722074", 10);
|
|
mpz_set_str(table[4], "1278722777077380932846071312495674428829103826635244088139534656779247221080", 10);
|
|
mpz_set_str(table[5], "4766813576924613894849782381099443235425062896697198995309921179968121988382", 10);
|
|
mpz_set_str(table[6], "21706560547471963408928734542577270786058777664821805388285584236309745036595", 10);
|
|
mpz_set_str(table[7], "19474420358542337323166829084757866210622349125481878856679236914789204554456", 10);
|
|
mpz_set_str(table[8], "16148777962245742753344807259751415019316024545781160256739350564573105618519", 10);
|
|
mpz_set_str(table[9], "13136915380084811164829570762824983872909448080088933584491857527036149129016", 10);
|
|
mpz_set_str(table[10], "13523320605698245999658794856573576592560865356495661132295347461850750329252", 10);
|
|
mpz_set_str(table[11], "16945934443961665381663271958175209640958642333272209699999019699882600368277", 10);
|
|
mpz_set_str(table[12], "20076159369861017393528816561212830413329240268304655238542677851614925369880", 10);
|
|
mpz_set_str(table[13], "19712144684855766330661628479389116499212293472268323254960610438656057236756", 10);
|
|
mpz_set_str(table[14], "17016301484294934920930205076531639302999426390692086365871738070055504226095", 10);
|
|
mpz_set_str(table[15], "13398371924924462007415512847441324485047078419293140459621970026684818296882", 10);
|
|
mpz_set_str(table[16], "19217525217547781067659519568214099648797785214583347559328549941353656852574", 10);
|
|
mpz_set_str(table[17], "2178082404318103957879941978677884675189740693774631385842865689786090982265", 10);
|
|
mpz_set_str(table[18], "15658612728463314899530508864952139121459571024126136259396145002568899460974", 10);
|
|
mpz_set_str(table[19], "18440614053011977886564579546481983730765315209862726547260461172138295387769", 10);
|
|
mpz_set_str(table[20], "18839244752907500590526601192991753266046853314501406690535890618462054339560", 10);
|
|
mpz_set_str(table[21], "10841318968708963276604972380526125897904867627368853645446154325238682572695", 10);
|
|
mpz_set_str(table[22], "20660736421097303468403672441762447742351266035660081190461881367659810884140", 10);
|
|
mpz_set_str(table[23], "9050275196723472554785339332181686124757733268343017160454836316985136474861", 10);
|
|
mpz_set_str(table[24], "20640074942511254836094073673277550508496065345652377346684872774744705553194", 10);
|
|
mpz_set_str(table[25], "8167234296839537558032690969949000222860801978663856658019195761607674902086", 10);
|
|
mpz_set_str(table[26], "1394942689707751005522748817749065157094525057684238600474139408310067123334", 10);
|
|
mpz_set_str(table[27], "10441944898740297097292400320919437470446758344635169492916298862720353642446", 10);
|
|
mpz_set_str(table[28], "15744618198993550727048455997859510978234635572593326504554282177598131883106", 10);
|
|
mpz_set_str(table[29], "10859554966742577506446219189812047764206433665977759405737438783611339614897", 10);
|
|
mpz_set_str(table[30], "14993305322415576880408281122582894662874043134537330316523606697439674338905", 10);
|
|
mpz_set_str(table[31], "1201099550761690530930370254368883330229857131132952162294279509850888593432", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=5
|
|
*/
|
|
void EscalarMulWindow_c58c1a588b83f307(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "13574041550626754575366066602333672761973100503047465467497309037302178242397", 10);
|
|
mpz_set_str(table[3], "19992524180043582397908710904281864534803688779981125908797255813631674839085", 10);
|
|
mpz_set_str(table[4], "4233278821061390511829933889266566610972903117154372446017957348055990808177", 10);
|
|
mpz_set_str(table[5], "5045259922158927676824318395562168462542291641505375801985274351573893106551", 10);
|
|
mpz_set_str(table[6], "16514342103887099746634946485715139122889733891075255727183720476971477249965", 10);
|
|
mpz_set_str(table[7], "8941892154166956580644653623322591610335064214261856454536520725502245404896", 10);
|
|
mpz_set_str(table[8], "187640030886842074568868794411316543881262478898014282086332526801593304561", 10);
|
|
mpz_set_str(table[9], "7353300810991449244645247513757041449213870871611661875317196811133530771377", 10);
|
|
mpz_set_str(table[10], "9035012071275405030113227508261398328675897139033940681663695733954625302633", 10);
|
|
mpz_set_str(table[11], "13994146853448139651844184964877279457606458646044220254646840214379104181616", 10);
|
|
mpz_set_str(table[12], "10056493999583946229755037153761492391057729831323133475063291955099443866427", 10);
|
|
mpz_set_str(table[13], "17665730161408451108051039115010176092290627929105985845561186395902567388712", 10);
|
|
mpz_set_str(table[14], "4984009842947563263845614070467543138668350217322828972470105767837626797905", 10);
|
|
mpz_set_str(table[15], "6666279057534804934632346478442039345840959420838158257904518468325188099048", 10);
|
|
mpz_set_str(table[16], "16667717833601441596497020218451346232900287361473307554125507497294302221125", 10);
|
|
mpz_set_str(table[17], "4299190798223000045100922324845313965612727298585835155326418127263167430446", 10);
|
|
mpz_set_str(table[18], "8963999402585305736134178842989471983204848885881140435965840852298428910979", 10);
|
|
mpz_set_str(table[19], "15195888441457465364169687194530930837418845100802253190463719389850135837997", 10);
|
|
mpz_set_str(table[20], "21019300571349511718902277781053887653229961974932304986282542770263430207678", 10);
|
|
mpz_set_str(table[21], "15913614265219129518097086214455721058544292837089029054840324473554057262891", 10);
|
|
mpz_set_str(table[22], "2457286044316427442609379624657309589484096804612134196540071711219220641249", 10);
|
|
mpz_set_str(table[23], "13952791732012830625717758607733331162866966608885517470676907036767142639134", 10);
|
|
mpz_set_str(table[24], "14169902924456573990005873884160956219559738432450143453558722645043316468575", 10);
|
|
mpz_set_str(table[25], "16516874647228823808201476919779146507700305046953995102714068022782496874651", 10);
|
|
mpz_set_str(table[26], "10179980925318753964222549921492314309924887331948014358420810323581002555886", 10);
|
|
mpz_set_str(table[27], "18619066094028827185374111955005952707817917611725674290260026457865932605501", 10);
|
|
mpz_set_str(table[28], "7517604717861108228073885641035471467823508010054167193261226877877706805997", 10);
|
|
mpz_set_str(table[29], "15746667833056847894521939085540098519545058475593094497857665247104406848304", 10);
|
|
mpz_set_str(table[30], "7743850684229402724789741766630601562127324427592054959511324901026542794431", 10);
|
|
mpz_set_str(table[31], "21555586625526756660000084359038381415932637176256224834915467932769687133109", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=6
|
|
*/
|
|
void EscalarMulWindow_c58c1b588b83f4ba(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1367171927688033792937127342794885269658852023132799321225490157407070058762", 10);
|
|
mpz_set_str(table[3], "797200664327279789045585739586663179139763885691838560812393575802708162210", 10);
|
|
mpz_set_str(table[4], "2478479560900352699371773841963371661968085221354896581327612976097409624779", 10);
|
|
mpz_set_str(table[5], "19405286850126667179254174032091736212470292728059670084127403462846282788337", 10);
|
|
mpz_set_str(table[6], "5101779653541371224858788909925955904602739867751223498034053147664336395754", 10);
|
|
mpz_set_str(table[7], "10700110326771927853267714729731410941323958176927369499403923181315197852793", 10);
|
|
mpz_set_str(table[8], "6275321396272730090068884048459793259314026105989234293426165306003526311238", 10);
|
|
mpz_set_str(table[9], "10104549563133875423098894908570292894031875862857669179469491475855970626947", 10);
|
|
mpz_set_str(table[10], "18404244673240535460123268667169151035025048307794045575775213931077195145927", 10);
|
|
mpz_set_str(table[11], "8942784120151170167258939582572713521929039913753173983443996335737334980793", 10);
|
|
mpz_set_str(table[12], "4633483970547986365421327573054512933974141132760370864999650733086727768046", 10);
|
|
mpz_set_str(table[13], "9009730381790998742974182210001757950733454364587917243775636889747248972669", 10);
|
|
mpz_set_str(table[14], "7427360474163682348250173216816459370976459844143942567461741671948983362324", 10);
|
|
mpz_set_str(table[15], "18292799227385845925065461501189831239438442153343390063672864695602681736061", 10);
|
|
mpz_set_str(table[16], "14735664295925425221836761558674417704288144909360086121117360031860648586455", 10);
|
|
mpz_set_str(table[17], "18583606781988182037907490788308543648320079488581187869129307115022237334457", 10);
|
|
mpz_set_str(table[18], "12777678658925273973088387672940003952177723245694982962883356178316669212477", 10);
|
|
mpz_set_str(table[19], "5637312524523844945891969570765162593622794984416453233025931986985055827403", 10);
|
|
mpz_set_str(table[20], "9909486993958827185874771452543608292613144284873568526308659168095275673839", 10);
|
|
mpz_set_str(table[21], "9146983406389853436947576030254304482941905831952725248818877535684037646252", 10);
|
|
mpz_set_str(table[22], "19518092185752236311600027606949648172471133805621571199346732302580806609743", 10);
|
|
mpz_set_str(table[23], "9957876950026238308820319993187500420108611978781999596543765876983596907717", 10);
|
|
mpz_set_str(table[24], "1219286442043354058918010512542170951521811645460214828620748367885333639674", 10);
|
|
mpz_set_str(table[25], "19010914730213639558002623321779179581169503231078267225511409880999166854901", 10);
|
|
mpz_set_str(table[26], "513617967041559823154990639715417273537517756000051673345628667515198596466", 10);
|
|
mpz_set_str(table[27], "14627318016218467117296969564922426676122099051204886899742020066199527336638", 10);
|
|
mpz_set_str(table[28], "11403478616988372783401449997899314606994937244150566743376931324910640767209", 10);
|
|
mpz_set_str(table[29], "18993527257154634672661225032978403670982575920564062169783950865712754487884", 10);
|
|
mpz_set_str(table[30], "3577787637458093032841629227658969520749575787783500762540350520200389396561", 10);
|
|
mpz_set_str(table[31], "12026429520295952764028678521473341883884595153451914417062786396630616624903", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=7
|
|
*/
|
|
void EscalarMulWindow_c58c1c588b83f66d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3891238125689641083272054181451614235275442105730548223613703336053411960865", 10);
|
|
mpz_set_str(table[3], "1125798325584321554932117473264029905222269191303956186177915922848902449348", 10);
|
|
mpz_set_str(table[4], "18811314629583795450754550686819618506290688999032429460272886547355937594481", 10);
|
|
mpz_set_str(table[5], "743641611598619956892447583450279820853245112907864405949546266867991326681", 10);
|
|
mpz_set_str(table[6], "12674152987647317357436660497983601407934717000635208894246881682115059668783", 10);
|
|
mpz_set_str(table[7], "2731948519743128208962958548689526928107880809867169522069976629557266668316", 10);
|
|
mpz_set_str(table[8], "16482585878862398274255960964747228154725962554340646286442608159132111601461", 10);
|
|
mpz_set_str(table[9], "10772569820317817912940492332785796901432704643787646542813732044816613647988", 10);
|
|
mpz_set_str(table[10], "19213557489668634334139961814145734637881760588652395528769218657969561599430", 10);
|
|
mpz_set_str(table[11], "881665067430045320157242108536278827467731062742216537739787616061088604889", 10);
|
|
mpz_set_str(table[12], "8022420069346311072459275620939960934916745476310726896902030927312544370881", 10);
|
|
mpz_set_str(table[13], "1992221994912378784099877897662499880225735965017625625596438124785556522682", 10);
|
|
mpz_set_str(table[14], "9579197648093147990435619190051486232957889723473619421160487253349907681737", 10);
|
|
mpz_set_str(table[15], "17433951758159373070687378937146442646797615686152061312185795302324714837213", 10);
|
|
mpz_set_str(table[16], "7553501597476906893943769622683919576692323300102412267724272556166167390078", 10);
|
|
mpz_set_str(table[17], "14213085830959259156631217046380055056105366441190083587202646276745163396882", 10);
|
|
mpz_set_str(table[18], "6979529573172107993295430043924649442626597164366924448699038753432119095939", 10);
|
|
mpz_set_str(table[19], "19365865479772050250197257972579267029089957043096488813131500904045878621210", 10);
|
|
mpz_set_str(table[20], "20925131749182228854581359557993279979655416083047024798331982593689456949197", 10);
|
|
mpz_set_str(table[21], "628995645007569592184402778913304900211149232540769166783874341020026208953", 10);
|
|
mpz_set_str(table[22], "17604242730180055507332535312674958511227580885260714928678244677719349589005", 10);
|
|
mpz_set_str(table[23], "2574984066471136101998448855653371872700738183778305596173970377799619795701", 10);
|
|
mpz_set_str(table[24], "20831534721817566186990444281074518162298405326364930135929253022007977768980", 10);
|
|
mpz_set_str(table[25], "7689350931531565801873219872319436570642719761656167748947907769850519053938", 10);
|
|
mpz_set_str(table[26], "18613508951623748297992761400272086480834541050963364751960748269136052300213", 10);
|
|
mpz_set_str(table[27], "8254170720289236606417785739253419008714856210428738112401503829897048265561", 10);
|
|
mpz_set_str(table[28], "517738969825127850907339493958915189443963544613620013410488427321685508446", 10);
|
|
mpz_set_str(table[29], "10370448260708554237391268061399697566385114319122080384420492198387291165447", 10);
|
|
mpz_set_str(table[30], "2076232869116281317249840903513496619429855165491949853324719270169302893646", 10);
|
|
mpz_set_str(table[31], "14472244621101046483773531028403346444711843306763568805526784629539214435895", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=8
|
|
*/
|
|
void EscalarMulWindow_c58c0d588b83dcf0(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8231156569464835406105509955023398166583563145140077214061588271089883186724", 10);
|
|
mpz_set_str(table[3], "4131559530122773333148950856493472988410947362284455542714720636875440611709", 10);
|
|
mpz_set_str(table[4], "4222320340710021220635087605434545057931931608869700256351360614476775187130", 10);
|
|
mpz_set_str(table[5], "14891625252913543700728395232972502335864501199802412742215658789488258063649", 10);
|
|
mpz_set_str(table[6], "1646455484262666516106813873103835882048340923205939732254987444947610808767", 10);
|
|
mpz_set_str(table[7], "9286252187272588230151612370954491032363682998240982552859376165533701208989", 10);
|
|
mpz_set_str(table[8], "7557814199980749065003261053473663978667771976955446302398943322123332421978", 10);
|
|
mpz_set_str(table[9], "16648723380483431056833262106171882793443194716361935878476180011966676846493", 10);
|
|
mpz_set_str(table[10], "16078747115019990102299206526736463185663781880481057561894251210897974738019", 10);
|
|
mpz_set_str(table[11], "17134923776801537028531921398273215271831000960700761228465194550135991063443", 10);
|
|
mpz_set_str(table[12], "15905365286702861801361159667210946044588171652081130043945932140372389814791", 10);
|
|
mpz_set_str(table[13], "19964296123418756982702962637911322624425532309870269116767261118099207919566", 10);
|
|
mpz_set_str(table[14], "6915366607654543142221457161670542993108683652514645755759560456632586150493", 10);
|
|
mpz_set_str(table[15], "2087846465560868958703916325478946971263933285651790233772293039497495902936", 10);
|
|
mpz_set_str(table[16], "6309377082500543956327385030496077809477197422635109868300311692183321725738", 10);
|
|
mpz_set_str(table[17], "5052698669200407156616317933289761324507423553046478403149081185734480934122", 10);
|
|
mpz_set_str(table[18], "6456122751549808126695922793720951492345761686251563930706806741318056833979", 10);
|
|
mpz_set_str(table[19], "6878739043111876705182750491460844497947386020177656507038316770255001250637", 10);
|
|
mpz_set_str(table[20], "7917307151338755976207128351426187088443406922987157133711392099880198657856", 10);
|
|
mpz_set_str(table[21], "18211873978366518156707561062393288287663250919693117404231604485688475921886", 10);
|
|
mpz_set_str(table[22], "1437402662452623373177033207654924876763958897638262849381063725387025038843", 10);
|
|
mpz_set_str(table[23], "13407872492018827434872326149982037883391571435859313293715271856141638795735", 10);
|
|
mpz_set_str(table[24], "9133674188366622502516686841396573731703876205389833786088490310840680578430", 10);
|
|
mpz_set_str(table[25], "10981702961553361033825179020366876816731745122481552196385533205621301133135", 10);
|
|
mpz_set_str(table[26], "20532474418676117775130188133095832624629144992872350926421446666621295945680", 10);
|
|
mpz_set_str(table[27], "15736874318734568974434385373061997380725219963467856048535897629617875058108", 10);
|
|
mpz_set_str(table[28], "15208431825461040341250408448403292980816360063058809663637843517769211407177", 10);
|
|
mpz_set_str(table[29], "50119157137458024594283940301095474534515525283008096722355131965567175660", 10);
|
|
mpz_set_str(table[30], "17785744879219433292693984240496519711163127823897332842028710747473969558571", 10);
|
|
mpz_set_str(table[31], "3057853011904607944579126163912257194811180316351743314958470454159142095921", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=9
|
|
*/
|
|
void EscalarMulWindow_c58c0e588b83dea3(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18617832170581036663417610659828058003481609984032545510203670434577085669785", 10);
|
|
mpz_set_str(table[3], "20412179687374163530786375779400207318219951740876146791634938465624957055314", 10);
|
|
mpz_set_str(table[4], "12457183533565642941886418128340642104667337040823610826843739438122849506047", 10);
|
|
mpz_set_str(table[5], "14850708549463353135142738287059857119694474270768096104468781998162967836263", 10);
|
|
mpz_set_str(table[6], "5758258007888214430724448822096874285894421081593125767887837305340558823825", 10);
|
|
mpz_set_str(table[7], "12908247414706452795675786267497089124657703798322216672101648812327464029693", 10);
|
|
mpz_set_str(table[8], "12628856576746666315953079387391323090098384251046226236462275503116598986451", 10);
|
|
mpz_set_str(table[9], "12436666347724549495679084191202020944109875496797887286001099997629377639308", 10);
|
|
mpz_set_str(table[10], "13330703629071735966906823755876917026077523563661193538535592320086189247375", 10);
|
|
mpz_set_str(table[11], "10055883878689392527641259079743647076204784376930036192101152887126596371664", 10);
|
|
mpz_set_str(table[12], "21164901024292654384455784364953343170171781144357866479228083243091567786986", 10);
|
|
mpz_set_str(table[13], "15390527040081147513512905468158231588131396033599486976144901799096996111254", 10);
|
|
mpz_set_str(table[14], "21016138860700529805263900864154479632703600969377068409301301813357046324250", 10);
|
|
mpz_set_str(table[15], "10435576735924395051973219477709356250113178418716359347303295486272229950478", 10);
|
|
mpz_set_str(table[16], "18462785813886428819263566993530862099109115137010424306990953442545591636078", 10);
|
|
mpz_set_str(table[17], "13288894132151667245986605906028822212827467714603251483730908037245184306685", 10);
|
|
mpz_set_str(table[18], "7570200057881871540479013925807761268012361481749735662055975628124204770367", 10);
|
|
mpz_set_str(table[19], "3268478569496605830559256289069469748930923010063009787217999466880442437844", 10);
|
|
mpz_set_str(table[20], "15280529358426874360284774896617245007977077787991294150845573308326676905676", 10);
|
|
mpz_set_str(table[21], "12054492305035346286835680080423869393656706210538153075463784179908512055594", 10);
|
|
mpz_set_str(table[22], "5681160944000792954586470007809034909456732483527540608380398161693837695779", 10);
|
|
mpz_set_str(table[23], "9135504547777922242451249559369889563405952621865490209792286266789592880104", 10);
|
|
mpz_set_str(table[24], "18519121082866482879961846300133818362939830820686482425546076262186819717393", 10);
|
|
mpz_set_str(table[25], "2354548588196348528742155546955212874093891220853928746813848261284580574574", 10);
|
|
mpz_set_str(table[26], "8678247297418326754073776545803169263543225312571792778715319400119072196922", 10);
|
|
mpz_set_str(table[27], "4441680220072976954875335846537049450334223858875460093405814007357649312568", 10);
|
|
mpz_set_str(table[28], "912266678453399837056794519055563566831096961430259403483239037834335836676", 10);
|
|
mpz_set_str(table[29], "3397107365521793004590603449858579536151451686084973041055963447874748614384", 10);
|
|
mpz_set_str(table[30], "5046975788673094176954511868550759539640818278140040944232465268523113411229", 10);
|
|
mpz_set_str(table[31], "19615064900452383446866677839538530779671164591433827586846654479882935673365", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=10
|
|
*/
|
|
void EscalarMulWindow_30f60375112a16b1(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "7218657565857634059283342360952742183382712091400426268573442944107381443388", 10);
|
|
mpz_set_str(table[3], "17160582899498480071455831631422020028835133084533852397761379917276527593721", 10);
|
|
mpz_set_str(table[4], "10186244570061438572032553670437086437287778685519652947122178551823437117713", 10);
|
|
mpz_set_str(table[5], "13991166554227572878486140294474365469273307215968693498614051452443763358554", 10);
|
|
mpz_set_str(table[6], "5350247150685119384570754450340813183671336820647779863234393494486933893881", 10);
|
|
mpz_set_str(table[7], "15733596748455350315107945099742433290371037950694973328748835067823199767898", 10);
|
|
mpz_set_str(table[8], "8337043997288171710709237803954782951159399083385000361227705717164964485925", 10);
|
|
mpz_set_str(table[9], "16870774346853266168261613283603693357394011048308000490047350805761637643282", 10);
|
|
mpz_set_str(table[10], "7137567347873534899811081492389018173636809450246781575378682264607113176297", 10);
|
|
mpz_set_str(table[11], "2371417936628767926281866765754871389531406874608119179754496783903212169987", 10);
|
|
mpz_set_str(table[12], "15197773318265769940848787973289322540341609537038752342985384412674513817720", 10);
|
|
mpz_set_str(table[13], "17340538157558214432914624695631354955915974528460536507133956969002887728959", 10);
|
|
mpz_set_str(table[14], "10723613986484070217901591619417121152424090255436979566500942845532315427797", 10);
|
|
mpz_set_str(table[15], "3531934693678906083709954988801146753352878910237452898557849940021116433787", 10);
|
|
mpz_set_str(table[16], "1058387089158874495748679519782568945307296763857205104356187848251661479935", 10);
|
|
mpz_set_str(table[17], "10014229397537760594589890198451174632935240683470271014910895676463819881873", 10);
|
|
mpz_set_str(table[18], "7459717927874853609354812503791662414188719623157168180739348789619385438524", 10);
|
|
mpz_set_str(table[19], "21683041979439224411228989551115702832981449905206766043676732484497316157439", 10);
|
|
mpz_set_str(table[20], "14655609360270071012253902556539172560649588753054340131544939519506919896565", 10);
|
|
mpz_set_str(table[21], "17222448550262656329122931157454530350492495528298467166646184661229938452904", 10);
|
|
mpz_set_str(table[22], "5041330788509026145429442923080624984391916874029792901702390131473787867001", 10);
|
|
mpz_set_str(table[23], "2955018266698320912011470339888350168396459178178175328048428666813785486685", 10);
|
|
mpz_set_str(table[24], "19799683165647698954513082267828924865825875119027741571265592171834187183676", 10);
|
|
mpz_set_str(table[25], "21023373768363267061196142565244260500502466179273367870776987753388628420870", 10);
|
|
mpz_set_str(table[26], "8350728456894184592598529379116822425073724484756766289354946413301154463450", 10);
|
|
mpz_set_str(table[27], "20578523138976807775606576448739232605435191461454224553948643677354723328515", 10);
|
|
mpz_set_str(table[28], "3151098990900512741475971703578308604851523455076559790455859913596103381918", 10);
|
|
mpz_set_str(table[29], "11761276687160601334447629972918073325865398406897957184139044559005155413579", 10);
|
|
mpz_set_str(table[30], "18489117266543323541481847481109893515465557367865781971836580256104281213574", 10);
|
|
mpz_set_str(table[31], "19510496718399056064005926379365170446484654649297094653473858176478266416059", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=11
|
|
*/
|
|
void EscalarMulWindow_30f60275112a14fe(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "17627115594938429195179382336613067065701186383491157399068114303409652515793", 10);
|
|
mpz_set_str(table[3], "14847389619923894435264147753205007668091445330954217588844172431898288723621", 10);
|
|
mpz_set_str(table[4], "18357105556253046877119581308403465507755840292169012626540369212280146629667", 10);
|
|
mpz_set_str(table[5], "12873298841381326213408571031124043715255674465445800848009931156463734079321", 10);
|
|
mpz_set_str(table[6], "14786732146438618816915732831605352525406029376399822999821152429016038065677", 10);
|
|
mpz_set_str(table[7], "7079773868070731212606415423727377091003554975557211601330302646724734132376", 10);
|
|
mpz_set_str(table[8], "4888886172637015967702976141658643106565919889532813513702009241903659965207", 10);
|
|
mpz_set_str(table[9], "17378967528347060604558090883474747331154858402758301159996537758994815086458", 10);
|
|
mpz_set_str(table[10], "20380928417561340002494774785395409598013624894673626753616368263830338062811", 10);
|
|
mpz_set_str(table[11], "4736868222180854093784865266863657062019824867839134189830422539807722765945", 10);
|
|
mpz_set_str(table[12], "6580820316209959065322387305670736372550792870362511042627223737961611968914", 10);
|
|
mpz_set_str(table[13], "8257261394353062674744288141060131687298029842108282740770401366912586735943", 10);
|
|
mpz_set_str(table[14], "6900561257461657255157040380038967998478934897578378238634071444046012712054", 10);
|
|
mpz_set_str(table[15], "3680555849087316553388283566926794773690203220547228818016414082246349408632", 10);
|
|
mpz_set_str(table[16], "6416908667669098636758352477123500927705738914217575432735408147513377293392", 10);
|
|
mpz_set_str(table[17], "9416392961232970856511939022395117518514111997439749748360281904639088738986", 10);
|
|
mpz_set_str(table[18], "5410434850201564027053068952850382811960933426726367582054893626504615034377", 10);
|
|
mpz_set_str(table[19], "4161427134091166782127696715129650185185107565289262295394043751697945235880", 10);
|
|
mpz_set_str(table[20], "2334308851862124677679577811630033742864849289715909635581625548350969912802", 10);
|
|
mpz_set_str(table[21], "6746428787808162792042636218548957144920280607863310324940920677685166022224", 10);
|
|
mpz_set_str(table[22], "16260569633406738612759941010437852679549772937941191704089709198039998163438", 10);
|
|
mpz_set_str(table[23], "13354874821080404846358196384661515222642992404944068630010192146656138224873", 10);
|
|
mpz_set_str(table[24], "14462206154914760578439664376446416846437489597337142196010413746845742204026", 10);
|
|
mpz_set_str(table[25], "13954242650774425005389608614406636092810995935497563618610153627975097445182", 10);
|
|
mpz_set_str(table[26], "5550442138284530622830485810514012547942937088899737084528778977051454139340", 10);
|
|
mpz_set_str(table[27], "6145077197463223854394312952539513415328344246339224476191868207360214610551", 10);
|
|
mpz_set_str(table[28], "10389020547018608604495055393317288848540588962096958890414507604514920078931", 10);
|
|
mpz_set_str(table[29], "8694427405080668255454008609135263541121080294559982646928745463043868784680", 10);
|
|
mpz_set_str(table[30], "12985306307378847369862306598067349386942485263673681772149760278233795329419", 10);
|
|
mpz_set_str(table[31], "21073403027239980286155808830364120419256144147695551924288187918777638098919", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=12
|
|
*/
|
|
void EscalarMulWindow_30f60175112a134b(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "21406266100294308258976730729951177599093980942246378650460791540693708941131", 10);
|
|
mpz_set_str(table[3], "7877274652800816269238646347263909567184367388655766436924422252980333045618", 10);
|
|
mpz_set_str(table[4], "11615481393401268470059864848005403970571694721225362784042488749778235712658", 10);
|
|
mpz_set_str(table[5], "3892451240021972787440780523987872955074895528179412683730651568924376590154", 10);
|
|
mpz_set_str(table[6], "10670351770367089799432708606981514933281302266275209146614306323542227951265", 10);
|
|
mpz_set_str(table[7], "16151361929274094631406321569309492990971995061452371432314318111466035411800", 10);
|
|
mpz_set_str(table[8], "971553312833100069635523245967082040139883981750223719728956974999153461750", 10);
|
|
mpz_set_str(table[9], "17819503667076337826313198244543173919898460743554060676860603589596833585071", 10);
|
|
mpz_set_str(table[10], "3334076365622847096896176766506555070707332964911270163700099536790480657002", 10);
|
|
mpz_set_str(table[11], "10240153919253132783611893884618698140634837377586426667059076299895274629275", 10);
|
|
mpz_set_str(table[12], "1874472046851062748441454248258480987888540756207448372392045595157997967031", 10);
|
|
mpz_set_str(table[13], "12623749250356633203162621704515318615499408888863033335863097393105309137346", 10);
|
|
mpz_set_str(table[14], "10923369031485894103387217225764276776041423771149617779018011964861807963257", 10);
|
|
mpz_set_str(table[15], "12989286730506679179058591222023867789871912881295524380082720429125121399001", 10);
|
|
mpz_set_str(table[16], "2259701475232619764070487764536238278026656442243942280453580615306096626784", 10);
|
|
mpz_set_str(table[17], "2270915073297799730877739409596975617019163395632138360587195406154729757720", 10);
|
|
mpz_set_str(table[18], "5931246686568067150598203862728949815841762350754619266156445272731820862049", 10);
|
|
mpz_set_str(table[19], "2584372454573711174225430711030577055896155427813538907344123903582401754710", 10);
|
|
mpz_set_str(table[20], "4706443765820575463919610467491484671708524019950265427147260059392528056060", 10);
|
|
mpz_set_str(table[21], "8105804904073869871246605349098539176728707679515780264710351822101291262612", 10);
|
|
mpz_set_str(table[22], "9504988942174531577732768380019369316966401556152246131994053294359357481258", 10);
|
|
mpz_set_str(table[23], "13741856178344801669926506029421641367756342207162345308522239421227959751975", 10);
|
|
mpz_set_str(table[24], "15635909652286798856608138413605658644601947115158405338797816160329726917767", 10);
|
|
mpz_set_str(table[25], "20565994843560377977021026588522712492302491769380753714341670858782271055601", 10);
|
|
mpz_set_str(table[26], "2485555744302745559984328787511065995152022696883174359853534198235130815728", 10);
|
|
mpz_set_str(table[27], "3547559827994774535883841123214577229601100974473972921419815981202047984913", 10);
|
|
mpz_set_str(table[28], "4336572663118905220511580556495629072580506400568335964359662194164978127635", 10);
|
|
mpz_set_str(table[29], "16850767654677508795765516474407725763573565445621584343776097018936049322937", 10);
|
|
mpz_set_str(table[30], "8391364532029527605494647034197041450757968270724395432463754556682038202387", 10);
|
|
mpz_set_str(table[31], "7602849530096454185676463820713744197395764762299481069276207743451846048145", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=13
|
|
*/
|
|
void EscalarMulWindow_30f60075112a1198(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "20368805382066390855370580938434491491074918181697176632894338461928121607214", 10);
|
|
mpz_set_str(table[3], "9305888420984109922714456122057872910251963998922280053693043329647838846628", 10);
|
|
mpz_set_str(table[4], "7404068292968618157198434582880753580140834990198991497279561603115321336230", 10);
|
|
mpz_set_str(table[5], "21179286622896829509065809684414123082342211115457330515118811077049806883317", 10);
|
|
mpz_set_str(table[6], "19998861929298978474819935817716142979949932118713295084224126562309488883020", 10);
|
|
mpz_set_str(table[7], "20145584544074078088243347893318728157525463604023122548603248999320476268242", 10);
|
|
mpz_set_str(table[8], "3484951936290974462427616792127881882565194255692129296077913077178924835179", 10);
|
|
mpz_set_str(table[9], "14653140588116458668599038411359480802821205162175182644547718897819293440567", 10);
|
|
mpz_set_str(table[10], "14063943860937746762482104267737218507421082985551240607087617177679617985028", 10);
|
|
mpz_set_str(table[11], "21205834481354540639253189314895513963900378283101937204274408112637386069830", 10);
|
|
mpz_set_str(table[12], "16376992682315569000437675111256109668877953418381536318545295567221909896846", 10);
|
|
mpz_set_str(table[13], "14408122676965443606983288518886959565359086997763539679737749711161703488746", 10);
|
|
mpz_set_str(table[14], "19943868845064746733859408068232514306868058771733451929229707867179710797664", 10);
|
|
mpz_set_str(table[15], "12352991272806402882113573479537861355899211615650436180038269954862484913117", 10);
|
|
mpz_set_str(table[16], "20768002234062516847624694033022815281279994036654504568904215919314125574550", 10);
|
|
mpz_set_str(table[17], "17870950160708140918218774096995236584396435709771766987254491539350572805405", 10);
|
|
mpz_set_str(table[18], "8809551753159688303358363925218577307429466842675987235222674188593606950133", 10);
|
|
mpz_set_str(table[19], "6829367519942241425630805330052799262918261256661070566333445186056095977652", 10);
|
|
mpz_set_str(table[20], "9711463575682660875962645157117221168561645375886979821279087890806918052546", 10);
|
|
mpz_set_str(table[21], "18935589070402758666848018125933182586601618722901853454083159202877487595528", 10);
|
|
mpz_set_str(table[22], "19106240018819167718911888000695134543953338349481683123854636160617692327447", 10);
|
|
mpz_set_str(table[23], "14899351520537753896868593114387969511034853308773378152551069228289673108694", 10);
|
|
mpz_set_str(table[24], "11379141446085287948551218273681361041890654902705670686517028094240464246736", 10);
|
|
mpz_set_str(table[25], "14406337613731341296101221325959392808029227427183610855249750727190627484966", 10);
|
|
mpz_set_str(table[26], "13423153512467907698522962681039651632973672835328890143462878470709259059336", 10);
|
|
mpz_set_str(table[27], "10019210713131860674029272254365440275349869413646602119861610356584814746485", 10);
|
|
mpz_set_str(table[28], "3639244108897444530904619911086283136142931235495285385925604153819779390376", 10);
|
|
mpz_set_str(table[29], "14989113416303752241113782414779192489405183329363232144870350846648115482798", 10);
|
|
mpz_set_str(table[30], "20881089298624368198833493837440958436619903492184821767522174497167899692619", 10);
|
|
mpz_set_str(table[31], "10034734467523739817809464883158758984329476630676417052223762129741901073475", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=14
|
|
*/
|
|
void EscalarMulWindow_30f60775112a1d7d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3844056532212427920703046301582562022630032175143128283603650807154122941613", 10);
|
|
mpz_set_str(table[3], "21877205794289052566482628161337444889236310919796139915119554980819389260782", 10);
|
|
mpz_set_str(table[4], "17893688271546016078170348994605987377180325229622395472134708071837598302714", 10);
|
|
mpz_set_str(table[5], "14904098382911509714605365071605702342786377579792397559134806416858986406785", 10);
|
|
mpz_set_str(table[6], "16177490040435399189021404736139388811986219849619929764534466945275821341071", 10);
|
|
mpz_set_str(table[7], "4333394866391900781060183319088326500257993299285421761813104597681192754163", 10);
|
|
mpz_set_str(table[8], "14657578415571762332382143101312246002767066748229371278719024779186823916520", 10);
|
|
mpz_set_str(table[9], "15171875479173719553269418569221875941918818898442123661820384547581727016825", 10);
|
|
mpz_set_str(table[10], "19647950007479939863866131939346679992421562775966555217065984179171693890563", 10);
|
|
mpz_set_str(table[11], "11782878127232311537752731760261245852279923583794929813087382878149963513014", 10);
|
|
mpz_set_str(table[12], "3441033532790589018678662363403135472007949677932474904070531683544627419070", 10);
|
|
mpz_set_str(table[13], "13469846744068669554861108717348350395503330478650499144759927007805647748184", 10);
|
|
mpz_set_str(table[14], "14626715081540434895546518067319699285670464030490817857044720485732014422920", 10);
|
|
mpz_set_str(table[15], "1950666084301315711267821800770230166853323409578564806140780099592266993494", 10);
|
|
mpz_set_str(table[16], "11427928641312783957877600621745010825794692249627772592556251426183012414426", 10);
|
|
mpz_set_str(table[17], "8356936709467574659019980828919956191045781930222977341869835551813429418243", 10);
|
|
mpz_set_str(table[18], "19158337466133685220613707888126478971655900890055588811830854024712172055121", 10);
|
|
mpz_set_str(table[19], "5221487166936011794520960314357185967707976634514069063130380892439798575065", 10);
|
|
mpz_set_str(table[20], "10457592673590857705289217067399913757235283918017664883176127251246569904774", 10);
|
|
mpz_set_str(table[21], "5791410595677392396055922683867905703270175166847811885101398598970173353869", 10);
|
|
mpz_set_str(table[22], "16073856972154322218280302345189787414665737456509863650436918481213265854959", 10);
|
|
mpz_set_str(table[23], "18314598050973076820060219907610831433069435613362200662126390095926463026235", 10);
|
|
mpz_set_str(table[24], "4470672832764532978350328117979898319815131152684006440041545087442103961247", 10);
|
|
mpz_set_str(table[25], "146731309361288239543551730428739503162440684257180669767354567768748979090", 10);
|
|
mpz_set_str(table[26], "7388823483393338577320754770026785193707290770263907326950021345378471344397", 10);
|
|
mpz_set_str(table[27], "18131047975849523420475380521570938050675698736543451318092285583484853073390", 10);
|
|
mpz_set_str(table[28], "11193720551724742993487749101268440215654074888739962103006194853354385469098", 10);
|
|
mpz_set_str(table[29], "9921307855924728259771710233607299467453926223251637399791119676810341252498", 10);
|
|
mpz_set_str(table[30], "14295056121400511697943925860176045689609413144551107265274420628019781029830", 10);
|
|
mpz_set_str(table[31], "8304185134807940706187025335577576801973178728643958047877619958886386470686", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=15
|
|
*/
|
|
void EscalarMulWindow_30f60675112a1bca(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "721217074257914107100140684807639099957016760525471162101340773561442251383", 10);
|
|
mpz_set_str(table[3], "17242782517449232116567743999802492458301077407392882218473522380645787536271", 10);
|
|
mpz_set_str(table[4], "15981258764604595761596000879259240994818506247912237843793448628957842854447", 10);
|
|
mpz_set_str(table[5], "18976270096277130835496670882673776922828731305183099774884630211068536294410", 10);
|
|
mpz_set_str(table[6], "18376098225559052748920029923891788577590450011386508252238843197622173604178", 10);
|
|
mpz_set_str(table[7], "10389285600602703837735373865938509418604546320488006778467587544917522061880", 10);
|
|
mpz_set_str(table[8], "20711689519707141129278513110758203179758074069359284578563938472702760357298", 10);
|
|
mpz_set_str(table[9], "12197992835568918700329203999156441993065165086377884619886464175032345919228", 10);
|
|
mpz_set_str(table[10], "8942864681739369251054493430530570068103067906113373925393672127102143437166", 10);
|
|
mpz_set_str(table[11], "10760382932682789106949844893884354776151044858789957326996053386843172000987", 10);
|
|
mpz_set_str(table[12], "17995564523066155932217124407782091034505450637692854008036354454394438356249", 10);
|
|
mpz_set_str(table[13], "5988184361705254525688027451401460549881776305948368789621019110486915897697", 10);
|
|
mpz_set_str(table[14], "19735987513674328628990316582881650010457376110592964132312775640093239593447", 10);
|
|
mpz_set_str(table[15], "9629057368942843598698613890045021799675111127101280258524618062557771318167", 10);
|
|
mpz_set_str(table[16], "2774967275349449434215202696256804898438555873172884079621359337704721792645", 10);
|
|
mpz_set_str(table[17], "9420349657879853095560705082415018643155237910865586486333956937331044558034", 10);
|
|
mpz_set_str(table[18], "11999814134263113577061687098855734984543928505436857750509731769547692774730", 10);
|
|
mpz_set_str(table[19], "6326851556673180570166466998187161967127115145770552096862788821295236837767", 10);
|
|
mpz_set_str(table[20], "39866131788188652661102470510668177320069615445777173435858777329018560298", 10);
|
|
mpz_set_str(table[21], "21490271566532096033053529001883327318132907284194270822104550699223148621794", 10);
|
|
mpz_set_str(table[22], "7110158795069510612383263547968474377235061769261595253395098187497270670397", 10);
|
|
mpz_set_str(table[23], "10358987578026446120623949612328406804253508031482211904406032140382338222927", 10);
|
|
mpz_set_str(table[24], "13402471941016528566984852588356140243433801611592215491912023310499638611953", 10);
|
|
mpz_set_str(table[25], "18038619467197834557979985155714398191169295737498844489561545563029654754975", 10);
|
|
mpz_set_str(table[26], "20927151617394892731664400354901477632314504270018287459747822152297589887801", 10);
|
|
mpz_set_str(table[27], "14711458301261027803832796771086150571290410267865524824308423725949065157332", 10);
|
|
mpz_set_str(table[28], "5463401788209126425441887183250029747920862060359394502340856758732695552418", 10);
|
|
mpz_set_str(table[29], "20871681674724634625298886559017929548969169897579492199281754086681815302782", 10);
|
|
mpz_set_str(table[30], "9912205445382706322440231932430192319167874859669573980219539898038983479082", 10);
|
|
mpz_set_str(table[31], "17259553928274030489221840568057979270119422844979191173714242336761560841022", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=16
|
|
*/
|
|
void EscalarMulWindow_30f60575112a1a17(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1913500900861768332911157239087603286952255744021671889642956877083114069429", 10);
|
|
mpz_set_str(table[3], "19876401017254350503232281977742874562023796967708073124837443712547963772704", 10);
|
|
mpz_set_str(table[4], "5851717731928341482912868654142766273028000649203394589049020149573247531152", 10);
|
|
mpz_set_str(table[5], "5978322172286146410538060043645839288151380987212527862456647251057896397799", 10);
|
|
mpz_set_str(table[6], "20535221395659425720049437624088696986770582561042719099389922087438972381963", 10);
|
|
mpz_set_str(table[7], "7077928786465763349233954007627389823549476481845762441056620526561105021571", 10);
|
|
mpz_set_str(table[8], "7082785819823920956213867288288784148406676445208335197543237580869900491506", 10);
|
|
mpz_set_str(table[9], "13676032632628666471935786134843198563034854324932704593028514517413934832148", 10);
|
|
mpz_set_str(table[10], "12786874211172034458850213584578049682232430195839381689748947106663657168986", 10);
|
|
mpz_set_str(table[11], "14797410417392742804482079712959254103798439060679634056181197954370609303650", 10);
|
|
mpz_set_str(table[12], "15516745738683223230047559437236533911290995348403619716825645261823423690001", 10);
|
|
mpz_set_str(table[13], "12189570494815440545175679059338810048960492098209481509602997925669455116177", 10);
|
|
mpz_set_str(table[14], "18977401993857562695027053365183794981652229620847991298442203175482901511502", 10);
|
|
mpz_set_str(table[15], "12192628695990270720213406216558068662505175586909744583648261436794304030205", 10);
|
|
mpz_set_str(table[16], "7491211328817416747712040341211639259996058777757758486768214250111399044214", 10);
|
|
mpz_set_str(table[17], "6963264230852014268124266154612502611678628837660436814455072442131615286328", 10);
|
|
mpz_set_str(table[18], "12047429844855490666711542141778383755479823080321447926187200749142240778270", 10);
|
|
mpz_set_str(table[19], "11001550880238862591536564057480606890913372500934662224671246461292490691820", 10);
|
|
mpz_set_str(table[20], "10440269225071198138073625010154713507154569658310609152289577170365368076669", 10);
|
|
mpz_set_str(table[21], "12979052836610137269461072854168552717849346983293170636833939820258639253952", 10);
|
|
mpz_set_str(table[22], "19239890654112947929800208266453640067356255922371040055070602653444191423951", 10);
|
|
mpz_set_str(table[23], "16393054080870528663340858502712547117926214660769236540923857669702028478616", 10);
|
|
mpz_set_str(table[24], "21811132758228890861192371115055157235917947229466338080954660235397090047491", 10);
|
|
mpz_set_str(table[25], "13168651022883789247160925844463134539203175909511193248668918559400245790820", 10);
|
|
mpz_set_str(table[26], "4954571621472247840577376397897892986113493849731017493062980573779240196394", 10);
|
|
mpz_set_str(table[27], "1749798675761303006561955754799611115840323550955411937892373131234990455821", 10);
|
|
mpz_set_str(table[28], "15194236512196257325247662406152009303089835917586414870437908927614371570221", 10);
|
|
mpz_set_str(table[29], "13948949229108262726032415281910066413131216429234419552300756889262069975530", 10);
|
|
mpz_set_str(table[30], "17275051633009111686202497394646445602286460612817779437672408933675758336822", 10);
|
|
mpz_set_str(table[31], "12858670515109185390260362944194507980012697126666264977080463649072859717350", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=17
|
|
*/
|
|
void EscalarMulWindow_30f60475112a1864(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "19594995906983301063748985241725369583450956835895004338914052583638635627164", 10);
|
|
mpz_set_str(table[3], "1215926295609961973178802978113691920943873917262364276571043975844415457430", 10);
|
|
mpz_set_str(table[4], "13680120615873646905650649888531871229798680314077975001067764279138301255170", 10);
|
|
mpz_set_str(table[5], "11679802772801722271436715434001794526376017110703065066984418622148645644956", 10);
|
|
mpz_set_str(table[6], "10979341915399951902015740939032822672146819278824531018643131652140288301014", 10);
|
|
mpz_set_str(table[7], "1128938794460156739510087831546869613949458523857798147843037676969390757351", 10);
|
|
mpz_set_str(table[8], "11417207654213566428955165125420223686697634423476353113856821345932148839235", 10);
|
|
mpz_set_str(table[9], "16278369531341485179310531056709836675509247861314440168008253344879884622292", 10);
|
|
mpz_set_str(table[10], "3842058238648774272238521575505241866464319169346817482244543193037967028760", 10);
|
|
mpz_set_str(table[11], "3297152180148393601281244619939566700761905977752254247032865834216164249633", 10);
|
|
mpz_set_str(table[12], "6622319412290027253342527106910935087791237950656104822721750678439517675406", 10);
|
|
mpz_set_str(table[13], "15563695601006071611759800106851924305036436829892750897739422951169473619064", 10);
|
|
mpz_set_str(table[14], "13181292919259972556639906356936058589088713465328052485058387976053610631205", 10);
|
|
mpz_set_str(table[15], "14174612766848311804555439182245136066229960363804901703871692885589716060136", 10);
|
|
mpz_set_str(table[16], "4645281581656015420496872130733244385398168466053036517895585842477585275046", 10);
|
|
mpz_set_str(table[17], "13388788866872323911338081882407812293216974521297840117861305370240861450202", 10);
|
|
mpz_set_str(table[18], "14470418013964966588478796047499059679730950423852084824042591416726242049103", 10);
|
|
mpz_set_str(table[19], "8938922412156439011269335829350772999604734675059561786733499345430884870141", 10);
|
|
mpz_set_str(table[20], "16583034467503919351009794659923551003482985068407670237504367831689061026399", 10);
|
|
mpz_set_str(table[21], "17934564505102549601406759185519121191350998174279713908964549014457346634418", 10);
|
|
mpz_set_str(table[22], "9757564301640443893855110905957625113894277082326684304241516512016467769317", 10);
|
|
mpz_set_str(table[23], "1093003292740088586535614873398893844131165201691264454713623619356501401576", 10);
|
|
mpz_set_str(table[24], "8930760743322516729352183604104888944268770368876484262273427713783535096417", 10);
|
|
mpz_set_str(table[25], "20500788111863716898655373359941603247264827808933928063053854053889433887379", 10);
|
|
mpz_set_str(table[26], "10325948559242230564505513451041474024150507149775113688462798028112759671639", 10);
|
|
mpz_set_str(table[27], "9949134148849891248980728887476154503418473274459477620459454445566430549900", 10);
|
|
mpz_set_str(table[28], "20850470589696115423944426649995762350480503676215236066076175833293126852226", 10);
|
|
mpz_set_str(table[29], "9293707378443556729889633647170741445487948735283158363104714873453960261067", 10);
|
|
mpz_set_str(table[30], "11506234994915917043079338431936472606095366999874655172862180702208431556136", 10);
|
|
mpz_set_str(table[31], "14452161014730982463939118536942796797787085687047964584245086072370846008969", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=18
|
|
*/
|
|
void EscalarMulWindow_30f5fb75112a0919(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6312691792654410014356584427505264977044214785648879812260067443628814317724", 10);
|
|
mpz_set_str(table[3], "14257925555696485109423282223628644381907477878338453236945302381542539693152", 10);
|
|
mpz_set_str(table[4], "9079855899544673861069508683438599865287170526888623417575853179100155587421", 10);
|
|
mpz_set_str(table[5], "11747099952471887487349670583465838854694154132732966946339929820424060581377", 10);
|
|
mpz_set_str(table[6], "9926724767750502267020902031535358250941316922597501328671254928568059868630", 10);
|
|
mpz_set_str(table[7], "16821600372089473903171410123072432537192155752776540175307336066638097521527", 10);
|
|
mpz_set_str(table[8], "20635293817545174956276452235916453375967085766837594079701573806032274758259", 10);
|
|
mpz_set_str(table[9], "4912512049743211176965763421180046617710732578108083267821221661055177237077", 10);
|
|
mpz_set_str(table[10], "411881382991356540105861938156871419405153744365905334631688028442348430985", 10);
|
|
mpz_set_str(table[11], "16685015024012304642411668463502135734825976961116232386538435049054789575302", 10);
|
|
mpz_set_str(table[12], "1951368980472136932441687347664445891023675565835050146789421909805631371664", 10);
|
|
mpz_set_str(table[13], "11287114984404015098124177901222091172812420835823247131199502060618186952166", 10);
|
|
mpz_set_str(table[14], "7379533608810983364793672738582799910029031891543571041761107517310222208247", 10);
|
|
mpz_set_str(table[15], "13399612413165157758299296827409143706312891775899559638036270942734074449125", 10);
|
|
mpz_set_str(table[16], "18097381858740678293457614181919174232176469414874575520697469909514241939024", 10);
|
|
mpz_set_str(table[17], "4107614292008565637389179637150907090647271061483538027207486281498506071181", 10);
|
|
mpz_set_str(table[18], "4221029787515199874482585115454809564764913719164280506998326392946531091406", 10);
|
|
mpz_set_str(table[19], "14511565058221721785867308497857644761994783433805802129049163115945538912592", 10);
|
|
mpz_set_str(table[20], "19064616081847131050486902726890211463823604737876917751141851582206688823476", 10);
|
|
mpz_set_str(table[21], "19305785521020881025809325975238987523250715355720440618753131635790623862637", 10);
|
|
mpz_set_str(table[22], "376690769678970312884173363533987470085698535644652464378932502831219098675", 10);
|
|
mpz_set_str(table[23], "16151158210729365941379101185138578882120207316093416865384627786060577519384", 10);
|
|
mpz_set_str(table[24], "9655130494952168107489622636324264807869329354706619831758200785766793900079", 10);
|
|
mpz_set_str(table[25], "7370791930939716916060570360405414357961437265044872294872661183828871809853", 10);
|
|
mpz_set_str(table[26], "3016083093942985489664330590280047850941630624344213776449594114695748088177", 10);
|
|
mpz_set_str(table[27], "7765665938575600052803917765104035735372754858663990184054196680089365942590", 10);
|
|
mpz_set_str(table[28], "15470796451743826076048680783482800062356759951872837242126968785576660484350", 10);
|
|
mpz_set_str(table[29], "19958584304795888531136879277811447884659833674189844715246657205418972745951", 10);
|
|
mpz_set_str(table[30], "16847736027160059327449442740261749558110983384879238269268369148426541523474", 10);
|
|
mpz_set_str(table[31], "1251494417790554898599828925225568659390027683346363434077305463639243757815", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=19
|
|
*/
|
|
void EscalarMulWindow_30f5fa75112a0766(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16024328474586947999611988875348946173769472036103591071171010693036953749882", 10);
|
|
mpz_set_str(table[3], "14804393272372404339223772478958155444344906573584470867273131626842614791709", 10);
|
|
mpz_set_str(table[4], "12857876610230464978090922315137262766681813308210186686850822801120713042222", 10);
|
|
mpz_set_str(table[5], "3247332889965250299312120890147769864465763934114581644953310832723221077803", 10);
|
|
mpz_set_str(table[6], "16898705825298281918704104770508760031527789951463785171503746175337535048133", 10);
|
|
mpz_set_str(table[7], "21815927779766092718524650336576226579386983974765968777957031184689301958562", 10);
|
|
mpz_set_str(table[8], "10701407951495212600430556383163409810000064362417862698723957609796722336721", 10);
|
|
mpz_set_str(table[9], "7176521326774182157375178200505594559054306816407906142496519114416733417342", 10);
|
|
mpz_set_str(table[10], "333269565591390435197441758316480870496579282972568545691789378188159824667", 10);
|
|
mpz_set_str(table[11], "5199589019041858328871803300018773262561078507262706594207140034975230303145", 10);
|
|
mpz_set_str(table[12], "10516815997468347512537054395380614545597570585858291154960022194234124710351", 10);
|
|
mpz_set_str(table[13], "2048124309430691116008666427834801945157825307803403795457429483351015155636", 10);
|
|
mpz_set_str(table[14], "18690417672678854397740824950928189266055128193633461621611287620583691760321", 10);
|
|
mpz_set_str(table[15], "2446811724965007992072151991861273401256883982688281531647525698649870761078", 10);
|
|
mpz_set_str(table[16], "14821863823323946577374892806028294227521384354570837403340745793076906345558", 10);
|
|
mpz_set_str(table[17], "619240785714923214300645397387303846390803870555274780165010159255081256316", 10);
|
|
mpz_set_str(table[18], "11485729906478279574997551638314736978988040244366203958886090316590751316382", 10);
|
|
mpz_set_str(table[19], "16600379123070912488186112703435760500453896619638580888431101168947106705492", 10);
|
|
mpz_set_str(table[20], "18248163225478284815146399711977062170631805024513029272097954384197990820575", 10);
|
|
mpz_set_str(table[21], "10659581067441546915398469751082277830577415802047918311604800899713014482734", 10);
|
|
mpz_set_str(table[22], "14315930221655012114211898105875258610186864391549293271105393462053664769062", 10);
|
|
mpz_set_str(table[23], "5679132383932568258755662162149376656569182143003535773492313140031994313805", 10);
|
|
mpz_set_str(table[24], "11543502507334990425086613340677553055976693329024911597346637517571390158486", 10);
|
|
mpz_set_str(table[25], "14798308302648391302770513124948365007394138440918360659792027734739574565869", 10);
|
|
mpz_set_str(table[26], "1487766650306908933818473941850707071632336735476231622012126976637739047447", 10);
|
|
mpz_set_str(table[27], "11298947007704343658754760564239480618021487917411498140725111966031220893952", 10);
|
|
mpz_set_str(table[28], "9164260540245701665838272155536219856760847523580314432921627904333083890874", 10);
|
|
mpz_set_str(table[29], "9092714875731577526320815891085122357436278777755936510851467613253498176317", 10);
|
|
mpz_set_str(table[30], "8273543818606827310097635470019493027806998802204368651946249099141570851357", 10);
|
|
mpz_set_str(table[31], "2163918904986580293654793921161885771685405590890203258794630196802340879703", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=20
|
|
*/
|
|
void EscalarMulWindow_30f98975112d303a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11871910977766011920816446486193798660236707342995853240375904231743537384545", 10);
|
|
mpz_set_str(table[3], "20610729299430050079792204347236370479584886256516728887654325759969428749992", 10);
|
|
mpz_set_str(table[4], "12743408662495222566043613262112858144256560935017760327010736246602467483150", 10);
|
|
mpz_set_str(table[5], "15109594273298918588496489411453054924243392341715251778972968998817996670976", 10);
|
|
mpz_set_str(table[6], "8364253619238265287093721128966366839136151230988171559073649474924325892283", 10);
|
|
mpz_set_str(table[7], "20482254094781082458674634090947182311369429166318189152327777124129197709799", 10);
|
|
mpz_set_str(table[8], "10426449090815715511224288225972409509029474523185138171661344283795593528493", 10);
|
|
mpz_set_str(table[9], "7688172378779668062431456499435160122201857961488517507867699727181649285542", 10);
|
|
mpz_set_str(table[10], "3535022249268712716533933991521277190534770993956537738111480727521692421369", 10);
|
|
mpz_set_str(table[11], "1387504752830526797534019238803226253679518461854437882827172927398412402241", 10);
|
|
mpz_set_str(table[12], "1770886290973271430448702507085389379708580440175685725865682000286144054921", 10);
|
|
mpz_set_str(table[13], "13938484618349633976307001401715686809066297255822233088273265831677670592590", 10);
|
|
mpz_set_str(table[14], "21568045811883255107493207009765098238025569043887973536517665254603242410463", 10);
|
|
mpz_set_str(table[15], "12592503904667875325696849610942428306884878626915198015291521427077539935050", 10);
|
|
mpz_set_str(table[16], "20085879247533524852915230842067917206291281085409167265008801473472623288259", 10);
|
|
mpz_set_str(table[17], "17082834473878800143327371165752294000524688389488657738457095895646273532410", 10);
|
|
mpz_set_str(table[18], "162805608641097611943173908492645526726393233820160727579296793201335141443", 10);
|
|
mpz_set_str(table[19], "17930557892852251117344484797102053647425658327367869735802499830644751386948", 10);
|
|
mpz_set_str(table[20], "8895040019136530246546768084556005378225652704224561726912998112993001940621", 10);
|
|
mpz_set_str(table[21], "304810220126773818358033943987674731074621073326382052314251057666437827534", 10);
|
|
mpz_set_str(table[22], "13881362926924868911557664853185935136616926367643420556905353290969974903261", 10);
|
|
mpz_set_str(table[23], "5844943467023006897102673813891533696702422550619010185061788845546876544157", 10);
|
|
mpz_set_str(table[24], "7284848380542271764984948800937414715881481529004299411394698828286305780999", 10);
|
|
mpz_set_str(table[25], "14171211339959572027783817872063839937865396706527929051135006988414673198455", 10);
|
|
mpz_set_str(table[26], "14624103983407750565393878866397037565434063047288702251393226821417460421138", 10);
|
|
mpz_set_str(table[27], "12612129695092601447110574817896214165270559690588762966998288185584433697549", 10);
|
|
mpz_set_str(table[28], "15678697525169812515100103406782477338793583121700799975646759374433614726590", 10);
|
|
mpz_set_str(table[29], "7137975458748802650528734903352815685012077027463958390027464999721739251010", 10);
|
|
mpz_set_str(table[30], "9510266114532705029865351760321295213764735907899118936713480742401105769355", 10);
|
|
mpz_set_str(table[31], "20978530220498792094619180962465611954416505118239102547242363138293931909862", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=21
|
|
*/
|
|
void EscalarMulWindow_30f98a75112d31ed(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1657406379595848394476612640280471112641524820143272573499212019562410269228", 10);
|
|
mpz_set_str(table[3], "7269701504674841275797546967798812590777834664593211185470037358128039066150", 10);
|
|
mpz_set_str(table[4], "2522095723368487799543210821017645805640839982823331467357211528983126163635", 10);
|
|
mpz_set_str(table[5], "283540280262695966072349740890322027947881039799814425276881426986608381276", 10);
|
|
mpz_set_str(table[6], "2206314138608150882414675237398151544938853291550184067655468168974724266837", 10);
|
|
mpz_set_str(table[7], "20984927715688518935268761282802045165863979162597459301076271411420234828448", 10);
|
|
mpz_set_str(table[8], "19343098100954012908816225672139684513498357300288819758321925224043062620888", 10);
|
|
mpz_set_str(table[9], "5575925556738783202828978240293092221632041119313664173212505953117674853298", 10);
|
|
mpz_set_str(table[10], "17858528780853536480056389171368321208808476539575439869382653842929896909290", 10);
|
|
mpz_set_str(table[11], "21661360577003584128057528691802403264462234581125644757957689351632092412741", 10);
|
|
mpz_set_str(table[12], "16320678953064781254200232266144625188049051402359399385707486576820311075894", 10);
|
|
mpz_set_str(table[13], "19324301573467876621692346465139232045375933590077918835384591065976014653506", 10);
|
|
mpz_set_str(table[14], "5987610433294785509028905998282110917708617640779221522032358626774257498886", 10);
|
|
mpz_set_str(table[15], "13399879126657318041120438257417680411882232100717116037434801386481407400300", 10);
|
|
mpz_set_str(table[16], "12369477960734113722864525078582608852370018094061204027942627890135194989507", 10);
|
|
mpz_set_str(table[17], "16163964964586340502481422808875676121087522897744995566259880919753966403255", 10);
|
|
mpz_set_str(table[18], "7702736120303126921093930726352040212433766821508419429985047441722093406459", 10);
|
|
mpz_set_str(table[19], "7246729385887108740283006671788539249190688392859887641307405934690350862577", 10);
|
|
mpz_set_str(table[20], "9997451569095438210177601601525789878145195348412680318050593528279544009529", 10);
|
|
mpz_set_str(table[21], "13351799380672813272888481361747277406291715908203649317072459470209053368711", 10);
|
|
mpz_set_str(table[22], "1773897381344651665913655357422475866587266783466742549897693688802771343421", 10);
|
|
mpz_set_str(table[23], "16651208206485722403868841705688598251975239805372694434227088716692944444481", 10);
|
|
mpz_set_str(table[24], "18591812731898475944754561232540921618539098719009219952834750606364012015190", 10);
|
|
mpz_set_str(table[25], "10306739583439085894427119905905060738766163649788668995725228423619188185612", 10);
|
|
mpz_set_str(table[26], "66865139241574800688241507800546546981627984204164258513766123417387927304", 10);
|
|
mpz_set_str(table[27], "3117005704251728314121265949438172590029403373829696135299072995521493558348", 10);
|
|
mpz_set_str(table[28], "10903684612539203130543164951218570964354821403206799855909881481322430524323", 10);
|
|
mpz_set_str(table[29], "11250101561961297773106005143622245961912412345371816081877043479955953346628", 10);
|
|
mpz_set_str(table[30], "3017567837262857273430893285918339032720677356685745383331534986484636098824", 10);
|
|
mpz_set_str(table[31], "13931080935868505516190704666941022660207581072746676055655987494700835702500", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=22
|
|
*/
|
|
void EscalarMulWindow_30f98775112d2cd4(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8938286554228544146174935118066197962621531067129841012707772022867703925656", 10);
|
|
mpz_set_str(table[3], "16233020724865011658897065342314816850087702885764903183418504396595757282796", 10);
|
|
mpz_set_str(table[4], "17788068487178949472006556212688526701488695761204073382019553632867906404471", 10);
|
|
mpz_set_str(table[5], "16127823313341081822494850404375536033371699056428971183012507006102307142724", 10);
|
|
mpz_set_str(table[6], "7948203346355397426642285862907539603341349107055405573959944605644158516483", 10);
|
|
mpz_set_str(table[7], "8080213050870144724053705109131048654207107135303024810751701147314122163095", 10);
|
|
mpz_set_str(table[8], "18836461869410204095776934792761344149932025549217744071005539527374774323825", 10);
|
|
mpz_set_str(table[9], "12315930453124844529601426229511916040567059674397790856441547364639703358972", 10);
|
|
mpz_set_str(table[10], "3029948802756980831465293146155474995008293938711435950379966727706069635762", 10);
|
|
mpz_set_str(table[11], "2944047328882151696646146625857522138088586878532553112277573706430775555923", 10);
|
|
mpz_set_str(table[12], "7815175266657454899435707666016439832467810014589047829774355489631055479999", 10);
|
|
mpz_set_str(table[13], "11629199560086524860014784100414914941795896042889055009567211943676511945534", 10);
|
|
mpz_set_str(table[14], "10519107830389173260209669111202520869112033340766308966162199232932204008760", 10);
|
|
mpz_set_str(table[15], "3349072061895510743669030860598071540301046000284489791093666441232995490719", 10);
|
|
mpz_set_str(table[16], "948647253672758531039400549045346962380493520135840196438186054536313762207", 10);
|
|
mpz_set_str(table[17], "5908157674977132846928879199200097245110988008169599585576289810904461575283", 10);
|
|
mpz_set_str(table[18], "6132113203588582802605376911284386888805675076281066403330188057478812664670", 10);
|
|
mpz_set_str(table[19], "5791746634565285768667366278586496582595773914053660965247267572566412696438", 10);
|
|
mpz_set_str(table[20], "3948773953617608699058534644888624079818068151195158354586293074525410857468", 10);
|
|
mpz_set_str(table[21], "19223719972167441778565866926185469055297450189080365071437879239145618219437", 10);
|
|
mpz_set_str(table[22], "12132707777982746548697633357326379720282056794417855398812617690240981551293", 10);
|
|
mpz_set_str(table[23], "19465949072370867974351436131596063077818116674756009467101720357829304842337", 10);
|
|
mpz_set_str(table[24], "5298087154254600484339094370964794453930884675470785449137720155759701701915", 10);
|
|
mpz_set_str(table[25], "19600464238075802945841709619847491003915314667447648486383883532650301385905", 10);
|
|
mpz_set_str(table[26], "14526748173817800035403447828412143706207316815744540568528424322830936932156", 10);
|
|
mpz_set_str(table[27], "16857568697177571714302557842839799449943735879679994945877666330612655709946", 10);
|
|
mpz_set_str(table[28], "21734912970121745461521746184343777601371401538618983309688539060671085007786", 10);
|
|
mpz_set_str(table[29], "15742219086869357379751660262698195198917852623576290180440862264694005230805", 10);
|
|
mpz_set_str(table[30], "16610229120622117630467987686045935340065838046536073783473224818312109568048", 10);
|
|
mpz_set_str(table[31], "21535954724639585890498135657808861681506922170820158374602576078046700022327", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=23
|
|
*/
|
|
void EscalarMulWindow_30f98875112d2e87(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16886994305634169491329382843745060260876647438360602332861303996590301095317", 10);
|
|
mpz_set_str(table[3], "19250152014385373544010314183948997304888234702318488490522676401039395968569", 10);
|
|
mpz_set_str(table[4], "17348733161769620800993755373018881827359741360278490192493625108023310313005", 10);
|
|
mpz_set_str(table[5], "566695140367669402799518632199180306904869215200693423271786676840857351418", 10);
|
|
mpz_set_str(table[6], "10011121525544874366823344442710893674598724456123612639127203752984561101245", 10);
|
|
mpz_set_str(table[7], "12822585595886475793229925464144800427103669072661114110462131694510350506756", 10);
|
|
mpz_set_str(table[8], "4810116193624143216372416270879924446821266077828181869947761973544863556447", 10);
|
|
mpz_set_str(table[9], "8901164482855600833225393252685999670084599049275103956788506461858717745436", 10);
|
|
mpz_set_str(table[10], "17738210631035045198519955933959421153574146216760401345098167567456148219983", 10);
|
|
mpz_set_str(table[11], "6355934390837858571738191002333087271151726768713129603750052662255719616301", 10);
|
|
mpz_set_str(table[12], "12327093588058526023186553363417411525848176175949896342833033556038504600108", 10);
|
|
mpz_set_str(table[13], "10387209597466117079658421782540272896953611723709561546014772942788616514493", 10);
|
|
mpz_set_str(table[14], "681189354661002842486325655070556888949946844914894710558126018544873804495", 10);
|
|
mpz_set_str(table[15], "3292729181740647935866069504140338838656413434052167584402974052265364076067", 10);
|
|
mpz_set_str(table[16], "884407658173462867707739747812316370597774974095310269108423966433523338214", 10);
|
|
mpz_set_str(table[17], "6631500605196071713360916843241530345980308116925055602412667675904333328047", 10);
|
|
mpz_set_str(table[18], "12895559277116358670393871006584256920318562245049632307173471875036554324380", 10);
|
|
mpz_set_str(table[19], "5266555174963538377088254254983126561217442326737171095750495435048658572008", 10);
|
|
mpz_set_str(table[20], "16453452136317035072976017859508381181391210628785959531993473624257016920655", 10);
|
|
mpz_set_str(table[21], "16233020881582916387489818050708881660773449794558891116253150211883171512627", 10);
|
|
mpz_set_str(table[22], "2214298418432911450877366160053598422776005617941477197409719429895490749313", 10);
|
|
mpz_set_str(table[23], "10619594699481593658385194554202011558252256471897737016523149811293375017143", 10);
|
|
mpz_set_str(table[24], "17111311272140931254336753418244566427726060210805880894176936586680034335847", 10);
|
|
mpz_set_str(table[25], "10832490761061448355368226289461614460683336133692788303269139762891913675338", 10);
|
|
mpz_set_str(table[26], "14928129153639517483007862678341151531398692576966576849558881263843602003142", 10);
|
|
mpz_set_str(table[27], "20804857761515056467665872261996549551629057953876899865669315504410310020540", 10);
|
|
mpz_set_str(table[28], "7620128762372510243048687904753925795503011437667518065325007685839124990696", 10);
|
|
mpz_set_str(table[29], "3144480052518069195168964581895685908673227030208117340578509893804277989058", 10);
|
|
mpz_set_str(table[30], "7153364527791398877534600405380198967008476027992188794322651254312458064820", 10);
|
|
mpz_set_str(table[31], "5126598118313026584086237094809207967961753105693665923628898103484617383485", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=24
|
|
*/
|
|
void EscalarMulWindow_30f98575112d296e(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "16694195795086647676823073440701246940590151342078097593569860395387801713056", 10);
|
|
mpz_set_str(table[3], "21042732401434488602885524826509480564908913891394226911717810672499997691958", 10);
|
|
mpz_set_str(table[4], "19745794372137894058717114809420748629022981940443635955473162754169833423176", 10);
|
|
mpz_set_str(table[5], "14338710793499834162343259671863053663870643524143306094522211743283709136960", 10);
|
|
mpz_set_str(table[6], "339984129173005990960719816761321689854778678424875871156559477809462465312", 10);
|
|
mpz_set_str(table[7], "9124928033278255101446464040294186305463859914450541160651606007781619940387", 10);
|
|
mpz_set_str(table[8], "2168266796245250286159186074165543421467500777809443939109000224182889430893", 10);
|
|
mpz_set_str(table[9], "3441078344864070848632550732770580026115294752485213716512724906069694488486", 10);
|
|
mpz_set_str(table[10], "1493260518513853893229779119542136985955042766621854665561168308934004658851", 10);
|
|
mpz_set_str(table[11], "4400345835784246869449841131885449175502280644324923727128668852065671273712", 10);
|
|
mpz_set_str(table[12], "15886539512018213846379225042539892406579078803170759416753209026065188419846", 10);
|
|
mpz_set_str(table[13], "2685522315309179508150991601560665057484052528357986614755363211324866652473", 10);
|
|
mpz_set_str(table[14], "6779363514708510951323630552381214572184033336794324206850950609719007741831", 10);
|
|
mpz_set_str(table[15], "3476582231055339891079923575515358265505372330803145828382028844066335144378", 10);
|
|
mpz_set_str(table[16], "10656096844085735648374301047353248034850599163371495258913334220183478166651", 10);
|
|
mpz_set_str(table[17], "14106589807801597672428866674639821483580192658118511653401933109252642581523", 10);
|
|
mpz_set_str(table[18], "5004475779566685906785640118550002890090717216385240183795874024788870946311", 10);
|
|
mpz_set_str(table[19], "10419370529046765623365738215440453217584429464100071338939925019678842078822", 10);
|
|
mpz_set_str(table[20], "10336501697695314588196663003291160100745276268174331804207284273201428394814", 10);
|
|
mpz_set_str(table[21], "5785121510067001864477010442645844382309677096275390507341329000934758573714", 10);
|
|
mpz_set_str(table[22], "15053468887365182256447919890301502365510975286187232746304324776846541239645", 10);
|
|
mpz_set_str(table[23], "8732911777561606780736610118910609024225648561175056887433316116595810867762", 10);
|
|
mpz_set_str(table[24], "465346489098734692854243749707678817146467084966205136195449859225552315630", 10);
|
|
mpz_set_str(table[25], "7632494447498524328529815941609473690869659423775247896505032181856203182747", 10);
|
|
mpz_set_str(table[26], "7530090173441699779360140039443597652430714325702091148902767068479566086867", 10);
|
|
mpz_set_str(table[27], "1295443075220899591122459835116278754819540595920213653782903313209194134801", 10);
|
|
mpz_set_str(table[28], "12296846927293714987730519199541309508371464058256920091278949142746723077868", 10);
|
|
mpz_set_str(table[29], "9280868073148734438653663128808684732571066657428860076459323623560138390373", 10);
|
|
mpz_set_str(table[30], "20936814290823712726931303619416653496113136456166980896723016053455263449841", 10);
|
|
mpz_set_str(table[31], "7687573233093777724968213349093466368789568595880736939375028446624143877585", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=25
|
|
*/
|
|
void EscalarMulWindow_30f98675112d2b21(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "20638489285721343548835406715942596990186717728852189596544615969306326199053", 10);
|
|
mpz_set_str(table[3], "11980292799209025585575100148014064392077760232810301570603613473161508752625", 10);
|
|
mpz_set_str(table[4], "15204524559937459669833130174147881699779560143735896339343742777273008882845", 10);
|
|
mpz_set_str(table[5], "6347972627628880648457437280880718837105068783834368659339960556659959037238", 10);
|
|
mpz_set_str(table[6], "9454910167271163466457863082739106591593364752835931575465360136478676303109", 10);
|
|
mpz_set_str(table[7], "8284070525768906887649040215529116045650091430710060580172323139823433102105", 10);
|
|
mpz_set_str(table[8], "21257880961348486870031614468363075992624238095842490153257760752156215146870", 10);
|
|
mpz_set_str(table[9], "19081752576048636033140717176630459150723955930477244767892967769990202777209", 10);
|
|
mpz_set_str(table[10], "19799882984479127618851957820474864597614017929106633491303381346509094749217", 10);
|
|
mpz_set_str(table[11], "18295534979203170290529170909512306929796477401339054788027762611251318828778", 10);
|
|
mpz_set_str(table[12], "8489094773386028708188117663829022174118289111227349887308356430178601722256", 10);
|
|
mpz_set_str(table[13], "13521649091624792019529980310831332673924030620201197023886404052013769337654", 10);
|
|
mpz_set_str(table[14], "19010516319176201473351370765147767482645406385283197234739994237419779438382", 10);
|
|
mpz_set_str(table[15], "10681444071729457066598032919326028826229204961551437861644323516076601123286", 10);
|
|
mpz_set_str(table[16], "2466896380362479074903392071423591601055117479050723379361102734305113922610", 10);
|
|
mpz_set_str(table[17], "17942903488791174525324015393812730961936787908237354767773785327672375573711", 10);
|
|
mpz_set_str(table[18], "8313783718047170482383627445554249897053219230092946550865762751302761288359", 10);
|
|
mpz_set_str(table[19], "7250418774092933181048334601143091068669292067709306070023667173282232403808", 10);
|
|
mpz_set_str(table[20], "11615604215872648010815918033282678390952292003382158719975297945858900155959", 10);
|
|
mpz_set_str(table[21], "14108403057609050183154012551849013256246047626755611930392079859169634912188", 10);
|
|
mpz_set_str(table[22], "1578836860460898409060182496957239769363827918125416661411143888666243025337", 10);
|
|
mpz_set_str(table[23], "15000167670829301804763981714875065187060031143442756922383316390873526860394", 10);
|
|
mpz_set_str(table[24], "11482503422833907981771550037048833385907788997983304192490373426062119963256", 10);
|
|
mpz_set_str(table[25], "6501562379367658717658491112300898739651450911953892433603844825954683620474", 10);
|
|
mpz_set_str(table[26], "261929079713361218410337489092528801259709142980821954721181922016467164680", 10);
|
|
mpz_set_str(table[27], "21002021782216039507687100651552341588383791163695173808500741490726033204575", 10);
|
|
mpz_set_str(table[28], "15120425408795136073283404278319627873859948943823120385369903930352912567116", 10);
|
|
mpz_set_str(table[29], "21480238371424269393281398068940579951009033537187968076488593944760889080945", 10);
|
|
mpz_set_str(table[30], "1040436079148496124865240568265769920647967515136801643515213190597054722054", 10);
|
|
mpz_set_str(table[31], "18963160064156271117139977258761659314946244364217817561984816810650200872938", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=26
|
|
*/
|
|
void EscalarMulWindow_30f98375112d2608(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1777014253974620429558459032714355400263370941019998279285407112515496689235", 10);
|
|
mpz_set_str(table[3], "15644522334423526434436134660844621025694146030175232929604459886769792353379", 10);
|
|
mpz_set_str(table[4], "3886331634315699257224697786768363604071022420289603105610543476653443372141", 10);
|
|
mpz_set_str(table[5], "11314623594716146207579423020470708648388230389361362735126578715063111390278", 10);
|
|
mpz_set_str(table[6], "18335295164107120900298251905170480911224919782217038131574152108306060857690", 10);
|
|
mpz_set_str(table[7], "13870107112372425460914690729063408413728273922057831466505049807973228266329", 10);
|
|
mpz_set_str(table[8], "609961927036422336466232414334651368961526925588196470605572440362401903104", 10);
|
|
mpz_set_str(table[9], "18978562237785208487472664105738761110727184080820755471844339969870706932382", 10);
|
|
mpz_set_str(table[10], "8817581160502090343281687771602370729661202819998983990797384764392972772261", 10);
|
|
mpz_set_str(table[11], "8681768054391330955879937183317596621669141757043363580614074800765220922638", 10);
|
|
mpz_set_str(table[12], "19532832519073722277306963027485426797414278966746032274116708652891247479183", 10);
|
|
mpz_set_str(table[13], "20673359596006100817996841961385435641277265900496452772769751875783581455940", 10);
|
|
mpz_set_str(table[14], "12215284774589410915026224396508337539765754376113139999543228590868166981551", 10);
|
|
mpz_set_str(table[15], "5349672598740934656252787190781796199266073013719486237893890048942308590593", 10);
|
|
mpz_set_str(table[16], "3222661655264230573451160235037631538563129448264614884211686648251604339218", 10);
|
|
mpz_set_str(table[17], "6644122830260404798475405906907894849596449599442847076109290430261580402804", 10);
|
|
mpz_set_str(table[18], "20674670242625891598644463998190733382166022642039066566767672350533210200181", 10);
|
|
mpz_set_str(table[19], "17547352803267197949188417346341441959599227579681607949038141791287711630089", 10);
|
|
mpz_set_str(table[20], "8501992178040297311784650719781596406145220750586901978520061537215748155846", 10);
|
|
mpz_set_str(table[21], "1033934366236880584021829977720882839344175611598951718377606827450418761074", 10);
|
|
mpz_set_str(table[22], "6629891778698738554366860564373469150768326636854977945327031020432536027351", 10);
|
|
mpz_set_str(table[23], "15991818398563302422071450355550838972682659241520123643935879409630034616684", 10);
|
|
mpz_set_str(table[24], "11520058998982033597283580076322921220778977767224586070757457038709854923045", 10);
|
|
mpz_set_str(table[25], "21787323966328349873072190136337768755380454447882078877586516663340458345296", 10);
|
|
mpz_set_str(table[26], "9218379069503935490797126970013730953602439164801672418344584790476649859707", 10);
|
|
mpz_set_str(table[27], "14860625766189910741376616275620794379181669078375321593192439912242667323144", 10);
|
|
mpz_set_str(table[28], "5429219372767594600695373756014663252902611042107910196534062669589834547398", 10);
|
|
mpz_set_str(table[29], "11388805626760710383589685776945849075154050041321557687035260662259978688506", 10);
|
|
mpz_set_str(table[30], "13657023395190403407491147603141806909952435861945773206868053993743013765937", 10);
|
|
mpz_set_str(table[31], "17420185578628934498201206341811283612571453380544875542335760816138673576209", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=27
|
|
*/
|
|
void EscalarMulWindow_30f98475112d27bb(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18064680232343661410084520978918241848925411622320795244845148572863303526672", 10);
|
|
mpz_set_str(table[3], "3129477399317235225089050822276657733172458813838499693454702048664329637872", 10);
|
|
mpz_set_str(table[4], "1915873910603542325344037869436587379196657968439769650876805482903947726062", 10);
|
|
mpz_set_str(table[5], "1710089766210076649934415138488175432756239287286100986488334712165077966260", 10);
|
|
mpz_set_str(table[6], "11419588095705940172793401648405121838217909031807728022871176470684341944853", 10);
|
|
mpz_set_str(table[7], "19772220035770123897190852625954845688624431847731967062053851190052170998927", 10);
|
|
mpz_set_str(table[8], "12734818558013668561780768522805283155882116093826225873128522245041721171789", 10);
|
|
mpz_set_str(table[9], "1710340367577224186069277555219791941680656114773959974999082059756200926587", 10);
|
|
mpz_set_str(table[10], "19014114461447694975008934073621144481369527806987337136388671720496665518991", 10);
|
|
mpz_set_str(table[11], "12229458491563389647571272019395654127077520925033144650364877699841042845307", 10);
|
|
mpz_set_str(table[12], "7466662369786045837069705032767588282318351353857802530388462887764349615715", 10);
|
|
mpz_set_str(table[13], "11492793391701044579497562966917572884883058770494470661332046656891126972569", 10);
|
|
mpz_set_str(table[14], "20791164040771894102731291226901830105499772911835736318506038457125027880572", 10);
|
|
mpz_set_str(table[15], "6971133768281348446537241889728164688130773753897758867942572023258664100171", 10);
|
|
mpz_set_str(table[16], "7459496263286980566528366127976868255821604117050061961735223728840039489556", 10);
|
|
mpz_set_str(table[17], "17806588649177458693229845080877081795064171369683173826688595311959567985897", 10);
|
|
mpz_set_str(table[18], "11585532545705536953877249594093137001050343946717448352961430190264483925402", 10);
|
|
mpz_set_str(table[19], "19982512193652683607242346956334217196827775074613261510923071976996191269762", 10);
|
|
mpz_set_str(table[20], "15579702851812127894189575215319081322826804705013506301123970210537584850302", 10);
|
|
mpz_set_str(table[21], "3418188991987560811919718785447846911810548711238688481876114269665391980769", 10);
|
|
mpz_set_str(table[22], "5703794193468948792031359712163085063600850733809748935932617792165374857903", 10);
|
|
mpz_set_str(table[23], "5195030959126764288167771101245597533500758291334991781545411006759702015266", 10);
|
|
mpz_set_str(table[24], "16277058597385314227987788233527851157223433550564325183661488644276368816347", 10);
|
|
mpz_set_str(table[25], "12543117151526615133293331613640311066954196812050214272232133573347836644662", 10);
|
|
mpz_set_str(table[26], "12861690469934293198572395506156222103882364040500023882764787334693068247564", 10);
|
|
mpz_set_str(table[27], "9969342024557129536312218347164119919502699260068320956280512845254898172853", 10);
|
|
mpz_set_str(table[28], "2596007813520927095981603378539633083423201517237110566575854218755675137335", 10);
|
|
mpz_set_str(table[29], "21283498480219426476354808250748679019692674473173909804203735085500521712714", 10);
|
|
mpz_set_str(table[30], "15916327454541284794004152263717048144542509881241878926988699269425338262520", 10);
|
|
mpz_set_str(table[31], "2925233824526413092913617765675468817898009901490945263220160556285670744600", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=28
|
|
*/
|
|
void EscalarMulWindow_30f98175112d22a2(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15187837374949511937701099621526261653017815610530781612551683012480593026060", 10);
|
|
mpz_set_str(table[3], "2145304950527938858075313596992545420094986199499298487018798696755786101860", 10);
|
|
mpz_set_str(table[4], "14516041837947643228505370886377097735288217805106565411522074117910854668605", 10);
|
|
mpz_set_str(table[5], "18801756891511955972633459737831576667521120192567956257176754597389680269893", 10);
|
|
mpz_set_str(table[6], "8619864389822707243827106338304479608555074884689635535180138599565637039146", 10);
|
|
mpz_set_str(table[7], "4254878146021253820483247745753798490236286129771746676467235363946168465424", 10);
|
|
mpz_set_str(table[8], "19687149588354229712126853048017720022532871397224450431538859357788219120045", 10);
|
|
mpz_set_str(table[9], "13364286509683319141069645804954844108686545511143825733680465933752466735833", 10);
|
|
mpz_set_str(table[10], "10186461717504246046230268440918821035876440895494266557127416606329083191287", 10);
|
|
mpz_set_str(table[11], "18297926602340021478575261446428210531132532051235949738981896308382482354761", 10);
|
|
mpz_set_str(table[12], "9662018506088598988541013808430313815739391873838391456964385042078776489955", 10);
|
|
mpz_set_str(table[13], "9612634823479186815849213576402334527393278121749786594652461488830006809363", 10);
|
|
mpz_set_str(table[14], "2137704031889285044468792179116749138832579303450232811659896613520782167639", 10);
|
|
mpz_set_str(table[15], "6749784557917554872006248055872747554534389320001758319101013030696936272628", 10);
|
|
mpz_set_str(table[16], "625850685425088233584927386815010073538229935767335330487848474433738918010", 10);
|
|
mpz_set_str(table[17], "6995589058260837178074203227798361798565888189644556589736593990439092388492", 10);
|
|
mpz_set_str(table[18], "9409159498243173193976978933968355588871599969716311700577155528351183018675", 10);
|
|
mpz_set_str(table[19], "9104170183894207978302719302073040066957290086548111568450399757272258078358", 10);
|
|
mpz_set_str(table[20], "172137246540613195507454067378303432481243939754662726908383061986079873929", 10);
|
|
mpz_set_str(table[21], "15156508289826552331459340900493745787045167225977526564817131051834994840762", 10);
|
|
mpz_set_str(table[22], "3866100369793028316149456519221636065086391047338182901297729000837007449069", 10);
|
|
mpz_set_str(table[23], "14449915354670721904199065940909559846733006632484706727650720068733055778595", 10);
|
|
mpz_set_str(table[24], "21047210568331534632839865098320372283417502512195493040500119038992713574260", 10);
|
|
mpz_set_str(table[25], "8908385197981213495509437145553944057864145388036148265876356525650583964504", 10);
|
|
mpz_set_str(table[26], "5156429062451548848250052993680497566063269712525114483317807292940922066978", 10);
|
|
mpz_set_str(table[27], "7953110297861995272265856227435274549094654925357643018879178379457332790396", 10);
|
|
mpz_set_str(table[28], "20237163278369283917100424296717777322056107717562199737610003631756613116098", 10);
|
|
mpz_set_str(table[29], "21844186763900341665690480709552325814119192346937469754793446106515094484517", 10);
|
|
mpz_set_str(table[30], "1682802359745804099169273003669171107459792021961893987239622400107547501320", 10);
|
|
mpz_set_str(table[31], "4077138749124832881195516357880862205186145392494220998949617863381768882938", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=29
|
|
*/
|
|
void EscalarMulWindow_30f98275112d2455(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "8430120875982733852309880311017060881275873150019222186218810957880200495354", 10);
|
|
mpz_set_str(table[3], "16989048378233858794788958978146014195305377375456310408467635854297286523644", 10);
|
|
mpz_set_str(table[4], "11860819094638342129205093270485645885615224185534099582623386180671893464610", 10);
|
|
mpz_set_str(table[5], "5347412438294657846433921264856011658228569726843345585243244038664219922810", 10);
|
|
mpz_set_str(table[6], "1131515993461675542524770075003115292938846156878400185919596937689352478900", 10);
|
|
mpz_set_str(table[7], "12958861123925681990457733035240880740911469560279212974551687919749970821952", 10);
|
|
mpz_set_str(table[8], "16946382245182653723986215424712248308680070566989980508990318627491651639222", 10);
|
|
mpz_set_str(table[9], "9684719733028580507529590768659268232327801582933846772922989034860249837758", 10);
|
|
mpz_set_str(table[10], "5999679216481167092351894424740052362270910587107818913157978272975329969180", 10);
|
|
mpz_set_str(table[11], "15283242363240494263092569207305021472683635734133252738487821244946929305830", 10);
|
|
mpz_set_str(table[12], "2390481826645659845462694915335620709401918992651565167621434341041515485426", 10);
|
|
mpz_set_str(table[13], "11234903469741399379378467473414477277447866625760458871228875001965786066142", 10);
|
|
mpz_set_str(table[14], "2854663530603746825997771192777239949370009008942184991623923936027166701241", 10);
|
|
mpz_set_str(table[15], "1716474310485208988848504994688510642262853564024074464797332607903568267762", 10);
|
|
mpz_set_str(table[16], "574261315695697187999090960533511996543112623807808585487437694816007242375", 10);
|
|
mpz_set_str(table[17], "9488037863754916252285084849697668592037845778602067342312244550925811511773", 10);
|
|
mpz_set_str(table[18], "6937751462243507416714652878500637777783427212384019031420511879376004465456", 10);
|
|
mpz_set_str(table[19], "19740423948414089679408486526132883520644311662846415828027265309442158866057", 10);
|
|
mpz_set_str(table[20], "16588359622627534498549559416903320243908569987541240336832789867333731937345", 10);
|
|
mpz_set_str(table[21], "16193264327344065104508058208393259449814798660533346905997978994248078433249", 10);
|
|
mpz_set_str(table[22], "10539088761282419816274044126996361653677221705820616724100561671785803212782", 10);
|
|
mpz_set_str(table[23], "17460185379704072230905236545870362909423057500606358331847775894270128309405", 10);
|
|
mpz_set_str(table[24], "20283302434798174744292886687305053200397791259996769945915067516245713041655", 10);
|
|
mpz_set_str(table[25], "11174752591702511626072990941590251321110127731096751339644196981352004005453", 10);
|
|
mpz_set_str(table[26], "1486150988509639688554157444015542156414168602625589860304688017818290636244", 10);
|
|
mpz_set_str(table[27], "9150671293725493183754477160965749940881636325359911520052587069881210743789", 10);
|
|
mpz_set_str(table[28], "19343927285873184674634659792139676180815279040052274972542293363067198799162", 10);
|
|
mpz_set_str(table[29], "4627431036776791029192848496923858627831703348348368475756503170707381476969", 10);
|
|
mpz_set_str(table[30], "3535219293199686539282520101216213498200046685961782400799847048192421427244", 10);
|
|
mpz_set_str(table[31], "376255090104282189240330705495600755561026362666658230687640913451416561867", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=30
|
|
*/
|
|
void EscalarMulWindow_30fcef7511301363(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "14238193718703509061393179391871597776636648384268561716878359134447010275729", 10);
|
|
mpz_set_str(table[3], "11128686287190319115796975372771719760247611758490380538178484745830360450517", 10);
|
|
mpz_set_str(table[4], "10055072091130411372046195709246821590910406117794812296658347233960874089278", 10);
|
|
mpz_set_str(table[5], "20782948663131209756509722449085047044854070281061698220284675443000040047339", 10);
|
|
mpz_set_str(table[6], "9730003847744981396118646118393559547263025457734388634241732641755012829392", 10);
|
|
mpz_set_str(table[7], "402725134261562981867362187300726075217986407860519909390643272858285544688", 10);
|
|
mpz_set_str(table[8], "10405506820603162024685846827563501275545987181778547975771411509743184412454", 10);
|
|
mpz_set_str(table[9], "19316554963171785123118679601840384463718803188955967577042706405302281719253", 10);
|
|
mpz_set_str(table[10], "7013379614279565755050835765204418127664364205389258515285963366882228010297", 10);
|
|
mpz_set_str(table[11], "1160310105440567642234802077667644074776831915565486115840708226970130738026", 10);
|
|
mpz_set_str(table[12], "7761956594103836782808025810774239092173311520212252887192766584414952011015", 10);
|
|
mpz_set_str(table[13], "16467230324214276607433637193834817187352326754396740602215579254574733894727", 10);
|
|
mpz_set_str(table[14], "16044986700084398421397021648426986299236970218740795760037436672615587496338", 10);
|
|
mpz_set_str(table[15], "11453370323257816680886225219100250253924918078810835306107633769366314580013", 10);
|
|
mpz_set_str(table[16], "11196790363890411219721246187048666205705470699868057156619839765236235201482", 10);
|
|
mpz_set_str(table[17], "17913348103306068374810648105142305506226430386925547964019291739390270606444", 10);
|
|
mpz_set_str(table[18], "2968466585322596449237619022827719449587880163652097027626817718467322855243", 10);
|
|
mpz_set_str(table[19], "16095804063813988453967911872447239838295530386604499438408868735049273550964", 10);
|
|
mpz_set_str(table[20], "574153869797392469626420512342892981518387968872853023272811826397331946711", 10);
|
|
mpz_set_str(table[21], "13197832228561702847936875508764659326248624314945180356504360288540219974546", 10);
|
|
mpz_set_str(table[22], "10019060834683864503797290365830420533439086531546305091131646916696591456830", 10);
|
|
mpz_set_str(table[23], "14146032170258045335058907961471533060542204662800165620458815973333538817876", 10);
|
|
mpz_set_str(table[24], "18486262348994599926858913122559118183502197130806434028413537510222673555549", 10);
|
|
mpz_set_str(table[25], "1028522096216424760459874596015490366781655258798730511901839006815288226832", 10);
|
|
mpz_set_str(table[26], "11252122701355701933193375826691419110786070188200202793945282765125646519498", 10);
|
|
mpz_set_str(table[27], "9659134540210915291452189962493460650012698122159422507471459638724127172920", 10);
|
|
mpz_set_str(table[28], "4237740433982830275324466894716337961581773197376214300393154355826797778626", 10);
|
|
mpz_set_str(table[29], "3087522940165379740888719303031664198786744684809877590767094217982380142255", 10);
|
|
mpz_set_str(table[30], "11716397164728437678213417729731587985927531163030640256120763340853819008937", 10);
|
|
mpz_set_str(table[31], "8467585026010438916429833569621610998220417444161460762175756019525605725701", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=31
|
|
*/
|
|
void EscalarMulWindow_30fcee75113011b0(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12301124670003480104629696209955193240288495529942186880979835361141701252356", 10);
|
|
mpz_set_str(table[3], "9307408019588658357187250344796855263122925817326642854835543188718545588235", 10);
|
|
mpz_set_str(table[4], "12889310269837866650766227631178608737732446818042182494770160487739767279933", 10);
|
|
mpz_set_str(table[5], "14305043734279423947220285740725380475183130745768863219550754411584785876637", 10);
|
|
mpz_set_str(table[6], "2391506923719369375409285779558753053068939727022649476425709892272625307893", 10);
|
|
mpz_set_str(table[7], "20864182813068571493291027606141058053296680359427218913210461783887562952698", 10);
|
|
mpz_set_str(table[8], "13717112134968028062861345603251284378766588993818047018357278346982666267616", 10);
|
|
mpz_set_str(table[9], "18515498743044454086246214151041857907262552385439225148419555542085380189044", 10);
|
|
mpz_set_str(table[10], "19786335348976756304092292889433409910460897566007278500882917882621771002663", 10);
|
|
mpz_set_str(table[11], "3074827769809993989484080415178258371624563037744089528303415196948826583970", 10);
|
|
mpz_set_str(table[12], "18162151180829928372755578060911956001928586230958178587289038713471477198352", 10);
|
|
mpz_set_str(table[13], "17776431759694085218624709393499209473805046869022372079320360000482906338993", 10);
|
|
mpz_set_str(table[14], "80121474887161448502875808121828257891050691690308063907366279897332426674", 10);
|
|
mpz_set_str(table[15], "4843419163790123104825922364623794542824882520052906884382919792140459556953", 10);
|
|
mpz_set_str(table[16], "16666071898737680227499350945199392444326864033722414091273367827539524589546", 10);
|
|
mpz_set_str(table[17], "15790618304108173362977004189329282439810998759305703492319635725453030891276", 10);
|
|
mpz_set_str(table[18], "21298786101648253356231140242322524750415990857635583683193964724572782162439", 10);
|
|
mpz_set_str(table[19], "9469077346250800622094746156565577116214942734750529481971940153852106023493", 10);
|
|
mpz_set_str(table[20], "21456850850249274154135171415820595010046206965735417729217811813688616616077", 10);
|
|
mpz_set_str(table[21], "11049201884907448465961123562730151208688552421172331584308926191495283017552", 10);
|
|
mpz_set_str(table[22], "17680109269125318633918330735425014560787165382534729605778313493894562814033", 10);
|
|
mpz_set_str(table[23], "12105940730388865636910070010326092011431801565406868479968794675414735004435", 10);
|
|
mpz_set_str(table[24], "15998448577204780769640959835597175674847056349302254252924910141975750546702", 10);
|
|
mpz_set_str(table[25], "20383034396621046865153230386678691904148615554734273752771483670161237587656", 10);
|
|
mpz_set_str(table[26], "17632055737278619134935551593899813532116959098796308479843929174416170691352", 10);
|
|
mpz_set_str(table[27], "4252024702058108422349273682367261490797904543143377995662728796152704556511", 10);
|
|
mpz_set_str(table[28], "15921903558693736739894607602659797433345301139773501452306612307519804566547", 10);
|
|
mpz_set_str(table[29], "3186928242653482242058545037677412687364250196599079917827732761333308912407", 10);
|
|
mpz_set_str(table[30], "1618212084063181650772275232670476780382766932888791386539214173270639457771", 10);
|
|
mpz_set_str(table[31], "14243156709104866279163372078788621001789581177741277344609392836151217049649", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=32
|
|
*/
|
|
void EscalarMulWindow_30fcf175113016c9(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "1987562385945662646693910367847343092839775049384089716572463157188308075703", 10);
|
|
mpz_set_str(table[3], "8757891452444022272769074848185376031107493735804983258559692651450471449467", 10);
|
|
mpz_set_str(table[4], "19340980305207309851017585089745997262181529251660847136498034370423172358790", 10);
|
|
mpz_set_str(table[5], "3171954919321285041707836853210020107918354488495904996405397026691685387275", 10);
|
|
mpz_set_str(table[6], "7456782377446086729279024612560429250976274769697246081157467558013495490886", 10);
|
|
mpz_set_str(table[7], "19234445645972711561269394192820536484718909007253179676571933319495226994795", 10);
|
|
mpz_set_str(table[8], "16929682317265470407359039690863194931815816975546547931080374367647064256560", 10);
|
|
mpz_set_str(table[9], "19002666235123629016806051012708674139843451827352100176996919302145892305807", 10);
|
|
mpz_set_str(table[10], "6126348015647450097257405657436342275063995153655708457720498813798135765008", 10);
|
|
mpz_set_str(table[11], "9019398810484927442106820791015376990909497561299157866082257712844949896674", 10);
|
|
mpz_set_str(table[12], "17863415953714175483513279587917319087576563891891572205528055824063187960352", 10);
|
|
mpz_set_str(table[13], "8433302553989787214424744341013687704848801106557403477261381733289709586454", 10);
|
|
mpz_set_str(table[14], "14623063230015607306024098706334470924537437193017407652107176588600953567592", 10);
|
|
mpz_set_str(table[15], "6790366987651073710778512031322468814673592792102234818936982148022075670382", 10);
|
|
mpz_set_str(table[16], "20064500133499405898892785154968628645182542935850348227069103134829392852046", 10);
|
|
mpz_set_str(table[17], "20334991608678685360887445103532106510564315674897518419719358060729882943577", 10);
|
|
mpz_set_str(table[18], "19233849075555813355095538246937058457522062542751213260352576832992794583635", 10);
|
|
mpz_set_str(table[19], "11937931511526999239383964164191440616023116878865434135897668172373653937001", 10);
|
|
mpz_set_str(table[20], "3731568093789624066895780755446160672883019265449156552179215766149886507985", 10);
|
|
mpz_set_str(table[21], "15905538405255467591537960138855533827262481827486454938952689576394962017597", 10);
|
|
mpz_set_str(table[22], "2972643783787395632847083734065232167867024701532612424780013471894868770333", 10);
|
|
mpz_set_str(table[23], "20316740349131428410943126107596835884295112832905312743893243359220133727084", 10);
|
|
mpz_set_str(table[24], "1960178824787487349647288822651699000969888333819782445927381191796723810131", 10);
|
|
mpz_set_str(table[25], "12036356908573792537467559899293737511912789293829616811448276054062929883982", 10);
|
|
mpz_set_str(table[26], "9115608859141528355028388236342491327552919424434987456051647357715965409255", 10);
|
|
mpz_set_str(table[27], "8551717131727089574523063290840548020336854090491082956430810385876964221685", 10);
|
|
mpz_set_str(table[28], "21222352143328980324755794773369156504454642044174057872189384824224669257352", 10);
|
|
mpz_set_str(table[29], "19343194935775817015099439816586333125932842648021710724281827521375707848849", 10);
|
|
mpz_set_str(table[30], "11663391309937873736825812371477290450289652024371047570699375639101355311953", 10);
|
|
mpz_set_str(table[31], "2515730073902656808459386919133675526962721062613890750954892324223322974096", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=33
|
|
*/
|
|
void EscalarMulWindow_30fcf07511301516(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "21756303931496901479512413651365731199202229621077509772849222281044626245113", 10);
|
|
mpz_set_str(table[3], "8725750782645177585080332051375050645623740711653508634989973817337008664220", 10);
|
|
mpz_set_str(table[4], "20634629382518387554674166128653694481727447372522727654033011816022092201626", 10);
|
|
mpz_set_str(table[5], "21039321163642083842809215867461484613860959195907164380413721780084042870711", 10);
|
|
mpz_set_str(table[6], "225606947902114440810583888145686785809923984244160520131996957352454984482", 10);
|
|
mpz_set_str(table[7], "3064605424312709391908104292550310731254091300296409862723660210147559805289", 10);
|
|
mpz_set_str(table[8], "7190706601647508333078532495568146288215874434500743046425625070403115923655", 10);
|
|
mpz_set_str(table[9], "12430673783156026320130445364595492282638745868546980155799381906377088256004", 10);
|
|
mpz_set_str(table[10], "4559640081943605705720084643420503840504693575886754910308365642877297098554", 10);
|
|
mpz_set_str(table[11], "2898684694364630498707286048903815763033802006459876164161498942054395505522", 10);
|
|
mpz_set_str(table[12], "11389247371329831831884637607778951318378921139390851830184799576855232696501", 10);
|
|
mpz_set_str(table[13], "3785893182928926260340675059968265462347408831875971557698622701254747198238", 10);
|
|
mpz_set_str(table[14], "2497619489319855994858479753102789311872840425023916344226023465467964699089", 10);
|
|
mpz_set_str(table[15], "13043314535128655789781062111777793546048506553985651239534755825610261090906", 10);
|
|
mpz_set_str(table[16], "7171760700816251997911831726399649106826637842548063915366276296206458718630", 10);
|
|
mpz_set_str(table[17], "18215045618028261624107985681381272839696967888716014580889635383365024149513", 10);
|
|
mpz_set_str(table[18], "9621276160928162422393959764258033063795244588767703387186261740413228942973", 10);
|
|
mpz_set_str(table[19], "13238365674687039574916488599843525471014018476269771360356170970334927678488", 10);
|
|
mpz_set_str(table[20], "19724803198901561035147579900177938153203768755423051188063703168446022875208", 10);
|
|
mpz_set_str(table[21], "1924221348606428584577290726141773680109852466353247005405512283961520064076", 10);
|
|
mpz_set_str(table[22], "8730989010234778691328223601892526701866121630305702086280895586474481648130", 10);
|
|
mpz_set_str(table[23], "13883942699346609000449295248715540261867655631317836922274460204316697781414", 10);
|
|
mpz_set_str(table[24], "13973005826216764508350304280317977585567663414266317211391732001362385060951", 10);
|
|
mpz_set_str(table[25], "13815279797041280552720186314568403966545737871369705064766559811494734188027", 10);
|
|
mpz_set_str(table[26], "19561393465932093077685648643225631952888007098429905631747001246679379637440", 10);
|
|
mpz_set_str(table[27], "3495615599624531613075333101682602558027669176102938068556954036832042715415", 10);
|
|
mpz_set_str(table[28], "8334162264125275770604558435386557310529163222656981435373456701717868960645", 10);
|
|
mpz_set_str(table[29], "20841669381750057885887054103322811187310039039842891654876784667551679820042", 10);
|
|
mpz_set_str(table[30], "17667977812730381972837363042084318847453324729342983682484079872345697290859", 10);
|
|
mpz_set_str(table[31], "19339149357153080772366193183260489633836757821720736037459126656069926758607", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=34
|
|
*/
|
|
void EscalarMulWindow_30fcf37511301a2f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15875911062199926371498095980511757719974356118017025207452191285271959626514", 10);
|
|
mpz_set_str(table[3], "178747139732714499671082378739093809492327996372156726066416590617898897792", 10);
|
|
mpz_set_str(table[4], "7826654783429491017258147921041846249791161901149002238150638794321830395466", 10);
|
|
mpz_set_str(table[5], "13589397323854251814694731690768876400203004058286434214394593469708911021909", 10);
|
|
mpz_set_str(table[6], "20474756699133628477155925021937931128901864955506400481942743049903057470497", 10);
|
|
mpz_set_str(table[7], "5070941903020989692858102574665936456775364670539480939096160579330819773136", 10);
|
|
mpz_set_str(table[8], "4851169054918724584797688887483268238090417195533115328593173416927962457465", 10);
|
|
mpz_set_str(table[9], "10926179252005275564312492417636938548954690361385735439014396653931617545567", 10);
|
|
mpz_set_str(table[10], "50870938189711798761339858280641577937686355457268642871182135126856323535", 10);
|
|
mpz_set_str(table[11], "7323360937512738591748213083864018559576674213848580955293886926283432709627", 10);
|
|
mpz_set_str(table[12], "3361147809642974171867791053917470988562002274484111012130760663512585125061", 10);
|
|
mpz_set_str(table[13], "21122287488565582870435892222316447186168098593188725095516933011060293572376", 10);
|
|
mpz_set_str(table[14], "6957080009403386084693930686666920767604636483237773825378016660670217450999", 10);
|
|
mpz_set_str(table[15], "18933299108429235814487234324948510770039854597122547655549148751156789810097", 10);
|
|
mpz_set_str(table[16], "12193850678285567692848004866162198150237347520568427590247067967887960986075", 10);
|
|
mpz_set_str(table[17], "14650061018470073268723111844708350180773118348766533830577515284703355500339", 10);
|
|
mpz_set_str(table[18], "13474642233583180862540646115339515160589137028802007375276756730675411981509", 10);
|
|
mpz_set_str(table[19], "3232529435799214083021210427621210461704243940371525991379809573537419651715", 10);
|
|
mpz_set_str(table[20], "7928426861722110822278295237794149074980335794858757948340645606362065105478", 10);
|
|
mpz_set_str(table[21], "18482992353328856173249912164808336068691077969903999000703028830266638403092", 10);
|
|
mpz_set_str(table[22], "7885410042741481856095142430405412246616464845970522866351417874443041943470", 10);
|
|
mpz_set_str(table[23], "13816036465793603113901125066934917631143544428639505419021638855621178558448", 10);
|
|
mpz_set_str(table[24], "7907006722882189272851830618277571950124782196948954178758656984060426365930", 10);
|
|
mpz_set_str(table[25], "14036232750243678850242371102012650857610918619078088892968157641464511852612", 10);
|
|
mpz_set_str(table[26], "548910524703631901211481525286650441451464591735674477188236238312250964107", 10);
|
|
mpz_set_str(table[27], "14595793516380258731812663858971909237728845486560758279415060491055277721031", 10);
|
|
mpz_set_str(table[28], "18247996309089901700294917733879214735670249909299393623729083621866226148130", 10);
|
|
mpz_set_str(table[29], "8561227795221367187366439945366474615644110956125128709866671383597389957859", 10);
|
|
mpz_set_str(table[30], "7635325038301394085706955518139576271494920766053291956119121728555795660341", 10);
|
|
mpz_set_str(table[31], "3216431125838619160627662521470266821095667137979717515383198656492642642987", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=35
|
|
*/
|
|
void EscalarMulWindow_30fcf2751130187c(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "19105972882465355968133968061599637386179323537954194804073526782715611172996", 10);
|
|
mpz_set_str(table[3], "7764177565781562658969507170513918415400512021803616479767672855162379694117", 10);
|
|
mpz_set_str(table[4], "1646624596747509919420189126098586291442688782962040881882614036477851707528", 10);
|
|
mpz_set_str(table[5], "15082838508095945226762954581603391465662539925585231711520752514774904361605", 10);
|
|
mpz_set_str(table[6], "3382267008855000041616537578603950401596264548552538079496800417543291685078", 10);
|
|
mpz_set_str(table[7], "32870561403517543384374536882134534212017552792479474943765903319547414975", 10);
|
|
mpz_set_str(table[8], "476291833740146946129003667189933144953335610885887740174317848317130452767", 10);
|
|
mpz_set_str(table[9], "20484817482473367824156335970221123194761585452808851484408185961973461776087", 10);
|
|
mpz_set_str(table[10], "16564192402167974022139753888776796245007144426677586725580707576766649879505", 10);
|
|
mpz_set_str(table[11], "8386225926174280867762789968367434548789461340186490095158218478357499017719", 10);
|
|
mpz_set_str(table[12], "10073059428280416425828586204716528007198542840481172840670934563779162970926", 10);
|
|
mpz_set_str(table[13], "2798224432626616596039794854931760136250426588006449740194523811874646454736", 10);
|
|
mpz_set_str(table[14], "18053108463271355983079034628588459779758647994763557450012049690319368905228", 10);
|
|
mpz_set_str(table[15], "20993193069144636687107623928234535950528660052627837752874632244972554387297", 10);
|
|
mpz_set_str(table[16], "11655462847984269628391286719092071922510652621089935459903649151442391942076", 10);
|
|
mpz_set_str(table[17], "4189777862540452062035297177578940825117316771214598390681468741235237790670", 10);
|
|
mpz_set_str(table[18], "5543622901036320653695486873095241852154061430518364721226978243718863278928", 10);
|
|
mpz_set_str(table[19], "15549895581449726301857615376506567780637387081865274544358777437902226399776", 10);
|
|
mpz_set_str(table[20], "17931687619868426608254670027365897440067715468934535360302046861036691577569", 10);
|
|
mpz_set_str(table[21], "17482475084894962593835908572222795445468070938818092545357704781484709545223", 10);
|
|
mpz_set_str(table[22], "3538625899272821360338129339049061851825270824215536174082543028052243231308", 10);
|
|
mpz_set_str(table[23], "12227906941688482886243954521400791627617312020648935335114958440526736553724", 10);
|
|
mpz_set_str(table[24], "6635257779031831721200069664183269715686395165729111986270810641356554167099", 10);
|
|
mpz_set_str(table[25], "7462699467288352369914718340460407745225128237440659610297282066152490210719", 10);
|
|
mpz_set_str(table[26], "10612002187669735643090131466001153037401627348192663306317880994496511260439", 10);
|
|
mpz_set_str(table[27], "9575732335316919849712785071501363014533628017161728697144064693135872116928", 10);
|
|
mpz_set_str(table[28], "9240053069034767684895599163947942758818855492800226017425147997071268628233", 10);
|
|
mpz_set_str(table[29], "9432209020651518224438803512820455661009460501216687835750400777016900928319", 10);
|
|
mpz_set_str(table[30], "887344954239839119673219826104134921418825251582873014423002723166210705679", 10);
|
|
mpz_set_str(table[31], "17370129818504646684422337943316948923256683377145864511684064533421084098090", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=36
|
|
*/
|
|
void EscalarMulWindow_30fcf57511301d95(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "3134277644149395589798238525001585145804726105235070344560312350098318553102", 10);
|
|
mpz_set_str(table[3], "492137894928921384404811315076636299462987253351879552905638427803058414676", 10);
|
|
mpz_set_str(table[4], "18618091472863605759355021526677878877211451741600617028363561905200756085911", 10);
|
|
mpz_set_str(table[5], "10606051341588708591856167721668627982640129705172986724126605967758014101227", 10);
|
|
mpz_set_str(table[6], "9962252130421610724008493273955786344316016161501222291182529879262943795871", 10);
|
|
mpz_set_str(table[7], "16331662811616843423781934137472249327900397053960179436801541650865030516908", 10);
|
|
mpz_set_str(table[8], "20988771140156397715109240902745734263316566201217551914011102762866999662666", 10);
|
|
mpz_set_str(table[9], "8382959281540762215998129653686486986643532432404074449845553310962903384545", 10);
|
|
mpz_set_str(table[10], "14230799587544104542954334031284990296839610623088696741986319791720539256983", 10);
|
|
mpz_set_str(table[11], "7024963209352607931361358967036486610223827885106218059800428689281300178282", 10);
|
|
mpz_set_str(table[12], "143332440284833347173135475791749100543122344865203025317947054996701120256", 10);
|
|
mpz_set_str(table[13], "2042590466849023084234319860523612374101893006449921466561156857750142003767", 10);
|
|
mpz_set_str(table[14], "21473088632158949864466003722741178667555564739692599687334725690447722476702", 10);
|
|
mpz_set_str(table[15], "16650122474727879712307502780978082165058922591199066524102706084342864443823", 10);
|
|
mpz_set_str(table[16], "4990310450798232340598523273823745347423381097438895702622441590224125599082", 10);
|
|
mpz_set_str(table[17], "18664071485285166972514972705309562799116532010832161194738232757934584835181", 10);
|
|
mpz_set_str(table[18], "16820010279164699934670644778900757227383978000107596487283398723986831521561", 10);
|
|
mpz_set_str(table[19], "13835982601213904303487259327966023981733156506775649823853120583095076798968", 10);
|
|
mpz_set_str(table[20], "15389864463529977131259669654319107748561320836585944018779149041793082845213", 10);
|
|
mpz_set_str(table[21], "4811473078694343992282194499937363963492432559104467724916741342570078214451", 10);
|
|
mpz_set_str(table[22], "18990364719958310625290086296555771631732599381935412730967361413617098590151", 10);
|
|
mpz_set_str(table[23], "2795560767435199033978857207073607926950726617722149039943714185150684856475", 10);
|
|
mpz_set_str(table[24], "5372467964500217032851945452364399931206831760982400813920536889636758526890", 10);
|
|
mpz_set_str(table[25], "11291553082756704031480826205080301885301783043410656942539002186145275372779", 10);
|
|
mpz_set_str(table[26], "21792462695743873130178967900171157227868844462523713519883406160506641807270", 10);
|
|
mpz_set_str(table[27], "1110502247519702978707690098064843437978028686586712085416783072543930293413", 10);
|
|
mpz_set_str(table[28], "13002723368040994700073555297594529558543232181362521412469563541536486258562", 10);
|
|
mpz_set_str(table[29], "13749292037176590362234769166004419323606491235037343710701109765540275127757", 10);
|
|
mpz_set_str(table[30], "17971171973018167548753280244521054107922732029025548064108840466202712007191", 10);
|
|
mpz_set_str(table[31], "19630976315194062829888798934464004981499784836820504114915256012498295750915", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=37
|
|
*/
|
|
void EscalarMulWindow_30fcf47511301be2(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15033084295415377899075672151067308172745577382932608490904255938034580017189", 10);
|
|
mpz_set_str(table[3], "18216429734524717572824506734310306558154695810389547189875150902391959814808", 10);
|
|
mpz_set_str(table[4], "19006769156414964283197192658234148565197794094657317924619012676836860745309", 10);
|
|
mpz_set_str(table[5], "10140898452815482026842874984926258810031513573833549856364943398111389797107", 10);
|
|
mpz_set_str(table[6], "14031685555824062851073204665630622819718062184406549090904664320798076246235", 10);
|
|
mpz_set_str(table[7], "16443842820060580616590128410805970736451736956448643517593264245113182685029", 10);
|
|
mpz_set_str(table[8], "6431068573893536681227243771736905387656641815816688461535514493399056573125", 10);
|
|
mpz_set_str(table[9], "10873982177484819097996972273718769451814707052359429578637864974710726515973", 10);
|
|
mpz_set_str(table[10], "13136972641315045313883116158727523534674471574172120293593555162059935597588", 10);
|
|
mpz_set_str(table[11], "6528993031293690663390442599632660899449176481350346721205087030291261764711", 10);
|
|
mpz_set_str(table[12], "6874575649615588047260515227448774342689963112989853566355996850018547554417", 10);
|
|
mpz_set_str(table[13], "10072048383934424725303195345505299070672768280359087159240917808448672076599", 10);
|
|
mpz_set_str(table[14], "10006731266850431279012029989413252980507835344030681669302967255466466028191", 10);
|
|
mpz_set_str(table[15], "6725934438062502768377133448637447707769992358994904391716968897398254776481", 10);
|
|
mpz_set_str(table[16], "5665086430375521811021079668340685674067765252832818380242061759332107516355", 10);
|
|
mpz_set_str(table[17], "13079593700406862756309942094128818177154132310127710766400054203190204553223", 10);
|
|
mpz_set_str(table[18], "18371471894633819019596390270741904487270133604315411219207029529355473605867", 10);
|
|
mpz_set_str(table[19], "970279623878251530170601697875085394591542870416750273540480900892501517239", 10);
|
|
mpz_set_str(table[20], "13100939035978337400631123515652328406642787572990259147859441137296651813651", 10);
|
|
mpz_set_str(table[21], "13492211672685736030356122135551815466231691938892805298235372694065605825621", 10);
|
|
mpz_set_str(table[22], "10122849326492874551111116990054338322366818097827111821588092026888668533463", 10);
|
|
mpz_set_str(table[23], "3956914408265548727661516564055951244821552912170745144335485985302543031018", 10);
|
|
mpz_set_str(table[24], "12356430445803491164753468866721143365076177499438595124922984167209124264899", 10);
|
|
mpz_set_str(table[25], "6135195517452507756027915425053985250963029629802258712315758045928998558601", 10);
|
|
mpz_set_str(table[26], "20527980582038388419881158914832304222194911009063924317098044017085773171619", 10);
|
|
mpz_set_str(table[27], "11780932279096137561868909609212337619381412261079856215316476699575347566409", 10);
|
|
mpz_set_str(table[28], "1453548475925512572534863462892594024098066032582628181531404557186203050203", 10);
|
|
mpz_set_str(table[29], "10158581436776447839842057121724993240189958866018234013424995131171362364965", 10);
|
|
mpz_set_str(table[30], "16414541315470314627103213743353857715817684493883256629996232386138013667740", 10);
|
|
mpz_set_str(table[31], "5223509892848849453996301604693671081120141288501189854323407016278864411204", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=38
|
|
*/
|
|
void EscalarMulWindow_30fcf775113020fb(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11874327887513741187258035887212681462779759981094241684182313669225630438983", 10);
|
|
mpz_set_str(table[3], "4970235062395747284407832248453332835009484963076188523341014818372997303205", 10);
|
|
mpz_set_str(table[4], "17494953592715517721984200996388779526673020827341434155185482004105163437849", 10);
|
|
mpz_set_str(table[5], "16547765288481988729542455365289917021218131320286791852003095330268996692876", 10);
|
|
mpz_set_str(table[6], "5899833364008475094579927540530164666673640203356174188766808099140803256427", 10);
|
|
mpz_set_str(table[7], "8494650827031776378865624807029340967103184613850792104438643971944997523032", 10);
|
|
mpz_set_str(table[8], "16841443408975559401328562449699456210617910172550802774602676509306544483827", 10);
|
|
mpz_set_str(table[9], "17032386670898917105796563566491368189432531873173626948415576725093932509784", 10);
|
|
mpz_set_str(table[10], "4648108508063740788377643068156844411882865146061374771558465152281754629481", 10);
|
|
mpz_set_str(table[11], "2839148012480814949170466377095476137667835432277338954622504273217155080339", 10);
|
|
mpz_set_str(table[12], "4256551328942262172848066726195492939194222999818547185158522026036892114684", 10);
|
|
mpz_set_str(table[13], "17198288963549854730286824086231132877746107386581720065370179913908975094386", 10);
|
|
mpz_set_str(table[14], "21865735427984562307991529474671226931608710073734225296360345046602706633968", 10);
|
|
mpz_set_str(table[15], "14916476243974180114595077124226650061075948639814563322019481754135738076333", 10);
|
|
mpz_set_str(table[16], "5879939089268925421921681046756130811259733477702135897439505323928364710970", 10);
|
|
mpz_set_str(table[17], "20347262593842271671229320419836552109247710173879611698547632471527726494909", 10);
|
|
mpz_set_str(table[18], "2640441625161927823792890035470599675151234935487321583454236484659932057069", 10);
|
|
mpz_set_str(table[19], "13963169307457239860607226415944051870718399972152987616955557119213414013108", 10);
|
|
mpz_set_str(table[20], "20380181724127989271008942748060678368139061741838900631588531050383412286352", 10);
|
|
mpz_set_str(table[21], "8342484236577122462720299190847945387862385488327061913375291201980424469065", 10);
|
|
mpz_set_str(table[22], "5483041388647837327969193730715072222586519722134732524532808895297572886588", 10);
|
|
mpz_set_str(table[23], "20436016770728851564566865060939551896079816738215114482752203196367388889141", 10);
|
|
mpz_set_str(table[24], "1019493181818227232907888408216461176176468210350250647565448907483898972254", 10);
|
|
mpz_set_str(table[25], "6364560952232383929430683276761542287874119419461320463353756476512657907944", 10);
|
|
mpz_set_str(table[26], "4812206481530139718553394040674444505340783035685138858504040063931499404813", 10);
|
|
mpz_set_str(table[27], "204452113743561666620364375314510740201117562475070886347238746011154918182", 10);
|
|
mpz_set_str(table[28], "18476533153808399685798386939061271260417747857929122416289595284488122477727", 10);
|
|
mpz_set_str(table[29], "6711373593388755772156975629686862214280855835326244709606501035446117780391", 10);
|
|
mpz_set_str(table[30], "21216491588992448172266750355589972929276308392321473037834130236777788984394", 10);
|
|
mpz_set_str(table[31], "8489813618916172043542594776958371857465600082040389986658003865115640193026", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=39
|
|
*/
|
|
void EscalarMulWindow_30fcf67511301f48(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12758000968802636125517404458920772151792919082944194798001426726847425858117", 10);
|
|
mpz_set_str(table[3], "11594801851424409558024957917202192337988106426213427874499939959553823821732", 10);
|
|
mpz_set_str(table[4], "12035560600731380039763373639833995299793000379132989733130584239231044477693", 10);
|
|
mpz_set_str(table[5], "12946420964799654584575455997250813830517562317038225662965198193809456390432", 10);
|
|
mpz_set_str(table[6], "3138586264871376800262214484142803825304275303095300155503606735980839786503", 10);
|
|
mpz_set_str(table[7], "19430479698416667468741339402187216221020517340798712072888080109400820649858", 10);
|
|
mpz_set_str(table[8], "13195428079589703946578289363366533057406713176052423601806370321468805305700", 10);
|
|
mpz_set_str(table[9], "20808624548825445938495064916983231218414937777498166314196718589444207682122", 10);
|
|
mpz_set_str(table[10], "18589396410849897308831931728632723483846217038649676908746987325778293857028", 10);
|
|
mpz_set_str(table[11], "17173242863084370640380968588523839402675365466547040119136319020241485003151", 10);
|
|
mpz_set_str(table[12], "6026114531099575223979460888670319934925690821987331473931156018640076076963", 10);
|
|
mpz_set_str(table[13], "10944522828858039019132510434937282740521606461351486749570217442036478845874", 10);
|
|
mpz_set_str(table[14], "34150059281764650431821436908228815954757841984565927419185000363817641282", 10);
|
|
mpz_set_str(table[15], "4478119007167091196834401258278180621830543151764559811059282865138801682023", 10);
|
|
mpz_set_str(table[16], "3283788056071665545396685111925954081473640926114876273822794894244113795831", 10);
|
|
mpz_set_str(table[17], "1766115830447063643744016651508878884243885328299078624059122133526368219261", 10);
|
|
mpz_set_str(table[18], "2451271247015725100549068687208319421198166364456868701671925125981675685112", 10);
|
|
mpz_set_str(table[19], "14873404453921610533921074080989065234867509765014738886052042258773943459793", 10);
|
|
mpz_set_str(table[20], "14172397620216105504083628687138549871525109427167850510501112208248415712850", 10);
|
|
mpz_set_str(table[21], "5192991067265193547443926558117386704414333051212030814224141793648634711411", 10);
|
|
mpz_set_str(table[22], "14451519960893134378643444131639362432973374084051839573757703575714664653085", 10);
|
|
mpz_set_str(table[23], "19619914535909988164032934839018912342207134355088178795472511828926528454508", 10);
|
|
mpz_set_str(table[24], "1996048653261175746716291716850870413553500006476319575131932677472524980479", 10);
|
|
mpz_set_str(table[25], "7551492955245066431272820191052776845785782872554634205646809869918788321855", 10);
|
|
mpz_set_str(table[26], "9948214574963398273322680866422503861483935571775486104786112990838651071848", 10);
|
|
mpz_set_str(table[27], "18452906734585337124549455227510883759059747575010379045925578424223328418119", 10);
|
|
mpz_set_str(table[28], "9762064078805639645016504297589367085397017954782976213355221692823382882998", 10);
|
|
mpz_set_str(table[29], "20563234881495021119581745331271038081710250934492836574777376255333871636690", 10);
|
|
mpz_set_str(table[30], "5000068642251714369669555299697048083562649973594517218636586467895799540489", 10);
|
|
mpz_set_str(table[31], "8595196622384633454709610183673330654472199308943912085169927326308549471103", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=40
|
|
*/
|
|
void EscalarMulWindow_3100757511332cec(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12416241616792737509661702710359503722367059164242541992444845969483552004395", 10);
|
|
mpz_set_str(table[3], "13559498164610241744503598095521949842776090366949329140964432317484133961232", 10);
|
|
mpz_set_str(table[4], "13602037497083884501377762498018530382249266099268581729423006252758784149333", 10);
|
|
mpz_set_str(table[5], "16341441975129912256351056417287499894519389468726043809809613413613147289278", 10);
|
|
mpz_set_str(table[6], "1363593728785650925576980135823657854638236776562875613511914041272537461042", 10);
|
|
mpz_set_str(table[7], "21082936985101748657767517814409045314624794729585842931044949329655082036400", 10);
|
|
mpz_set_str(table[8], "9054921689762709790540716778668352250371073098762972776282806439527056273694", 10);
|
|
mpz_set_str(table[9], "4554807898339846001515632516328488763903664805996191151739605897820823846452", 10);
|
|
mpz_set_str(table[10], "4712431409656243716910572291678394340769967388981856320454016232528062515749", 10);
|
|
mpz_set_str(table[11], "4507080617568969332017984410692061656934228651769330596007178531196335064209", 10);
|
|
mpz_set_str(table[12], "1111100525166241937592879343881048191451102619880902725042523612142597032511", 10);
|
|
mpz_set_str(table[13], "17832951620169455701576137800654410758965265005827783809713607234971300513634", 10);
|
|
mpz_set_str(table[14], "6826584469996085018476254532009830477855832699624153285643838159296646008653", 10);
|
|
mpz_set_str(table[15], "4272009148619158782753656212068594551784574759338556048800461553575470168155", 10);
|
|
mpz_set_str(table[16], "1966182434773021004759363170544682577489246499753938055587165741426931171285", 10);
|
|
mpz_set_str(table[17], "1574773852853564326666662024177293437429719653234453470335149461587563846708", 10);
|
|
mpz_set_str(table[18], "3641141430839882104144484214566266790870521952218086544644759402963239647270", 10);
|
|
mpz_set_str(table[19], "14550981677262773796844315364795574328117252725275857863037073236245940606181", 10);
|
|
mpz_set_str(table[20], "8520357843575486535139001093873885270186652438063358503380653301056230899457", 10);
|
|
mpz_set_str(table[21], "19116621288700210204594414028863120716295042984740909157500986113678452206567", 10);
|
|
mpz_set_str(table[22], "6674612876670126891390045970534378967324714292998335658450716143073994306222", 10);
|
|
mpz_set_str(table[23], "721853364068464252120707348651008351258384110986232377002281880792049360941", 10);
|
|
mpz_set_str(table[24], "2608955336401820892781854749570538419317313539014235967690520596508846574408", 10);
|
|
mpz_set_str(table[25], "15242743804905463959456340409683908034115411985421257125934992762956817176425", 10);
|
|
mpz_set_str(table[26], "17443065644622572935481296196982646171338838498244741303833379140760571805077", 10);
|
|
mpz_set_str(table[27], "6407580971358881456152654133684121554848206732398504964455418248939062349362", 10);
|
|
mpz_set_str(table[28], "1523162805231210281753340210101792086967642688671673058886085066928039581400", 10);
|
|
mpz_set_str(table[29], "752832523310484818333298184041250205580747820420383766133420289175435035632", 10);
|
|
mpz_set_str(table[30], "4884576585897242673474713654411440662206841240531482194621018476423458323503", 10);
|
|
mpz_set_str(table[31], "16029582673014354221316799149860373259359022505191972894672595945608109987625", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=41
|
|
*/
|
|
void EscalarMulWindow_3100767511332e9f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "13507448775409688610473704225149413899988757427237348844684485592340129833964", 10);
|
|
mpz_set_str(table[3], "6118207740932454885806113827712155924554153678788155800600460093916101590338", 10);
|
|
mpz_set_str(table[4], "1701898783674169906740415414316237098366095355792165851633864280819588372162", 10);
|
|
mpz_set_str(table[5], "14425537442241009422770132058332867169394883792129559219515124143806642633304", 10);
|
|
mpz_set_str(table[6], "9324515987868048857617401069933950063586944995700400183083907580534524932224", 10);
|
|
mpz_set_str(table[7], "9662952566311686763072589113030480169358453591071215328124464730194883520235", 10);
|
|
mpz_set_str(table[8], "1189506187705813369442395960227473829641911009702951982743435208704207573868", 10);
|
|
mpz_set_str(table[9], "19436347075372374907100828314510499659668044878353375496229033293996081722349", 10);
|
|
mpz_set_str(table[10], "20205904123700913671651218823538112107997470076449908795953454939840783364503", 10);
|
|
mpz_set_str(table[11], "288718742844439137704045321535953567336649753169422464863321666846748345967", 10);
|
|
mpz_set_str(table[12], "4460441508583233426147538295225287248510465330166238424872864971296458127284", 10);
|
|
mpz_set_str(table[13], "6478536223777685864876251312455070551443374015433636976190739677044372162998", 10);
|
|
mpz_set_str(table[14], "20925400990901621889819562873973538568814566409490572864161346582539148206591", 10);
|
|
mpz_set_str(table[15], "4101997535405021140720700009494574849271730623605759663799043760728831602936", 10);
|
|
mpz_set_str(table[16], "20662675753403998558683414937410453812713669481364448142786870767718572925901", 10);
|
|
mpz_set_str(table[17], "7088564762919676079206774489341460053754796821073011885622534869406716514503", 10);
|
|
mpz_set_str(table[18], "14934684914487148200920724983087363407583252844941926979028795416070052428114", 10);
|
|
mpz_set_str(table[19], "14958372150879485968381171596136496415998652302678723608467328279471237268019", 10);
|
|
mpz_set_str(table[20], "20136538306200729077084402936709392126605176265339765762795540078131168325578", 10);
|
|
mpz_set_str(table[21], "1871594192909772081805577268488744157883073569926388046680911092748426224484", 10);
|
|
mpz_set_str(table[22], "4131515834290860929705701423376205747465872171321844651998782609675637193211", 10);
|
|
mpz_set_str(table[23], "7996044384742222455600456995999790841735962093593402634912201324677304684546", 10);
|
|
mpz_set_str(table[24], "21162277078212917664345160709854314426971259537592075201465404332420072210727", 10);
|
|
mpz_set_str(table[25], "6748179157560672802686392750429920132668860999027876242728832073333295820770", 10);
|
|
mpz_set_str(table[26], "10661425994038126158788969640861461118154815293266871375752043371342723613251", 10);
|
|
mpz_set_str(table[27], "2982585129520999781830352123712961692964129858406931354724677038761402294798", 10);
|
|
mpz_set_str(table[28], "9504007241560372327381200775770032453104430971136546432677165434175259621393", 10);
|
|
mpz_set_str(table[29], "10586472870678352216787100825335108059933635794036120581460845709798847306139", 10);
|
|
mpz_set_str(table[30], "6240355571552953538822109870047345727286138997302706715224040239630061955152", 10);
|
|
mpz_set_str(table[31], "2652918044312270523261795033407149966429403119867662155572996806126569182319", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=42
|
|
*/
|
|
void EscalarMulWindow_3100777511333052(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18622474418000713621427585433905734564753749154887074022744752206320244565988", 10);
|
|
mpz_set_str(table[3], "1694169127962983890158516524134310542570106792347197035731699112926898926002", 10);
|
|
mpz_set_str(table[4], "11938027776676130589849031629817961353625925794756643778300260107738378010820", 10);
|
|
mpz_set_str(table[5], "11050897949244235833248257229494011847396936066610396327047653390138834919222", 10);
|
|
mpz_set_str(table[6], "3159875049229288470022629277880117106258950649226874802693450990126905093317", 10);
|
|
mpz_set_str(table[7], "2241757845451216840480925431659171500634864740063913456227940181787260251674", 10);
|
|
mpz_set_str(table[8], "17430978066692280973704505096992302251736874070106867047106336932096814073315", 10);
|
|
mpz_set_str(table[9], "14631855299055935058545789298932254510553541912356291150320612930091112647754", 10);
|
|
mpz_set_str(table[10], "19516696988698721408017104475846450422800415928323414574172851128053666589447", 10);
|
|
mpz_set_str(table[11], "14867521286941727030431861808845332559456135182257719802632635394588730790980", 10);
|
|
mpz_set_str(table[12], "12220311138793944886062630150399915041818752848128770767703106604660700808495", 10);
|
|
mpz_set_str(table[13], "8720381016862821617780729179111522229150832087647171887341436591935170191079", 10);
|
|
mpz_set_str(table[14], "7196542366148061767476558401022766517352936022145989665473022411077445751494", 10);
|
|
mpz_set_str(table[15], "15394878384635277155635633917034592383273995682649366150099036179089317668851", 10);
|
|
mpz_set_str(table[16], "1103842342789030280974482417188564672533419579724060997600685285578290324142", 10);
|
|
mpz_set_str(table[17], "10860407578751763297701982269854806389189047221870944944951948201418858290901", 10);
|
|
mpz_set_str(table[18], "16747547952349656467023346042637313561034310744051474587396520015007930533606", 10);
|
|
mpz_set_str(table[19], "16094439326071621364720414325561115424704020589036440346269925376000688851241", 10);
|
|
mpz_set_str(table[20], "15208448011831833709820887425658659952260044949101303649007090091558652897229", 10);
|
|
mpz_set_str(table[21], "10536101346112059913885413606344143381638365603933582925260700126473515939903", 10);
|
|
mpz_set_str(table[22], "10476288939447759249526548426154695128756974016703870790093891871801777538511", 10);
|
|
mpz_set_str(table[23], "16539804698862497219464683421474606356626237728450154498918118985527829865940", 10);
|
|
mpz_set_str(table[24], "88706155831643915983643972196732684571843408331379481722180201803563699221", 10);
|
|
mpz_set_str(table[25], "5834195269879572550111739813703742996565008017443123553763260268696632530596", 10);
|
|
mpz_set_str(table[26], "21027943040153833873820518610534107941527659049024514536114842019543003699445", 10);
|
|
mpz_set_str(table[27], "3517647881896881027899596124716528272457060358685945905127151997486216920829", 10);
|
|
mpz_set_str(table[28], "20242408733448373641601973667084439091514388994721580062035009374200510222309", 10);
|
|
mpz_set_str(table[29], "18709534970056258370447686912655905668215804008186678399131807624235856915323", 10);
|
|
mpz_set_str(table[30], "2140382859882670711174208463966823297415144587669537539759088306088089230133", 10);
|
|
mpz_set_str(table[31], "4241523365174956868715681552514426497245992384860590100378872402682268052489", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=43
|
|
*/
|
|
void EscalarMulWindow_3100787511333205(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "7966091176304498827052432677819882274538175937105248704625282697353838114426", 10);
|
|
mpz_set_str(table[3], "9611026006252145137616324600454865831408839266540000631817838452962090281582", 10);
|
|
mpz_set_str(table[4], "15561147416487224635523501176376795227477310470986720606784853942384978181517", 10);
|
|
mpz_set_str(table[5], "20077999766994928168500745568046494546082668191298332163397318168472000094222", 10);
|
|
mpz_set_str(table[6], "20041651589746938158456339331630803469220993689027536834811365190568586931218", 10);
|
|
mpz_set_str(table[7], "7800893302715801200811866216162674032536796426186935773993414011659567799978", 10);
|
|
mpz_set_str(table[8], "6590992522636381425482749474800363644014024576362483302101275181245622937194", 10);
|
|
mpz_set_str(table[9], "8635620547308313824356575217443564422521664326576285468864253017082836620536", 10);
|
|
mpz_set_str(table[10], "19040079330062713559828583511795142209521710618677094400324441892418053305664", 10);
|
|
mpz_set_str(table[11], "19614474699071748675302952261662387921568109672528380029905044989831210612595", 10);
|
|
mpz_set_str(table[12], "21175957023272148912676938255857228014963126246823898230041066128185995810712", 10);
|
|
mpz_set_str(table[13], "15395143804358060528297476684725834284441716491931761775740871367012598293678", 10);
|
|
mpz_set_str(table[14], "3933045872818026578468171051671407248485967214972068685269644697708555060400", 10);
|
|
mpz_set_str(table[15], "9816803334151315339930488390829798076307170165808853158279946148440821758048", 10);
|
|
mpz_set_str(table[16], "9035369531925138804284221908935804256144988620704151839823382829513678219582", 10);
|
|
mpz_set_str(table[17], "16947575352543059080036876549254184643495673262217222330645975369833500467430", 10);
|
|
mpz_set_str(table[18], "21513814271743059815395879252759987188085206792522148405906651513466446245998", 10);
|
|
mpz_set_str(table[19], "19240503005985922621441764128911287104192477300198109867144736062366145972693", 10);
|
|
mpz_set_str(table[20], "9034505160641394104695820312698051548236743067226799075616989859032028353917", 10);
|
|
mpz_set_str(table[21], "1957743435076165209482433236437363422171588683674981510019917758370477038590", 10);
|
|
mpz_set_str(table[22], "18243815258135988113588132370743533194217032529262861351287344685852542990315", 10);
|
|
mpz_set_str(table[23], "10016537009628746990883717783322778906503462976089117722673791067342330416852", 10);
|
|
mpz_set_str(table[24], "4961086558468591819848728647029287956829849013897925390093983810630579408199", 10);
|
|
mpz_set_str(table[25], "17531972773081893067819248432719094385820081262925543533473643846726624647362", 10);
|
|
mpz_set_str(table[26], "19135920985361256178464326483888951855122649809638008237404088569456910120325", 10);
|
|
mpz_set_str(table[27], "9413731711679563313414982136690879771559493016695950915377851808266188156327", 10);
|
|
mpz_set_str(table[28], "307200760057838356477415312340134834246379021167099904688682827296584816888", 10);
|
|
mpz_set_str(table[29], "12118443903162824133722731168260722579728351979669215745749034964385159933809", 10);
|
|
mpz_set_str(table[30], "12069101818882262634728869954802186682402579206880340206873551830399254013244", 10);
|
|
mpz_set_str(table[31], "19778735655000389981492869546903236453487769726679341233625468787365656346672", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=44
|
|
*/
|
|
void EscalarMulWindow_3100717511332620(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "14888133855634568969061731048798176382027259106004783382378030523919860154203", 10);
|
|
mpz_set_str(table[3], "13970965849274593310478670080351334089021941719911990543665219379821969007096", 10);
|
|
mpz_set_str(table[4], "11143721722430027516116431321209403460927967345298070665259227292966788634758", 10);
|
|
mpz_set_str(table[5], "17710806516977177155131714482239811557674966937531990600624487133526384902313", 10);
|
|
mpz_set_str(table[6], "8600488251208055544855545811981610043085044454736905042231915530225281617623", 10);
|
|
mpz_set_str(table[7], "21215630415439041190958478624099865649899593621773085134337473012438132333100", 10);
|
|
mpz_set_str(table[8], "17332672643904141944192072690667161383740441798638000696411048436282443372044", 10);
|
|
mpz_set_str(table[9], "11849800907307749268559892895203021432861701445205355943086310449407284140883", 10);
|
|
mpz_set_str(table[10], "73464088065988711086908041617643500667352448415533091085897731146601634960", 10);
|
|
mpz_set_str(table[11], "496024715327203322177779323599767867740934623290108355846054589938379051617", 10);
|
|
mpz_set_str(table[12], "11127873028811329981987447865749525171545568669024744657523616483940632629780", 10);
|
|
mpz_set_str(table[13], "7198233336684606986529964414871102328500175958972326417830106303897887721973", 10);
|
|
mpz_set_str(table[14], "14913694501174126440758697245404361553377492549455379131180398401073385725313", 10);
|
|
mpz_set_str(table[15], "3005314020495265723507905833212263195476090414793396176530552601777761462686", 10);
|
|
mpz_set_str(table[16], "6980817897227962418955701279365699080173284836673003097432101710553971348606", 10);
|
|
mpz_set_str(table[17], "12769718016522630653136882998125804429576840542031501958967049606169929933864", 10);
|
|
mpz_set_str(table[18], "8372801751049913005750654237452494667858774846085126355735239789622958021289", 10);
|
|
mpz_set_str(table[19], "16029017521415844253786356649810689741419650863220813264622904633880539582406", 10);
|
|
mpz_set_str(table[20], "19476695748721831355371539753333874690218754373979655272961840699448549036942", 10);
|
|
mpz_set_str(table[21], "21249148456388228260040635070639180377950169791084292599096800719948478439425", 10);
|
|
mpz_set_str(table[22], "19666908137422236458493095910674637931068740198338983087978155870922387055421", 10);
|
|
mpz_set_str(table[23], "19962043380410021808655527387218133530776162882340334281843412159524380310139", 10);
|
|
mpz_set_str(table[24], "3468010851949114845382113514722053775630429483687304025667149478557953613528", 10);
|
|
mpz_set_str(table[25], "952485033363010317308825641797667284047534583490607905985126361447169654616", 10);
|
|
mpz_set_str(table[26], "3589298958967160302755346214401634176256662105144829643230139019476004446392", 10);
|
|
mpz_set_str(table[27], "16200536231075971314902850406932148717264394545765696629404972605399066149687", 10);
|
|
mpz_set_str(table[28], "8283245394328125429498598368340035800499597209031178156217337287155304423767", 10);
|
|
mpz_set_str(table[29], "10415654150818721530480417368530989837888699447816149286986248534082752078357", 10);
|
|
mpz_set_str(table[30], "19936608869334505564629131538306076659812056876589615338471775971008576555967", 10);
|
|
mpz_set_str(table[31], "7893915122914855246036270458773507670378370599202123400411563971872018279019", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=45
|
|
*/
|
|
void EscalarMulWindow_31007275113327d3(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9902616749484961598299692654503365890676603437422923154307898950573675691799", 10);
|
|
mpz_set_str(table[3], "3395360360050596061723679428758009141891424375869776300826995156115704624241", 10);
|
|
mpz_set_str(table[4], "16759530097436699833937131560380929010979008076550131932581563185297522016702", 10);
|
|
mpz_set_str(table[5], "17749228829503576342938283245784412940386305320487349029694202681131696959994", 10);
|
|
mpz_set_str(table[6], "16019315348798958924656194966919246354944408189009303079785898928644558904181", 10);
|
|
mpz_set_str(table[7], "8216345144012403775088320434705996942695231438776147261995169418331802758777", 10);
|
|
mpz_set_str(table[8], "14440595796112049913282722664442349554147163878099887988945359686493740220575", 10);
|
|
mpz_set_str(table[9], "12605747996639334238489995417802206381410126039028758487274734187864039465016", 10);
|
|
mpz_set_str(table[10], "13009043987168785003250435624694433217128032114632509147083558347036380017783", 10);
|
|
mpz_set_str(table[11], "1737719622641036112443264240959326631254886497367006982444346988971566616688", 10);
|
|
mpz_set_str(table[12], "5402498441401440683039757039705451191491706125761996448409021185061150125204", 10);
|
|
mpz_set_str(table[13], "18484457550496918829849336589967339982985444795640923953688712052561096061096", 10);
|
|
mpz_set_str(table[14], "20547719335717833433141075145728552247508140680305051575399619507247198380961", 10);
|
|
mpz_set_str(table[15], "19313330201831445440832645744606517854246644448265728482116030945911524247686", 10);
|
|
mpz_set_str(table[16], "7100315256853920540746824998676905838916534443458914553801754983465825101478", 10);
|
|
mpz_set_str(table[17], "16849157392929048397163558463492215528932487931328319676217271784688952560594", 10);
|
|
mpz_set_str(table[18], "15797869741926155893916467541479674294487274611531570541326412033714120646273", 10);
|
|
mpz_set_str(table[19], "14313110281809416338600909420723893621732008656398753444598800528317518939160", 10);
|
|
mpz_set_str(table[20], "3914943290393121496884237949428970663304012594435377852990275287306505001781", 10);
|
|
mpz_set_str(table[21], "1124318058979586797331748310626565685160446142236665368709166234106699356607", 10);
|
|
mpz_set_str(table[22], "2893881379644810640276884087536490373483491880458849543288801120206740428263", 10);
|
|
mpz_set_str(table[23], "20199722910070788740648772840234850364596102353945926856305972007905172156425", 10);
|
|
mpz_set_str(table[24], "11617526521892329284999100127276159769423755817604517644565972687247042936032", 10);
|
|
mpz_set_str(table[25], "17731656012378639184521520951134837628534894005642573667335920829630957619634", 10);
|
|
mpz_set_str(table[26], "18655161169619551389520669633419272530251074688307521636814070993393159309478", 10);
|
|
mpz_set_str(table[27], "9312678361392757562981301736658794572346304340953222831475831747429389627354", 10);
|
|
mpz_set_str(table[28], "8026517338903215127519545107057104618936966804994911758606567305781040242188", 10);
|
|
mpz_set_str(table[29], "4420792829768540581057154140922823832407188897565071374500706446229403638892", 10);
|
|
mpz_set_str(table[30], "21031462206259523430049295081291282715502825322852454132057930907401048955235", 10);
|
|
mpz_set_str(table[31], "7291628508573742286859498413350068205235090738827285120391714499222553007177", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=46
|
|
*/
|
|
void EscalarMulWindow_3100737511332986(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "5548387197420373117064229280559759249540214731675063068252772286573360393559", 10);
|
|
mpz_set_str(table[3], "21060190259360102308109978814772425159771481899386270152313333608512551921581", 10);
|
|
mpz_set_str(table[4], "8924253549021453448130097568672394207499453879633251861635303976268037324590", 10);
|
|
mpz_set_str(table[5], "3767520902098004358333157008413713800421756763638248885413049088024612992871", 10);
|
|
mpz_set_str(table[6], "16120919439723982428073698067832525849657128737358627524357171024760233301081", 10);
|
|
mpz_set_str(table[7], "21302568348030831548793439322084474036858050371941663100579693115772618396002", 10);
|
|
mpz_set_str(table[8], "15193750343803243351974302566744625709295001369378965611621856790022690147661", 10);
|
|
mpz_set_str(table[9], "11381520182388522999107041957375479209171418071990679048527006696160700684582", 10);
|
|
mpz_set_str(table[10], "19281517936163080077904623851907470976812421337832135046256236571396567616737", 10);
|
|
mpz_set_str(table[11], "3773264838716250734937566175564697693829549894268021176823435716392863598430", 10);
|
|
mpz_set_str(table[12], "19670638646425373167250509029543765062936221072661457050872213035541427149916", 10);
|
|
mpz_set_str(table[13], "14306019539208650080269150394453165191621243028300761767776826998920947732736", 10);
|
|
mpz_set_str(table[14], "1978020746074357142442530668348659743196194762283495030981019716369100297932", 10);
|
|
mpz_set_str(table[15], "11668504484481501606509807830205708358989022945285476233909671588520533245354", 10);
|
|
mpz_set_str(table[16], "13969481256680644954313528790995351228381743947002616906271136745361189403122", 10);
|
|
mpz_set_str(table[17], "2050810515492934568189284128319746705581725695946746145050036906488237641432", 10);
|
|
mpz_set_str(table[18], "13951300416378830085960669458155906650489433141017665561328196110249701790193", 10);
|
|
mpz_set_str(table[19], "18157599193368407628956964573822393397637167009622782513784960388137256216302", 10);
|
|
mpz_set_str(table[20], "15907227475005387219520297424511610083598605969878011738135488093363711743901", 10);
|
|
mpz_set_str(table[21], "13730821743963108417423311899890089348574747966518830744108907565067929402554", 10);
|
|
mpz_set_str(table[22], "3372590181917648349010257342038892667844895431408309450669535389012164486455", 10);
|
|
mpz_set_str(table[23], "18524978917874144121197803093019534946760011171304068324351809360945718674937", 10);
|
|
mpz_set_str(table[24], "16835279148355937739738969774738050152597100987038403110225253774066367358258", 10);
|
|
mpz_set_str(table[25], "10637278176836671026764341994008888346622121755858009734098808602278591502477", 10);
|
|
mpz_set_str(table[26], "5425897873841091984465754729172322328755777268803490072584949066856480821395", 10);
|
|
mpz_set_str(table[27], "11736870819331040275385705196249994148708453792568332019883507957222822774473", 10);
|
|
mpz_set_str(table[28], "17858501372350375892336624826813235305479888079504537810758734955102019315052", 10);
|
|
mpz_set_str(table[29], "21601825311034536724072639663169197332892148022696715023416460319341048286489", 10);
|
|
mpz_set_str(table[30], "17118850945829807733771548332115436318791381764266553317146989012644640834401", 10);
|
|
mpz_set_str(table[31], "21448750768493116141871782622904285645335688515468278845181118618543329422802", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=47
|
|
*/
|
|
void EscalarMulWindow_3100747511332b39(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11386571938819058696803600651408482297604186469440253602029065131145074400875", 10);
|
|
mpz_set_str(table[3], "3348329584264663431122740425482543130026920779856290339414845130037151449118", 10);
|
|
mpz_set_str(table[4], "21047114600430953708706071004607774642804431416815520272692054908406887682881", 10);
|
|
mpz_set_str(table[5], "21108297513642398392891079037955154310896447130401205289652726698454700314870", 10);
|
|
mpz_set_str(table[6], "13294328839868110370752981845818752117578302956908411091430780745377005857374", 10);
|
|
mpz_set_str(table[7], "18078036034494806149219379591645106192975355369001375397939872441709256329438", 10);
|
|
mpz_set_str(table[8], "4406040019663638638192232550330149211760093332829020055771061344319190984745", 10);
|
|
mpz_set_str(table[9], "9627340720395317715736634095409265207478483281312431070088788783813648661688", 10);
|
|
mpz_set_str(table[10], "2669432581523687777213610440790519187316728874641076041550598115629363817810", 10);
|
|
mpz_set_str(table[11], "20076487721079403370493786309193429899282983461517657854782489281379038993608", 10);
|
|
mpz_set_str(table[12], "1199489797481287465857257757156692713998600774749824340898823904200555031182", 10);
|
|
mpz_set_str(table[13], "18992140204723360808052615267597143413166448772645885861757620026587152710689", 10);
|
|
mpz_set_str(table[14], "20456146284928237099805446816310741348744758855341590061575528472105874001557", 10);
|
|
mpz_set_str(table[15], "15339517201853310471404229665186771707588060279267163907068339177208424528891", 10);
|
|
mpz_set_str(table[16], "2004517262136486688934242744041898195916397907544648468949990924775144844339", 10);
|
|
mpz_set_str(table[17], "9308569135981146406059465195904737982179841252578068732943612569462673065716", 10);
|
|
mpz_set_str(table[18], "9545021092430341852939352199287060580331661147216036890617206613703117932140", 10);
|
|
mpz_set_str(table[19], "1047088741471749312205783397711738847354374422073879921247948489039180410249", 10);
|
|
mpz_set_str(table[20], "12318251418478888219821787205340678496055439564106803039338061468546568940517", 10);
|
|
mpz_set_str(table[21], "10337538546031339781288870013594337337226697954742868349260421776891497664649", 10);
|
|
mpz_set_str(table[22], "4468793544093873191477334322379032719515983661750769000788706314088518480286", 10);
|
|
mpz_set_str(table[23], "15598537287667421113148191490051745985220520055514665443619722078432971172853", 10);
|
|
mpz_set_str(table[24], "7705999799023589912601817113066806668419981645493670373115711840958612019923", 10);
|
|
mpz_set_str(table[25], "561977050925919686655468563962476380643304414965639177564903105686927203145", 10);
|
|
mpz_set_str(table[26], "18056819733567999656100318096798714403150765707301199516347448815727309083630", 10);
|
|
mpz_set_str(table[27], "14320442678166458845052510620996957141348538187679119882925658000189820793333", 10);
|
|
mpz_set_str(table[28], "2529879567799889291146044779450592997782983058287035587007276360279146516610", 10);
|
|
mpz_set_str(table[29], "15806258750407171289361134420483747124902342900861663140382310272671577805176", 10);
|
|
mpz_set_str(table[30], "6639369965194342909759207991583959121857015098201173340876194811476624004342", 10);
|
|
mpz_set_str(table[31], "4895372596251639413611472055836862192021256933992055220575837992471288355713", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=48
|
|
*/
|
|
void EscalarMulWindow_31007d7511333a84(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9353407459615507340297958346561680933470740259606277383461922069991640562467", 10);
|
|
mpz_set_str(table[3], "19398333101670992384971347162611893877622578264460504029511112889295265024231", 10);
|
|
mpz_set_str(table[4], "7403409994724747716050199561996316978039299158677650901366467538509050838238", 10);
|
|
mpz_set_str(table[5], "18917954860563263926685927340987151646748002854188679290335681494324790595755", 10);
|
|
mpz_set_str(table[6], "16299744020180598759866194156026069538947788914321316977259846372606007627243", 10);
|
|
mpz_set_str(table[7], "20428219381972295141020235718361303932599621460399678977132239449922316521704", 10);
|
|
mpz_set_str(table[8], "5659214411664535564649203093355510395335232026559720032504558426119407679168", 10);
|
|
mpz_set_str(table[9], "15092553302421635111481611629477791702315702493848394389338147857196307007832", 10);
|
|
mpz_set_str(table[10], "13166084249042114332994859664438204842615652146304356708282981719465735141568", 10);
|
|
mpz_set_str(table[11], "17673083782379108748924817294922193766885348536552290071466462326860960637466", 10);
|
|
mpz_set_str(table[12], "14565295027139525973417394160599614128232882061651390408247261798999395929320", 10);
|
|
mpz_set_str(table[13], "8062181545277483271535396440679586384642208931201088437111423052237410743314", 10);
|
|
mpz_set_str(table[14], "15821592037972182911620794219825075141143608187149937528395667634039551784769", 10);
|
|
mpz_set_str(table[15], "8153028369684305129523651746891306318703818600306220057728192980907570036199", 10);
|
|
mpz_set_str(table[16], "1063806342650229085135728764529656606200018029149619736067507686581528943331", 10);
|
|
mpz_set_str(table[17], "2982981811360879316425860087532220815862242519890918416778490366922666711929", 10);
|
|
mpz_set_str(table[18], "12582349535695322143423603561381068075076209315482001462940962994563617040893", 10);
|
|
mpz_set_str(table[19], "19935473574848222023384151833990427819616776022112860787182552056319120546566", 10);
|
|
mpz_set_str(table[20], "2884448925281478893343813716855900231071667641018762022791880056555064702163", 10);
|
|
mpz_set_str(table[21], "14926342773465730750477861272117437298870443718938673687343741085624607736102", 10);
|
|
mpz_set_str(table[22], "5758662579463739446662635083575409017048944707234528292141988018657531908195", 10);
|
|
mpz_set_str(table[23], "9928124603040159394003729245598556209228022887666592330810606004389358878123", 10);
|
|
mpz_set_str(table[24], "1869034730102509554674627969840286765335813097573133758388100032970976398885", 10);
|
|
mpz_set_str(table[25], "10592769825539820940700993362703512012911979571781099925945743436518415588180", 10);
|
|
mpz_set_str(table[26], "11072503311770318877216813601674108838784353361307385437581289024664123520714", 10);
|
|
mpz_set_str(table[27], "19855780958978300853321667033277163882019339727038990975173701184980151622560", 10);
|
|
mpz_set_str(table[28], "566354030190725048395017374574731553808470890171924604251953696705285599515", 10);
|
|
mpz_set_str(table[29], "9955123523626955280107326070662480078999547830300561534399533357039829708066", 10);
|
|
mpz_set_str(table[30], "2697230334831173532868730371519559758056447985048998202505972675466958264327", 10);
|
|
mpz_set_str(table[31], "11930267608563562353000039410498646040854863336841825719518987251529790356327", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=49
|
|
*/
|
|
void EscalarMulWindow_31007e7511333c37(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11550029292334287077789485474502318318052299166258130708261218890935604689647", 10);
|
|
mpz_set_str(table[3], "4857763993976224954140861996750024065327776640284972342134138976572540524894", 10);
|
|
mpz_set_str(table[4], "16256168611509723213692143713369506432802840510456053811803434681859789384553", 10);
|
|
mpz_set_str(table[5], "7178839995825100234785533347556183854707431028009014034077419141019604121146", 10);
|
|
mpz_set_str(table[6], "10609829441372430717718913870660830683277815475695106585212441832714641430637", 10);
|
|
mpz_set_str(table[7], "9998918340968803462363370889322930126196179286006529740600235981287217329810", 10);
|
|
mpz_set_str(table[8], "1125104159749394439234543238014295578402128933255324392813219835559333359738", 10);
|
|
mpz_set_str(table[9], "8594159416651349591242730002424921274706708542158958317433398196352608677970", 10);
|
|
mpz_set_str(table[10], "7017692829444357600879842552699430298698374463327267749352000225988620732346", 10);
|
|
mpz_set_str(table[11], "17466164696456902630848471712698527167752927017009923072082415339832929140933", 10);
|
|
mpz_set_str(table[12], "9744425590027050988461564385935267533440993325193972937017986833619336298832", 10);
|
|
mpz_set_str(table[13], "14227739722050651388711087791556573924822687250356505382702535397594361936037", 10);
|
|
mpz_set_str(table[14], "3230131584585774248926385942821716282169874391854911678005767733675205044655", 10);
|
|
mpz_set_str(table[15], "19697160053079650655989059630740288322378393421580484729762230320215903199637", 10);
|
|
mpz_set_str(table[16], "20648701228093485830384292946112204035069489837960035313951700675103022162650", 10);
|
|
mpz_set_str(table[17], "12691267430920798044281118146673999830474786071481174759382623191313158539347", 10);
|
|
mpz_set_str(table[18], "166597440278122047371904134111956838594470349283289680958130635740424174180", 10);
|
|
mpz_set_str(table[19], "18171744037005326491347974410890291932933434218272871609584745022502570873827", 10);
|
|
mpz_set_str(table[20], "9340805231089631910361409046402045019597432215502588699487782222045042725565", 10);
|
|
mpz_set_str(table[21], "9895206783152355385887954378305203508286240911475663698452856689415367566578", 10);
|
|
mpz_set_str(table[22], "2051146987385986535645508089819755263283799313709319335415412013582930504171", 10);
|
|
mpz_set_str(table[23], "34557603005374266948930734256584603241220006500329198902896249171416724286", 10);
|
|
mpz_set_str(table[24], "6223661159580897273000792631776630537772036907913573842513714125555053320686", 10);
|
|
mpz_set_str(table[25], "2843656225914017592425178160430427271572144770630196541968366495658765691135", 10);
|
|
mpz_set_str(table[26], "15523223472860409216644948521422754359577325245323266205984623994856959048187", 10);
|
|
mpz_set_str(table[27], "8715820835995449705971255676531530286169212897961162568620102865431554514681", 10);
|
|
mpz_set_str(table[28], "950649793827276410801187686601733569459627376307932906739968078137372101942", 10);
|
|
mpz_set_str(table[29], "12099663126097958814333595809924370708549248803640222184571438444685936088429", 10);
|
|
mpz_set_str(table[30], "5108584720818090203512265121217613228424375410391397432109226473501152101096", 10);
|
|
mpz_set_str(table[31], "8632396216563722878192157965295037095555654129937687581965778657007027599419", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=50
|
|
*/
|
|
void EscalarMulWindow_3103fb7511364675(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "4302627033731539583590881421851582924665874587782832780278195201834216656227", 10);
|
|
mpz_set_str(table[3], "8269095588811032923214868664153512814877236110622329904766222490721228392383", 10);
|
|
mpz_set_str(table[4], "9547865063052360557770267876030406053388864656881550889207839544078046838444", 10);
|
|
mpz_set_str(table[5], "1771776812723859563124571047939775061660634894072771584772618556779200307456", 10);
|
|
mpz_set_str(table[6], "15435831373611488460840624945769402668038669175623385013558990884517063860647", 10);
|
|
mpz_set_str(table[7], "18667806379364163846574250454211001115475166537670228706977821036688470462878", 10);
|
|
mpz_set_str(table[8], "8782796459238222677529178985573056657672177392231773065921077461095340482078", 10);
|
|
mpz_set_str(table[9], "12311607834350777154333415926905788585427269740212726626142184702313820817223", 10);
|
|
mpz_set_str(table[10], "21697300200635238974864434785387906311551899594743079094700670936659536107841", 10);
|
|
mpz_set_str(table[11], "6813749232360402523776121131742703327539853366563439709701491235079391044070", 10);
|
|
mpz_set_str(table[12], "3186056671027403872325989864619410550284386117976877816245426932966706316283", 10);
|
|
mpz_set_str(table[13], "12829341780144579953714269710817954657899398333641530263390006961642073756686", 10);
|
|
mpz_set_str(table[14], "21370131215705685202668400547006851375616294060930093086310849174147518568254", 10);
|
|
mpz_set_str(table[15], "20261619886486820068565723052297241484458048899407370085251095582630773272894", 10);
|
|
mpz_set_str(table[16], "9317048267655864688341982626198820196421333150410827172631470410889510852439", 10);
|
|
mpz_set_str(table[17], "9917602791005245993426714527202188560442056191475073563573123233037450652827", 10);
|
|
mpz_set_str(table[18], "14346754277312303614149768761851643644944554479384532337719415567551284038467", 10);
|
|
mpz_set_str(table[19], "10345677819890522033658050708648032589136796411826826774250278630521342648252", 10);
|
|
mpz_set_str(table[20], "14978032825564742253485505811767197586912363794279745938645522944983821448201", 10);
|
|
mpz_set_str(table[21], "13475672903085998471704584819239278707564771706748226420340905290201451789224", 10);
|
|
mpz_set_str(table[22], "15365969981229369022128218512291786151935134831446420580106074440416460860492", 10);
|
|
mpz_set_str(table[23], "18740095528205175515739334837589593672168774840238681373270392701142211875316", 10);
|
|
mpz_set_str(table[24], "17073179608478242285211198500164563622801117572465953692467543166452745495145", 10);
|
|
mpz_set_str(table[25], "12484870275472035119960588036972343963837716564206634913738330085493602746840", 10);
|
|
mpz_set_str(table[26], "10363300328784732537796982275973151043471291918048777738181854823776957152031", 10);
|
|
mpz_set_str(table[27], "9862821770146023477874420548784580218906131694026979191648811963104597377678", 10);
|
|
mpz_set_str(table[28], "6433295991257769676659720013968263124476483031976983876730612687368513922694", 10);
|
|
mpz_set_str(table[29], "16355317280952078348008850759067897199775566380456453169430581760207051011638", 10);
|
|
mpz_set_str(table[30], "20063186459670578688140120057975347439079427526755237642082975083948095421382", 10);
|
|
mpz_set_str(table[31], "12651861313704360324738923878134575419263289405761427873957388292705700250324", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=51
|
|
*/
|
|
void EscalarMulWindow_3103fa75113644c2(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "11307898516253336212268605429717173530738912260240386777365385927635463396194", 10);
|
|
mpz_set_str(table[3], "14585930090616724857217942464438222268515684374672025246683998117421973727222", 10);
|
|
mpz_set_str(table[4], "20002701486348847660031182403391273085309594887814819258782577182288741796033", 10);
|
|
mpz_set_str(table[5], "1138553834537418730601815368380837313734850829412788077728096831582237562436", 10);
|
|
mpz_set_str(table[6], "10799306485190924107472867400451039347836509079112223774600222810480826332895", 10);
|
|
mpz_set_str(table[7], "10440707470739845847004931807388647573302452424248720742659067184033652950824", 10);
|
|
mpz_set_str(table[8], "2991180772308783189817013624196032444556763359465547611815427476205794879673", 10);
|
|
mpz_set_str(table[9], "2321665860034437385765778337913220461589370913074094052210850160808588693097", 10);
|
|
mpz_set_str(table[10], "10831117806827692206397622504973399506712818096936029932948670983396056749894", 10);
|
|
mpz_set_str(table[11], "20545059033944562652991880271128717714267570020129776310839251703000874031596", 10);
|
|
mpz_set_str(table[12], "12908606319411516405998805053931626605613784662757416773882991662667184297341", 10);
|
|
mpz_set_str(table[13], "19864888953423826852193063787250419364104119074341080569048504680002551234540", 10);
|
|
mpz_set_str(table[14], "18954047832363355499210097566706049973734540505910763823717872286425730585380", 10);
|
|
mpz_set_str(table[15], "1944845572735297294690425553673062024800855869150128326226150159810598016434", 10);
|
|
mpz_set_str(table[16], "5768529159880607231328893587813709446121884045676765088640340127563317590360", 10);
|
|
mpz_set_str(table[17], "19044180265184387743937377906918398481891294230054763490628596155311502286465", 10);
|
|
mpz_set_str(table[18], "10812144239490811837635295413876760787111795049744097056034718513104625916484", 10);
|
|
mpz_set_str(table[19], "16044310899670211189700468511258961288431400153246653250829734178610962583115", 10);
|
|
mpz_set_str(table[20], "19966332057621316604700416789900482936004843110630947974114164863016646389570", 10);
|
|
mpz_set_str(table[21], "6139614060014821996464818518666366260915600554588183024787039754097443421579", 10);
|
|
mpz_set_str(table[22], "21104771601646363121963524092941110387909002138660434984463552375800538927341", 10);
|
|
mpz_set_str(table[23], "2364598572346589596386077727848864548233031002279959919983429526736958058427", 10);
|
|
mpz_set_str(table[24], "6216933245648834638151901495571274671301884186238468571397147737925351724640", 10);
|
|
mpz_set_str(table[25], "85542955628974166314460367927582582445435063237719123163488080178409445395", 10);
|
|
mpz_set_str(table[26], "12207706844065404924463615679270817526842389458826399978435329991067891176164", 10);
|
|
mpz_set_str(table[27], "15388258710018413174636306638602608815090297524380042291561732260635937845254", 10);
|
|
mpz_set_str(table[28], "1429205012601060506644251652127697429939351293241864389552272544810604985075", 10);
|
|
mpz_set_str(table[29], "20807435512156829143768923725821924044719842545185106935444588021304141229557", 10);
|
|
mpz_set_str(table[30], "12486941398418307599529142462759685956226207008029312453757279533186555936701", 10);
|
|
mpz_set_str(table[31], "826868849095923044056779655388050356039302520812073981406082000050535458975", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=52
|
|
*/
|
|
void EscalarMulWindow_3103f9751136430f(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "20134073852284737960310994584056735539881108166780724913938227345482568357678", 10);
|
|
mpz_set_str(table[3], "16030886940290038379543182760717989024652004788979542994419064321569444941472", 10);
|
|
mpz_set_str(table[4], "19963394596326356819489855091012492177878419585279015486690723777053625700028", 10);
|
|
mpz_set_str(table[5], "14806472965253527465350659536526387197197158195041846435525623602094864884513", 10);
|
|
mpz_set_str(table[6], "1601683261880694426727685740805423203144142490009167610422567554314343919427", 10);
|
|
mpz_set_str(table[7], "20048135285255252842297222554842409236350984804516770750161835397714727989768", 10);
|
|
mpz_set_str(table[8], "11126092185518000644439916621476530130429022951635267445636405501734528825744", 10);
|
|
mpz_set_str(table[9], "10185117531779232571984817037810257722737980674056387331731973052420569478194", 10);
|
|
mpz_set_str(table[10], "12260097859080770031877002245996252301383748327184947266914992565126137101128", 10);
|
|
mpz_set_str(table[11], "6185220650612271141574466040495892991365203107354999925385448850969286167525", 10);
|
|
mpz_set_str(table[12], "14024443372680095135459728170192268969732671730470439751055825892743903011072", 10);
|
|
mpz_set_str(table[13], "17360531765426754267510502797214244178297579224456204241183094237739180451979", 10);
|
|
mpz_set_str(table[14], "8001754044879467164759654217301892825125962923331839594741896809586872864446", 10);
|
|
mpz_set_str(table[15], "19812876202832835501156443324149408210656219154595846013737657931736309080658", 10);
|
|
mpz_set_str(table[16], "16992605048069398488263350046819815833653837203333841369101540063958010910898", 10);
|
|
mpz_set_str(table[17], "10018817941802018759504576734598323079102235555984605351023845730328661694831", 10);
|
|
mpz_set_str(table[18], "14513545980688945383609321849051656814619430650059319537119328453928485651743", 10);
|
|
mpz_set_str(table[19], "9677493710718270961112401432015852640441827833427827422805258106766257607116", 10);
|
|
mpz_set_str(table[20], "19413312831183411518735800776955202546349448265158393030887090984457887642749", 10);
|
|
mpz_set_str(table[21], "8270375109967761463012171158194402258974113189745544322310378137826884262282", 10);
|
|
mpz_set_str(table[22], "11238664807357541606979556409967248472793455263121264864180422472598013569822", 10);
|
|
mpz_set_str(table[23], "7480023340849837721542369688744600286681747385355056617689846205078336601092", 10);
|
|
mpz_set_str(table[24], "19494412197906000955466199714427286178271665370964578957385297691900165341040", 10);
|
|
mpz_set_str(table[25], "18356178552154501290065998611779765688630660489507018649754866528177925533999", 10);
|
|
mpz_set_str(table[26], "20852456327855312184386131519721657883454891229290048535600580641443750438399", 10);
|
|
mpz_set_str(table[27], "14070060041442728889354665545848729721004902185937546707540438746762167004179", 10);
|
|
mpz_set_str(table[28], "15610642031144123140227314872733718358480438342132296569695507559452512795177", 10);
|
|
mpz_set_str(table[29], "19198004331353587227125706709717854339256375754129238724488437096054650493591", 10);
|
|
mpz_set_str(table[30], "2607916736602818314976170537964383406424487659100368117753144023131485777044", 10);
|
|
mpz_set_str(table[31], "20642684776575155851515682517648367682104723757265938626555038684433479310053", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=53
|
|
*/
|
|
void EscalarMulWindow_3103f8751136415c(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "9471790144309963354711579154240669565979958109019328445445514067079188706453", 10);
|
|
mpz_set_str(table[3], "7661061988940607334081239786163678068816320017689904291698311134541363459586", 10);
|
|
mpz_set_str(table[4], "15736778466688472206596554404132351380313196409320081031550581716046780586370", 10);
|
|
mpz_set_str(table[5], "5659720705768783217756971407396698692193007773752044999422064084082785406711", 10);
|
|
mpz_set_str(table[6], "1515625718994475057823965943385288898760642866237227724772988626136288432276", 10);
|
|
mpz_set_str(table[7], "19403252802969044169857808569817589291211939121093032588716990730705610205785", 10);
|
|
mpz_set_str(table[8], "6399219874394405733502963437521984944386900739700928032687886072090943579570", 10);
|
|
mpz_set_str(table[9], "10105984212021262688142627006204284084654134662004022029788761090604882619727", 10);
|
|
mpz_set_str(table[10], "5121039973129521501257780737594762117462633720253418660769677913426336242789", 10);
|
|
mpz_set_str(table[11], "17849769427089247765601918836616632733784223891279546998075563998794031622566", 10);
|
|
mpz_set_str(table[12], "20061822913515989540944515625390754307296663157462879500640242306067578634703", 10);
|
|
mpz_set_str(table[13], "16219181115037946603601779137655924002173683209576896437912830704618720521790", 10);
|
|
mpz_set_str(table[14], "2953631873393509987210963854683339405169139679715768157109520355266627192250", 10);
|
|
mpz_set_str(table[15], "16537866103438580748037463534413780593674469743758750479960868891771017447112", 10);
|
|
mpz_set_str(table[16], "12103174523200155445763293484911234993862340877058571057958190442902429313841", 10);
|
|
mpz_set_str(table[17], "17727566573166472920088564265296436697319157577004859416697208120516352841756", 10);
|
|
mpz_set_str(table[18], "5795244933710418736837752855584275514019607857618924484059822970932201037812", 10);
|
|
mpz_set_str(table[19], "20405480735238523728716859674068268632766401583115738916447291755191267714609", 10);
|
|
mpz_set_str(table[20], "3451678764966498344401373177103850902731173001437256472229629082256786373092", 10);
|
|
mpz_set_str(table[21], "15510252044949559866768040241839210520106478163849323635940118615288678181860", 10);
|
|
mpz_set_str(table[22], "8707549680064937904405220940888913393223664588137940659927262586690686668453", 10);
|
|
mpz_set_str(table[23], "15425738389646623966719449880585598089293786297739643007660615068116109677552", 10);
|
|
mpz_set_str(table[24], "16117547446044078140769490704030375963043138274345344027393219255920501572722", 10);
|
|
mpz_set_str(table[25], "14566484784700618711926552401468556956013853027877219370182883988207291065731", 10);
|
|
mpz_set_str(table[26], "9578687415154201600565379801245504306433043126897617162360766246492302430865", 10);
|
|
mpz_set_str(table[27], "11465559028391775359079892490002993400941223205318554500216740638489526435416", 10);
|
|
mpz_set_str(table[28], "21013328395390738262471095892350636698759972778863803858807351662793133844476", 10);
|
|
mpz_set_str(table[29], "3239151816420009502090254136578539267839500559376437647515835324944173145994", 10);
|
|
mpz_set_str(table[30], "4102054991066510564551038741050571146818079803865813992829797852620151443656", 10);
|
|
mpz_set_str(table[31], "3883851110745434106034813102667802216301778998133943725871264634605746938161", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=54
|
|
*/
|
|
void EscalarMulWindow_3103f77511363fa9(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12710241444393840241444373488608092735401345802013735473564715530172661261837", 10);
|
|
mpz_set_str(table[3], "21062513588594879763719218018603879900636499451991670319090734153387396586485", 10);
|
|
mpz_set_str(table[4], "3337962021630885202291452691099985258279897263661989150426674758109620606753", 10);
|
|
mpz_set_str(table[5], "21273690313665956433738524506785916979724850285772736605524090483721088185957", 10);
|
|
mpz_set_str(table[6], "7062568709351439894641236926721880129845962446856932352057094218795833351091", 10);
|
|
mpz_set_str(table[7], "19176758032035576084469281080189172056409371326298316687019280412424122358845", 10);
|
|
mpz_set_str(table[8], "18700803408735962456440156638088484045969462426841014321271417380506163576015", 10);
|
|
mpz_set_str(table[9], "4201009895193523679790412294093016914215278601359665850510452386466917321363", 10);
|
|
mpz_set_str(table[10], "6350113705557994061493527793424762366333443648860085163591602606133413224628", 10);
|
|
mpz_set_str(table[11], "13284100591949209635480456431253949138344593497043891366966237083990553036004", 10);
|
|
mpz_set_str(table[12], "10962840714891950227107826817162839674101878329501005125583766825424155667226", 10);
|
|
mpz_set_str(table[13], "173037207271443519282278263693729175285248727312756577837749366522679976501", 10);
|
|
mpz_set_str(table[14], "20465479571365048741569355022848980464757365476269177496001919323358075205469", 10);
|
|
mpz_set_str(table[15], "9276534302427970263414657657126707602717504457575276220277033035611007199359", 10);
|
|
mpz_set_str(table[16], "10030304900673959755851711903728678409666173173200272445827526680123105354001", 10);
|
|
mpz_set_str(table[17], "5843180947702850417469818047024829534541077201655256795556483963966577966415", 10);
|
|
mpz_set_str(table[18], "10255991850806226830144066190612105963844187253134418293982395044094412745053", 10);
|
|
mpz_set_str(table[19], "20680276893186481679246193213439773233074101300926416589184757027349787781507", 10);
|
|
mpz_set_str(table[20], "9154983088509023137566054874877009962303017087413715413701151571084589810220", 10);
|
|
mpz_set_str(table[21], "18994223852476769907893781362060658565335866764954390610322822816430334360932", 10);
|
|
mpz_set_str(table[22], "6437001655346824546551239148111737453611017039913469320538158189766929699323", 10);
|
|
mpz_set_str(table[23], "8707050947285572977748204187552485981486895381454376317941206612017691178544", 10);
|
|
mpz_set_str(table[24], "1841393170079948874015326567390285244163419887661696585996876329883366211661", 10);
|
|
mpz_set_str(table[25], "33750025319208354057534804766967356410254673729654634229546062382263110785", 10);
|
|
mpz_set_str(table[26], "13773384542089651797797611750093315983903156669451740498644408004207728025176", 10);
|
|
mpz_set_str(table[27], "6028133113480809859246434148092275091908599182169621306834822691819183179386", 10);
|
|
mpz_set_str(table[28], "9312699939180151527031347304668400708507081677597515705826389865267116417632", 10);
|
|
mpz_set_str(table[29], "12310039720550826754272912756514107997493294827897666578554058125719758023477", 10);
|
|
mpz_set_str(table[30], "15280602162987523566491034769639584898613756110991745557870555964441568960845", 10);
|
|
mpz_set_str(table[31], "21409557010127077534551523935329301560894331453254282266279206377280843254446", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=55
|
|
*/
|
|
void EscalarMulWindow_3103f67511363df6(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "15569509731463808354799947527085997010232400539214722032102095166586456507156", 10);
|
|
mpz_set_str(table[3], "847655824552965664665983803913306950502172234773950904080216045962718046079", 10);
|
|
mpz_set_str(table[4], "17343250303322136140712734191181058972130149344181144729973662612850749140033", 10);
|
|
mpz_set_str(table[5], "4135619949902765536673362860169749978469854339731244217296869419459239108182", 10);
|
|
mpz_set_str(table[6], "289229275183227001965228900096871817349664294468177722878017585462331066498", 10);
|
|
mpz_set_str(table[7], "5844288640455872867858913999954395773097311439445253407286197744069916443321", 10);
|
|
mpz_set_str(table[8], "8346230471634125647995579684874874353803350902974097176637414671779362512784", 10);
|
|
mpz_set_str(table[9], "14708728294170877160017249008960517392081465863541980164835044794161528000137", 10);
|
|
mpz_set_str(table[10], "5502905629776813500445131361790771159624916583770996489402087204904046621382", 10);
|
|
mpz_set_str(table[11], "9887520866573723571080767054094544071171065108417105094251065139610276762976", 10);
|
|
mpz_set_str(table[12], "16480974059501878141752883699359590903810057067203827828327268039305250201346", 10);
|
|
mpz_set_str(table[13], "14497044394856016756491096345365947163281516004534327152943119450552715080521", 10);
|
|
mpz_set_str(table[14], "12727040357200777210201436324067150333516841615474041867148309899018585657190", 10);
|
|
mpz_set_str(table[15], "21661197524161179811996622091199955183208337895023284118086242581966365614994", 10);
|
|
mpz_set_str(table[16], "18483318172896860230824109090185501644500825468321523965081782129698195331708", 10);
|
|
mpz_set_str(table[17], "1940383939506965902563629163298650925170023430255171291101920893147300846347", 10);
|
|
mpz_set_str(table[18], "9203239731084772491527714023262413806113553590443600757100249425530157373578", 10);
|
|
mpz_set_str(table[19], "18526372368265502175995678857081165617912344077280559372896636599965633075181", 10);
|
|
mpz_set_str(table[20], "19250485013055316169868428892681083272656577498989134895410573328032709192087", 10);
|
|
mpz_set_str(table[21], "19653736545396208933081349209814454706446333915598431178777365832215366501241", 10);
|
|
mpz_set_str(table[22], "11108064741923172918925873393575747159897270458049278929698555620359881739180", 10);
|
|
mpz_set_str(table[23], "6739079307038753282397868165545757372653656871046420244564514615855794260323", 10);
|
|
mpz_set_str(table[24], "16101172123060664912221547062758291102079492404020125142807222277993998584789", 10);
|
|
mpz_set_str(table[25], "14926095400796387217564523917697025100042889231728227670200888649380934389192", 10);
|
|
mpz_set_str(table[26], "3495721938567074564321726667409710693862608887724226550438435209341715149288", 10);
|
|
mpz_set_str(table[27], "19916786701428167683149817905614326625821387210949530372471233336874037365855", 10);
|
|
mpz_set_str(table[28], "21150555535304912321837298768378924163080318859924010354720448866344342840867", 10);
|
|
mpz_set_str(table[29], "2427122773211488702727200651311082908932816102239375843974048801736014103589", 10);
|
|
mpz_set_str(table[30], "162238947847889377980962591283729271071297629239464525398913686524030097133", 10);
|
|
mpz_set_str(table[31], "12085709889475146773112012595093050404965195234674333728078225631215554685609", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=56
|
|
*/
|
|
void EscalarMulWindow_3103f57511363c43(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "10337386278232558623910671969352401184684442870550504253214357719883615910641", 10);
|
|
mpz_set_str(table[3], "1612420639928585840644839171092190452010380536028455235539103495382595838270", 10);
|
|
mpz_set_str(table[4], "15174363165307969422318822464827015798757380964895294719744964937883209378873", 10);
|
|
mpz_set_str(table[5], "3103632537654959745635213984989040784149480270767304536009304917682296630703", 10);
|
|
mpz_set_str(table[6], "6330366766736357305261886601303184731617190785995262968961461474764083429826", 10);
|
|
mpz_set_str(table[7], "9998221204358926006776741584354492060541438320013993836652450142067350062034", 10);
|
|
mpz_set_str(table[8], "9480231520447889470096148245406542141345886516666843799810728214062139533685", 10);
|
|
mpz_set_str(table[9], "1567978059549882203194695500210825100521695921557966081361410403092508691983", 10);
|
|
mpz_set_str(table[10], "19760936466286491729624349700607920516431497611331019743354286930187475760236", 10);
|
|
mpz_set_str(table[11], "14677553660089969717962453966782521818670535991726643564440470019237498888545", 10);
|
|
mpz_set_str(table[12], "6980866081290044942101162036572808624897291566263495578471488628987559925106", 10);
|
|
mpz_set_str(table[13], "8156401784498649236937075454985749480997963371551340514217985746643785887151", 10);
|
|
mpz_set_str(table[14], "19879620290539104863895435770573810715651225330988885962324530317610264303709", 10);
|
|
mpz_set_str(table[15], "16360585570621609069137389277541577032449820129557431749057364337207268075355", 10);
|
|
mpz_set_str(table[16], "14141432428886969912197748880826293871323937806070927824281896531250659189419", 10);
|
|
mpz_set_str(table[17], "11079237197536160342397234464198834315431750459355355647374316460115127341982", 10);
|
|
mpz_set_str(table[18], "14666904754881895608265563821653554554693177520673022372014955519250367718160", 10);
|
|
mpz_set_str(table[19], "9381982065706129432287624987893380372460590674274135849093079664203674490518", 10);
|
|
mpz_set_str(table[20], "6289613545683086313609229465729106636631615082470351446181017048638373497558", 10);
|
|
mpz_set_str(table[21], "21244069980869175187915949211779095149759290931082897259194547514272875803022", 10);
|
|
mpz_set_str(table[22], "4159097115517485716734601154846450853116695661507648676889228728045958814608", 10);
|
|
mpz_set_str(table[23], "17642321593369764880399347342177994534136672309900094985992478609745240517763", 10);
|
|
mpz_set_str(table[24], "18393010734825134826911578692690391920211288242459015594205360292156830861705", 10);
|
|
mpz_set_str(table[25], "12093756100710773236778849889834681718188399355529104140684006431662912359397", 10);
|
|
mpz_set_str(table[26], "5877932045332725532926365227022143908891619540132121689854338430769657157262", 10);
|
|
mpz_set_str(table[27], "14625496793293222534270883546532950650835746337890550312886317792533843841934", 10);
|
|
mpz_set_str(table[28], "8469715332755649897825593509009689490868120895133565325296814800138233919439", 10);
|
|
mpz_set_str(table[29], "16914633452502096472303758599887851743021511976496498515486978052757893922019", 10);
|
|
mpz_set_str(table[30], "10917453721829066251250332574445862364638112841780214636392792070106571900932", 10);
|
|
mpz_set_str(table[31], "9060359750672058272342903482306165293235121395604406567619459600244304717794", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=57
|
|
*/
|
|
void EscalarMulWindow_3103f47511363a90(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "825826398613128988017232851661370900698491777008099065971660493023187864445", 10);
|
|
mpz_set_str(table[3], "10554589176317453577509116902103327990560872939997483317636552279547306653150", 10);
|
|
mpz_set_str(table[4], "7741922719806587766598420240393344063682407983199748724656654309250014470593", 10);
|
|
mpz_set_str(table[5], "20545796873410277625177939613361930559491817226024659752255540340154460619062", 10);
|
|
mpz_set_str(table[6], "12404507002934727264624698793324985452770099659201976609994223345571819557328", 10);
|
|
mpz_set_str(table[7], "10505575881586869480849090637555279486168656527556936315594830018392495009783", 10);
|
|
mpz_set_str(table[8], "14052658127363582162025964487521860507188610187851688089099418541413755553368", 10);
|
|
mpz_set_str(table[9], "9850954037525120563184696381061004964680110828174235670063629741637776626555", 10);
|
|
mpz_set_str(table[10], "8110202815012375236349886342429735622430199988476084868893339145526947301613", 10);
|
|
mpz_set_str(table[11], "10921406965680794741382855154482318058436571026412504949179183509783435455075", 10);
|
|
mpz_set_str(table[12], "20726324874087899988612500493385411950678010973105566875254021548556133975", 10);
|
|
mpz_set_str(table[13], "21575966413151975806748514996979724198956410726461211291795264736644214997092", 10);
|
|
mpz_set_str(table[14], "2438721688319181495143988292625315062119629542950247473307949090025565909212", 10);
|
|
mpz_set_str(table[15], "19688483698802742345387092067539336774912216020683037865068314276433134131534", 10);
|
|
mpz_set_str(table[16], "4212168126422394646575473365250714731914991083489514159634871877328752685311", 10);
|
|
mpz_set_str(table[17], "20686141691064959751428962930863775529968930385908862180101065458427521352091", 10);
|
|
mpz_set_str(table[18], "14499587505707204466587579551736659464614416608495611080986088370161862440923", 10);
|
|
mpz_set_str(table[19], "15401444974721048166199595914333660232711457710190306875945606656281865244479", 10);
|
|
mpz_set_str(table[20], "4057798905336790888200216032459428972126173266097972116647074359002996038586", 10);
|
|
mpz_set_str(table[21], "10567476768718487219881667513811438614178156073942269577104798381952557776779", 10);
|
|
mpz_set_str(table[22], "6428761324722381204556594796867100348392573470136547833708017341360052769053", 10);
|
|
mpz_set_str(table[23], "16313223805791963248538284903801513057220938939817347734206684784116795164595", 10);
|
|
mpz_set_str(table[24], "14802286557699357192615496032342292746653938513884666632894634867957994669857", 10);
|
|
mpz_set_str(table[25], "10039398335426206737520495178360938343270799248168396293128854885442357392706", 10);
|
|
mpz_set_str(table[26], "8717845621784296369051053507638609578567636687159595904869687801311292252290", 10);
|
|
mpz_set_str(table[27], "10512611554295596380748449225658641217960695369935150078337337954401088551104", 10);
|
|
mpz_set_str(table[28], "11798561098106765582114192314571118251035172258430904505231309071634181159352", 10);
|
|
mpz_set_str(table[29], "16371561162154216181088638295852733091501680013063133738779393762963953295463", 10);
|
|
mpz_set_str(table[30], "16570592823478876905170491584688783392612376969533732786062150186774178166848", 10);
|
|
mpz_set_str(table[31], "16483049098299217007960359198983764130425795812890413143530977367858955686199", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=58
|
|
*/
|
|
void EscalarMulWindow_310403751136540d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "18148013772681295323313729926974144081761473650209963955905858599379365062867", 10);
|
|
mpz_set_str(table[3], "1934180223901113416258239993398380627420471822875616354289531717172636142737", 10);
|
|
mpz_set_str(table[4], "17486031304851396604181097365398558531561317823624895460094740530426071194783", 10);
|
|
mpz_set_str(table[5], "4904786464797837987030683608367392045696177375888822091092638797461299071938", 10);
|
|
mpz_set_str(table[6], "15093148461803611108888718259103660278027423393233532995695713493465614542889", 10);
|
|
mpz_set_str(table[7], "16435431947786590534273773258832636761259513429785919918417192556926468572977", 10);
|
|
mpz_set_str(table[8], "18469877554390492424033931955266424735401266331402111500423257934787363507611", 10);
|
|
mpz_set_str(table[9], "20253084736650341182131650836265785065757433481691531636494288844742648132519", 10);
|
|
mpz_set_str(table[10], "860709475750823310885820244116047886916099329387045649710070904927712506661", 10);
|
|
mpz_set_str(table[11], "18033072851734554795579901105706892536342543298742394779755885912347292046193", 10);
|
|
mpz_set_str(table[12], "12217466147017628574212766325198705664565522629830079368551092529749883105961", 10);
|
|
mpz_set_str(table[13], "11719313560784042607887596063019493778425854696531836459986743363106580886610", 10);
|
|
mpz_set_str(table[14], "10725506545576627867157913615352272792336853955067307830628069270520982113428", 10);
|
|
mpz_set_str(table[15], "1683718870099799879046479549743497757451627208515512263694816604259507974302", 10);
|
|
mpz_set_str(table[16], "20784352424807529623595959278191003000422365915582565004218054585170396451804", 10);
|
|
mpz_set_str(table[17], "2125249384284160991492461510467146733977564048389797904927133918284010711181", 10);
|
|
mpz_set_str(table[18], "6565931438230232985041064369658220145445025575106392786028402058083378257391", 10);
|
|
mpz_set_str(table[19], "6353261624734749073722531324002575785284280457639897916658242231384875594487", 10);
|
|
mpz_set_str(table[20], "1191894879914081900025856099513091626968608413261606524230263480862174473790", 10);
|
|
mpz_set_str(table[21], "19011136325078281878459948418423384806550806409516655953024338028790133160832", 10);
|
|
mpz_set_str(table[22], "16952894269675486228166020538548661670026842114446906133245893204396378466088", 10);
|
|
mpz_set_str(table[23], "20275335494660589151048567716238431136328232781683801247021943155934354830573", 10);
|
|
mpz_set_str(table[24], "19223345718360980548860790251632926297913586546924424790407231952305638289259", 10);
|
|
mpz_set_str(table[25], "19259194146386639151009155789773486353833880915974880675576831447366534501092", 10);
|
|
mpz_set_str(table[26], "4817471030982599753932980113754955418614019159781584542495277203922397838608", 10);
|
|
mpz_set_str(table[27], "9874459493437021908303245421801813281823130766080508802360698309777134808730", 10);
|
|
mpz_set_str(table[28], "16852530365158061624378137341458788937547698728119556493193873898424076923257", 10);
|
|
mpz_set_str(table[29], "5038712665731941557484734852448475752754664097767671098388288211612423770113", 10);
|
|
mpz_set_str(table[30], "17712494484024029516420745373637793356409574771706910104239899748279885360484", 10);
|
|
mpz_set_str(table[31], "21682789105728053044840284556958683477931469744426812598195554806708578103626", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=59
|
|
*/
|
|
void EscalarMulWindow_310402751136525a(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "13201213420513133631946710890249929024043453210523691767325983875458841395163", 10);
|
|
mpz_set_str(table[3], "19189193772717264607978461736798607540009183941607988719093695862287599768316", 10);
|
|
mpz_set_str(table[4], "265099668210425069426032934484741808861476649385577362440472659869570754556", 10);
|
|
mpz_set_str(table[5], "4772306342397303489364969494987328875238096127612466100550612671599186363070", 10);
|
|
mpz_set_str(table[6], "9635954623993416737758947263833406269272701524300732265268466767525441956543", 10);
|
|
mpz_set_str(table[7], "12235855927072075206066613991683886718920716765231876264279453058605925342751", 10);
|
|
mpz_set_str(table[8], "9285818088987365337131858971826109471512371893231806398140766760393160233473", 10);
|
|
mpz_set_str(table[9], "19934374536979131247685743678277580239582587138332787130640292319304606646315", 10);
|
|
mpz_set_str(table[10], "18060805946488613544873802136469647299331392912108766231393560438177878823201", 10);
|
|
mpz_set_str(table[11], "11379814885634430159698976533488030011070700474099622971158567916966433789937", 10);
|
|
mpz_set_str(table[12], "6864073189081075653601759887496530903767248296715650078166738679311064038992", 10);
|
|
mpz_set_str(table[13], "954930391635216420052125687462335675583165538625113420448792828533314949589", 10);
|
|
mpz_set_str(table[14], "9001449387857646792593881815364980208437527895191549223473477672363754796203", 10);
|
|
mpz_set_str(table[15], "9951500986680191663490372358760514061921296650803060926447254021036302044051", 10);
|
|
mpz_set_str(table[16], "19718976903851058008475055401653131705192756003499102971032195561882012679425", 10);
|
|
mpz_set_str(table[17], "15174550403514799958881548585631420568532058082297338970739157805972042301170", 10);
|
|
mpz_set_str(table[18], "4101718753859799407893687617658454693685923494837053440673987374535604249868", 10);
|
|
mpz_set_str(table[19], "20549646018435516318815788832040114807249035973708996435350455903662876830195", 10);
|
|
mpz_set_str(table[20], "3646348971155663167078300436004800703182518455384428098628582343293936312713", 10);
|
|
mpz_set_str(table[21], "16784309560178865998174512628497525090839470210059578374058850372069570107298", 10);
|
|
mpz_set_str(table[22], "17382745693654589811727490647516647478546800200109160448507447202279758295983", 10);
|
|
mpz_set_str(table[23], "16110449051230697536150454624054860354141156002210297797931736588795557856902", 10);
|
|
mpz_set_str(table[24], "2174121364834107791894364998715059735995539457974331890171266849994509979443", 10);
|
|
mpz_set_str(table[25], "13823257600462786612074247247321984582055270395839968294354358506599604031904", 10);
|
|
mpz_set_str(table[26], "12926954318331197864838833724345310621060273970863187658164166929600245531862", 10);
|
|
mpz_set_str(table[27], "7063397132223206848794851884577990059648019130883044337773488769940230781007", 10);
|
|
mpz_set_str(table[28], "19042204117135364186557198033309072641040161562969924728486693938220831603554", 10);
|
|
mpz_set_str(table[29], "5760010797365010887796625952901667899803957687203303391641263298943162569429", 10);
|
|
mpz_set_str(table[30], "16243651326792731304554982075999921755291212921867127807733603100596864437220", 10);
|
|
mpz_set_str(table[31], "5739255654707932952650019252527735981103907587068196326732082725534084524445", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=60
|
|
*/
|
|
void EscalarMulWindow_310701751138867e(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "12286294471024767972418304223091891467424718643344831746327316255105013265308", 10);
|
|
mpz_set_str(table[3], "4001255280591196308426960767325018473344475545975814090810688460192215073155", 10);
|
|
mpz_set_str(table[4], "7338615797537906521462561536524900046882101619681098455063245632223235107260", 10);
|
|
mpz_set_str(table[5], "3301215797153104089410993402785874986310793079533186632945245028294273822714", 10);
|
|
mpz_set_str(table[6], "9863559329668340142151685261678331687652635640674281144358302225770891563384", 10);
|
|
mpz_set_str(table[7], "3532670162435061062512414308937148543002384328988503750405308979593281309967", 10);
|
|
mpz_set_str(table[8], "12807007651407926849531070107972704761861486253097576959076058809001011642914", 10);
|
|
mpz_set_str(table[9], "2407681705366546342190097491952454585978673125857369048705800533199245470234", 10);
|
|
mpz_set_str(table[10], "20411540599541401106955518440752444498819379048475236763152566532547237598919", 10);
|
|
mpz_set_str(table[11], "13750271450979663548210190433453800219183100415984763158692574214412010037438", 10);
|
|
mpz_set_str(table[12], "19147474762997683443174629980910746918881861820641258726823806154524971895798", 10);
|
|
mpz_set_str(table[13], "18095652603013053345262683641635395791317681750975154970027082779523857869627", 10);
|
|
mpz_set_str(table[14], "21299146461700361028406839478653590865798115450959114213692721082822750754732", 10);
|
|
mpz_set_str(table[15], "6637055795339397543222585259358384041596552115201577863134694052094491638605", 10);
|
|
mpz_set_str(table[16], "1941726336802434062909924897880447861847591067225483797974285098969930688013", 10);
|
|
mpz_set_str(table[17], "3791037693551707665887625624205652110752319962824302138222196362189984832890", 10);
|
|
mpz_set_str(table[18], "6552661231901866178501414461737078728551509930908515965504473735545644303199", 10);
|
|
mpz_set_str(table[19], "18074050693809441777471881507172383966494938949796625993397949068797538919411", 10);
|
|
mpz_set_str(table[20], "10670375986147547836746850006291913978074489861375211865501070753884676834603", 10);
|
|
mpz_set_str(table[21], "19423278176664305454881898734202762769407838107765892779863409604164460315876", 10);
|
|
mpz_set_str(table[22], "20308093751945518538976082464921508808055875499621983141965748693209298339016", 10);
|
|
mpz_set_str(table[23], "1516653181144633937135448621504167322572489130659402081879739722033859501682", 10);
|
|
mpz_set_str(table[24], "13037768788360809473165904880957545062214028539891277259165798238391540534603", 10);
|
|
mpz_set_str(table[25], "9556759030671051686046709436565179488687661496508826818264063193198794024510", 10);
|
|
mpz_set_str(table[26], "2406707624228397990759459995363681383705229679604585677866603093924221234543", 10);
|
|
mpz_set_str(table[27], "19099971485738052081256185932837043334898663325166117430829537795963951846517", 10);
|
|
mpz_set_str(table[28], "2117928231944965902118545119881471991642868691073361847875283846090795669060", 10);
|
|
mpz_set_str(table[29], "5135559544631262351286622723473301642962284807688249036413426569125828748163", 10);
|
|
mpz_set_str(table[30], "7379641312200595368782619998618047167897375049825170305984079801800346819147", 10);
|
|
mpz_set_str(table[31], "8480658133846085031375740896696096373006436359406492894156427480156865226412", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=61
|
|
*/
|
|
void EscalarMulWindow_3107027511388831(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6446496076490518960659682938305999336925534151245963517541567007447087975521", 10);
|
|
mpz_set_str(table[3], "2019648216255836384797932721821490491897267682589786839312300147860587669821", 10);
|
|
mpz_set_str(table[4], "20150046980542677940373916206783938419864065182332530203515586787026057426873", 10);
|
|
mpz_set_str(table[5], "8733497576866329749708230570378809239935415731302206757338927512435838669097", 10);
|
|
mpz_set_str(table[6], "9853435745364794967839773370134593975308688489645892220203708763208814470825", 10);
|
|
mpz_set_str(table[7], "13960741987783249427299525680006182886088700645717377202947333678694287312595", 10);
|
|
mpz_set_str(table[8], "5944803001529712599490509949317545723797627357952459058181823237999748765905", 10);
|
|
mpz_set_str(table[9], "16026374841299431450806234976468703584808497693229370259839241226338369387763", 10);
|
|
mpz_set_str(table[10], "8843829247382871456521924277750112236994730426881068520333015773383139172617", 10);
|
|
mpz_set_str(table[11], "16369125777486302415003732200850490635632739602196575546589645811686749093193", 10);
|
|
mpz_set_str(table[12], "14173405151893571766162218843345994200834683286147521513959028749158748079528", 10);
|
|
mpz_set_str(table[13], "3117050602382662130126580577498655757277006650180383614413984534523162336949", 10);
|
|
mpz_set_str(table[14], "21305513345954555636084623816208563984973267896169765298739719654691200409117", 10);
|
|
mpz_set_str(table[15], "6764023343324142166928111854512448386891528073362612545186998524282393010947", 10);
|
|
mpz_set_str(table[16], "17697942416743474789602659896752899553232686006571679601627096957631910451919", 10);
|
|
mpz_set_str(table[17], "16100771358981608102145579490242672554694513690355413142737038499055185258203", 10);
|
|
mpz_set_str(table[18], "9424873268866230860947713004343829865160624434386955757426040049365918196000", 10);
|
|
mpz_set_str(table[19], "14244359717894321046234094776956282951093590375772103209395367550524403470666", 10);
|
|
mpz_set_str(table[20], "6096465518088079793078226441796311106032781985851722201486103507417758959008", 10);
|
|
mpz_set_str(table[21], "19963266803276623826710490736822267678484896174357158691334533691588698656550", 10);
|
|
mpz_set_str(table[22], "13464231294097937476492585830608262782189537666296746662634131087232498136956", 10);
|
|
mpz_set_str(table[23], "17147580724826769366471074936495546519182950017179197236809304308615847540681", 10);
|
|
mpz_set_str(table[24], "10002529640883611031216439987268033543478846999298954290943295416757038303003", 10);
|
|
mpz_set_str(table[25], "13604649250761515301540260682988436278759439438054416933154369079725596688437", 10);
|
|
mpz_set_str(table[26], "7803705618321573191621093459415272262733199922548621714534543475611568675945", 10);
|
|
mpz_set_str(table[27], "16988497400125190531242979021306175394959283781563114688356565360814068232447", 10);
|
|
mpz_set_str(table[28], "15004279328443652981359762002440989030008542063375036030564391273438614538322", 10);
|
|
mpz_set_str(table[29], "21745407852202215283005389363150027727405608988532589597871543914927993108207", 10);
|
|
mpz_set_str(table[30], "20294146956031974829624449729800275000538652739624482122211889106131125941403", 10);
|
|
mpz_set_str(table[31], "16185910233486748383614554206992923087462183035937848213966773554338833167972", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
EscalarMulWindow
|
|
base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094]
|
|
k=62
|
|
sel[2]=0
|
|
sel[3]=0
|
|
*/
|
|
void EscalarMulWindow_d9853d1d04a8f6cb(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _compIdx;
|
|
int _sigIdx;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _compIdx_1;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_2;
|
|
PBigInt _v_7;
|
|
int _offset_13;
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_3;
|
|
PBigInt _v_8;
|
|
int _offset_15;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
PBigInt _v_9;
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _v_10;
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "4", 10);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_11;
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "16", 10);
|
|
PBigInt _tmp_5 = ctx->allocBigInts(1);
|
|
int _cond_1;
|
|
int _compIdx_2;
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_12;
|
|
int _offset_22;
|
|
PBigInt _v_13;
|
|
int _offset_24;
|
|
PBigInt table = ctx->allocBigInts(32);
|
|
PBigInt _v_14;
|
|
int _compIdx_3;
|
|
int _sigIdx_5;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _v_16;
|
|
int _offset_28;
|
|
PBigInt _v_17;
|
|
PBigInt _v_18;
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "16", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
int _compIdx_4;
|
|
int _sigIdx_6;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_6;
|
|
int _offset_32;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
int _compIdx_5;
|
|
int _sigIdx_8;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
int _offset_33;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
int _compIdx_6;
|
|
int _sigIdx_10;
|
|
int _compIdx_7;
|
|
int _sigIdx_11;
|
|
Circom_Sizes _sigSizes_8;
|
|
int _offset_34;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
int _compIdx_8;
|
|
int _sigIdx_12;
|
|
int _compIdx_9;
|
|
int _sigIdx_13;
|
|
Circom_Sizes _sigSizes_9;
|
|
int _offset_35;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _compIdx_10;
|
|
int _sigIdx_14;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
int _sigIdx_15;
|
|
Circom_Sizes _sigSizes_10;
|
|
int _offset_36;
|
|
int _compIdx_11;
|
|
int _sigIdx_16;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
int _sigIdx_17;
|
|
Circom_Sizes _sigSizes_11;
|
|
int _offset_37;
|
|
|
|
|
|
/* signal input in[2] */
|
|
|
|
/* signal input sel[4] */
|
|
|
|
/* signal output out[2] */
|
|
|
|
/* var table */
|
|
|
|
/* component mux */
|
|
|
|
/* component adder */
|
|
|
|
/* var i */
|
|
|
|
/* table = EscalarMulW4Table(base, k) */
|
|
|
|
/* mux = MultiMux4(2) */
|
|
|
|
/* adder = BabyAdd() */
|
|
|
|
/* for (i=0,i<4,i++) */
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */);
|
|
_offset_6 = _sigIdx + 0*_sigSizes[1];
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_offset_8 = _sigIdx_1 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue);
|
|
ctx->setSignal(_compIdx, _offset_6, _sigValue);
|
|
mpz_set_str(_tmp_2[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_2);
|
|
while (_cond) {
|
|
|
|
/* sel[i] ==> mux.s[i] */
|
|
_compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */);
|
|
_v_7 = i + 0;
|
|
_offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1];
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */);
|
|
_v_8 = i + 0;
|
|
_offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1);
|
|
ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1);
|
|
_v_9 = i + 0;
|
|
ctx->field->add(_tmp_3, _v_9, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_3, 1);
|
|
_v_10 = i + 0;
|
|
ctx->field->lt(_tmp_4,_v_10,_const);
|
|
_cond = ctx->field->isTrue(_tmp_4);
|
|
}
|
|
|
|
/* for (i=0,i<16,i++) */
|
|
mpz_set_str(_num_4[0], "0", 10);
|
|
ctx->field->copyn(i, _num_4, 1);
|
|
_v_11 = i + 0;
|
|
ctx->field->lt(_tmp_5,_v_11,_const_1);
|
|
_cond_1 = ctx->field->isTrue(_tmp_5);
|
|
while (_cond_1) {
|
|
|
|
/* mux.c[0][i] <== table[i][0] */
|
|
_compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_12 = i + 0;
|
|
_offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2];
|
|
_v_13 = i + 0;
|
|
_offset_24 = ctx->field->toInt(_v_13)*2;
|
|
mpz_set_str(table[0], "0", 10);
|
|
mpz_set_str(table[1], "1", 10);
|
|
mpz_set_str(table[2], "6600834736095245391512368390411939590435383499809669289380392845967064057444", 10);
|
|
mpz_set_str(table[3], "1633434512792176902074648870945712028805008561742690591809872912129322248868", 10);
|
|
mpz_set_str(table[4], "16996318184956492942334646502712398459263974492360527679252913249520280570008", 10);
|
|
mpz_set_str(table[5], "19606106315039262061760392521792128729767050629444225388723754740612433373386", 10);
|
|
mpz_set_str(table[6], "19586249309441326420684158143227957922016964341400617150716942139045539181111", 10);
|
|
mpz_set_str(table[7], "1208971139685368024795229629123810712875363508652069176395900886322510155758", 10);
|
|
mpz_set_str(table[8], "7869430521407597508798694428486217896494164647651577096591908839179071816740", 10);
|
|
mpz_set_str(table[9], "2652002923612297664473349871307018470220720037371726066312417414363660735086", 10);
|
|
mpz_set_str(table[10], "19806604190927879117707398304164556469195833479644524852012470482356718380880", 10);
|
|
mpz_set_str(table[11], "10370086847876734926453946709787936557202271162431876667347439751886220791666", 10);
|
|
mpz_set_str(table[12], "2663629767540826004599981448534395517152473372480358812000815224554928456003", 10);
|
|
mpz_set_str(table[13], "9207732235973302533798065671040586053961210222960930811174724149896608057124", 10);
|
|
mpz_set_str(table[14], "15917834070138736481164712347131848355117927532235269522922208460805083710705", 10);
|
|
mpz_set_str(table[15], "13857571900858294657632494210200724431892241857560695406558696003046825117484", 10);
|
|
mpz_set_str(table[16], "70699033622291437248962604873968124418887292826447617994920193024392713075", 10);
|
|
mpz_set_str(table[17], "19838570974144894989479244511589773211125982144332318455369737113713811404408", 10);
|
|
mpz_set_str(table[18], "19916976267145920230607748108885506802631509537457663942653049639113153858817", 10);
|
|
mpz_set_str(table[19], "11591387735997900425994172721934925589958176079025009803405218201210114710024", 10);
|
|
mpz_set_str(table[20], "5138476365150979254117712435041963869004737393241390301149424700428140688804", 10);
|
|
mpz_set_str(table[21], "6715445107578362767060517282302740222189549195128518916519837730534436011988", 10);
|
|
mpz_set_str(table[22], "13808264826417046217275063640364739087608330819572913807331215420630258967632", 10);
|
|
mpz_set_str(table[23], "9747575873342827607333156657556591675053380437399410151299831040828092472235", 10);
|
|
mpz_set_str(table[24], "2636099407502932083457822735627413352598609469535775234991465804303069025190", 10);
|
|
mpz_set_str(table[25], "13308756045457775495570327854914600747139220312592957456749212221476182719874", 10);
|
|
mpz_set_str(table[26], "19323047059641902004766987260279125592640378720679649563286822052474610814780", 10);
|
|
mpz_set_str(table[27], "20353430351869962234584612643290197573449327507636178189220891078775877443701", 10);
|
|
mpz_set_str(table[28], "15542459110336791601835818219714853234659346918957562242740672684181966602331", 10);
|
|
mpz_set_str(table[29], "9165065992188962046717881241800694352779992196524897483850794077193256916683", 10);
|
|
mpz_set_str(table[30], "21135819146441038971961464709565881455773756910784526860750156523681008320853", 10);
|
|
mpz_set_str(table[31], "8479806898753630888209219305141397336190454856444754658577405239025189300917", 10);
|
|
_v_14 = table + _offset_24;
|
|
ctx->setSignal(_compIdx_2, _offset_22, _v_14);
|
|
|
|
/* mux.c[1][i] <== table[i][1] */
|
|
_compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2];
|
|
_v_16 = i + 0;
|
|
_offset_28 = ctx->field->toInt(_v_16)*2 + 1;
|
|
_v_17 = table + _offset_28;
|
|
ctx->setSignal(_compIdx_3, _offset_26, _v_17);
|
|
_v_18 = i + 0;
|
|
ctx->field->add(_tmp_6, _v_18, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_6, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->lt(_tmp_7,_v_19,_const_2);
|
|
_cond_1 = ctx->field->isTrue(_tmp_7);
|
|
}
|
|
|
|
/* in[0] ==> adder.x1 */
|
|
_compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */);
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_32 = _sigIdx_7 + 0*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2);
|
|
ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2);
|
|
|
|
/* in[1] ==> adder.y1 */
|
|
_compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */);
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
_offset_33 = _sigIdx_9 + 1*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3);
|
|
ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3);
|
|
|
|
/* mux.out[0] ==> adder.x2 */
|
|
_compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */);
|
|
_compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_34 = _sigIdx_11 + 0*_sigSizes_8[1];
|
|
ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4);
|
|
ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4);
|
|
|
|
/* mux.out[1] ==> adder.y2 */
|
|
_compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */);
|
|
_compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */);
|
|
_sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_35 = _sigIdx_13 + 1*_sigSizes_9[1];
|
|
ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5);
|
|
ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5);
|
|
|
|
/* adder.xout ==> out[0] */
|
|
_compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */);
|
|
ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6);
|
|
_sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_36 = _sigIdx_15 + 0*_sigSizes_10[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6);
|
|
|
|
/* adder.yout ==> out[1] */
|
|
_compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */);
|
|
_sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */);
|
|
ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7);
|
|
_sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_37 = _sigIdx_17 + 1*_sigSizes_11[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7);
|
|
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_5, 1);
|
|
ctx->freeBigInts(table, 32);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
}
|
|
|
|
/*
|
|
Num2Bits
|
|
n=250
|
|
*/
|
|
void Num2Bits_615abe7f710c8f9d(Circom_CalcWit *ctx) {
|
|
// Header
|
|
int _sigIdx;
|
|
PBigInt _sigValue = ctx->allocBigInts(1);
|
|
PBigInt _const;
|
|
_const = ctx->allocBigInts(1);
|
|
mpz_set_str(_const[0], "0", 10);
|
|
PBigInt _tmp_1 = ctx->allocBigInts(1);
|
|
PBigInt _const_1;
|
|
_const_1 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_1[0], "1", 10);
|
|
PBigInt _tmp_2 = ctx->allocBigInts(1);
|
|
int _sigIdx_1;
|
|
Circom_Sizes _sigSizes;
|
|
int _offset_6;
|
|
int _sigIdx_2;
|
|
Circom_Sizes _sigSizes_1;
|
|
int _offset_8;
|
|
PBigInt _sigValue_1 = ctx->allocBigInts(1);
|
|
int _sigIdx_3;
|
|
Circom_Sizes _sigSizes_2;
|
|
int _offset_10;
|
|
PBigInt _sigValue_2 = ctx->allocBigInts(1);
|
|
PBigInt _const_2;
|
|
_const_2 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_2[0], "1", 10);
|
|
PBigInt _tmp_3 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_4 = ctx->allocBigInts(1);
|
|
PBigInt _num_4 = ctx->allocBigInts(1);
|
|
int _sigIdx_4;
|
|
Circom_Sizes _sigSizes_3;
|
|
int _offset_13;
|
|
PBigInt _sigValue_3 = ctx->allocBigInts(1);
|
|
PBigInt _const_3;
|
|
_const_3 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_3[0], "1", 10);
|
|
PBigInt _tmp_6 = ctx->allocBigInts(1);
|
|
PBigInt _const_4;
|
|
_const_4 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_4[0], "0", 10);
|
|
PBigInt _tmp_7 = ctx->allocBigInts(1);
|
|
PBigInt lc1 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_9 = ctx->allocBigInts(1);
|
|
PBigInt i = ctx->allocBigInts(1);
|
|
int _cond;
|
|
int _sigIdx_5;
|
|
PBigInt _sigValue_4 = ctx->allocBigInts(1);
|
|
PBigInt _v_12;
|
|
PBigInt _tmp_10 = ctx->allocBigInts(1);
|
|
PBigInt _const_5;
|
|
_const_5 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_5[0], "1", 10);
|
|
PBigInt _tmp_11 = ctx->allocBigInts(1);
|
|
int _sigIdx_6;
|
|
Circom_Sizes _sigSizes_4;
|
|
PBigInt _v_13;
|
|
int _offset_22;
|
|
int _sigIdx_7;
|
|
Circom_Sizes _sigSizes_5;
|
|
PBigInt _v_14;
|
|
int _offset_24;
|
|
PBigInt _sigValue_5 = ctx->allocBigInts(1);
|
|
int _sigIdx_8;
|
|
Circom_Sizes _sigSizes_6;
|
|
PBigInt _v_15;
|
|
int _offset_26;
|
|
PBigInt _sigValue_6 = ctx->allocBigInts(1);
|
|
PBigInt _const_6;
|
|
_const_6 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_6[0], "1", 10);
|
|
PBigInt _tmp_12 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_13 = ctx->allocBigInts(1);
|
|
PBigInt _num_8 = ctx->allocBigInts(1);
|
|
PBigInt _v_16;
|
|
int _sigIdx_9;
|
|
Circom_Sizes _sigSizes_7;
|
|
PBigInt _v_17;
|
|
int _offset_29;
|
|
PBigInt _sigValue_7 = ctx->allocBigInts(1);
|
|
PBigInt _v_18;
|
|
PBigInt _const_7;
|
|
_const_7 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_7[0], "2", 10);
|
|
PBigInt _tmp_14 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_15 = ctx->allocBigInts(1);
|
|
PBigInt _tmp_16 = ctx->allocBigInts(1);
|
|
PBigInt _v_19;
|
|
PBigInt _tmp_17 = ctx->allocBigInts(1);
|
|
PBigInt _v_20;
|
|
PBigInt _const_8;
|
|
_const_8 = ctx->allocBigInts(1);
|
|
mpz_set_str(_const_8[0], "250", 10);
|
|
PBigInt _tmp_18 = ctx->allocBigInts(1);
|
|
PBigInt _v_22;
|
|
int _sigIdx_10;
|
|
PBigInt _sigValue_8 = ctx->allocBigInts(1);
|
|
|
|
|
|
/* signal input in */
|
|
|
|
/* signal output out[n] */
|
|
|
|
/* var lc1=0 */
|
|
|
|
/* for (var i = 0,i<n,i++) */
|
|
|
|
/* out[i] <-- (in >> i) & 1 */
|
|
_sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue);
|
|
ctx->field->shr(_tmp_1,_sigValue,_const);
|
|
ctx->field->band(_tmp_2,_tmp_1,_const_1);
|
|
_sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_6 = _sigIdx_1 + 0*_sigSizes[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_6, _tmp_2);
|
|
|
|
/* out[i] * (out[i] -1 ) === 0 */
|
|
_sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_8 = _sigIdx_2 + 0*_sigSizes_1[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_1);
|
|
_sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_10 = _sigIdx_3 + 0*_sigSizes_2[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_2);
|
|
ctx->field->sub(_tmp_3,_sigValue_2,_const_2);
|
|
ctx->field->mul(_tmp_4,_sigValue_1,_tmp_3);
|
|
ctx->checkConstraint(_tmp_4, _num_4, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8");
|
|
/* lc1 += out[i] * 2**i */
|
|
_sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_offset_13 = _sigIdx_4 + 0*_sigSizes_3[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3);
|
|
ctx->field->mul(_tmp_6,_sigValue_3,_const_3);
|
|
ctx->field->add(_tmp_7,_const_4,_tmp_6);
|
|
ctx->field->copyn(lc1, _tmp_7, 1);
|
|
mpz_set_str(_tmp_9[0], "1", 10);
|
|
mpz_set_str(i[0], "1", 10);
|
|
_cond = ctx->field->isTrue(_tmp_9);
|
|
while (_cond) {
|
|
|
|
/* out[i] <-- (in >> i) & 1 */
|
|
_sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4);
|
|
_v_12 = i + 0;
|
|
ctx->field->shr(_tmp_10,_sigValue_4,_v_12);
|
|
ctx->field->band(_tmp_11,_tmp_10,_const_5);
|
|
_sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_13 = i + 0;
|
|
_offset_22 = _sigIdx_6 + ctx->field->toInt(_v_13)*_sigSizes_4[1];
|
|
ctx->setSignal(ctx->cIdx, _offset_22, _tmp_11);
|
|
|
|
/* out[i] * (out[i] -1 ) === 0 */
|
|
_sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_14 = i + 0;
|
|
_offset_24 = _sigIdx_7 + ctx->field->toInt(_v_14)*_sigSizes_5[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_5);
|
|
_sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_15 = i + 0;
|
|
_offset_26 = _sigIdx_8 + ctx->field->toInt(_v_15)*_sigSizes_6[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_6);
|
|
ctx->field->sub(_tmp_12,_sigValue_6,_const_6);
|
|
ctx->field->mul(_tmp_13,_sigValue_5,_tmp_12);
|
|
ctx->checkConstraint(_tmp_13, _num_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8");
|
|
/* lc1 += out[i] * 2**i */
|
|
_v_16 = lc1 + 0;
|
|
_sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */);
|
|
_v_17 = i + 0;
|
|
_offset_29 = _sigIdx_9 + ctx->field->toInt(_v_17)*_sigSizes_7[1];
|
|
ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_7);
|
|
_v_18 = i + 0;
|
|
ctx->field->pow(_tmp_14,_const_7,_v_18);
|
|
ctx->field->mul(_tmp_15,_sigValue_7,_tmp_14);
|
|
ctx->field->add(_tmp_16,_v_16,_tmp_15);
|
|
ctx->field->copyn(lc1, _tmp_16, 1);
|
|
_v_19 = i + 0;
|
|
ctx->field->add(_tmp_17, _v_19, &(ctx->field->one));
|
|
ctx->field->copyn(i, _tmp_17, 1);
|
|
_v_20 = i + 0;
|
|
ctx->field->lt(_tmp_18,_v_20,_const_8);
|
|
_cond = ctx->field->isTrue(_tmp_18);
|
|
}
|
|
|
|
/* lc1 === in */
|
|
_v_22 = lc1 + 0;
|
|
_sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */);
|
|
ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_8);
|
|
ctx->checkConstraint(_v_22, _sigValue_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:35:4");
|
|
// Footer
|
|
ctx->freeBigInts(_sigValue, 1);
|
|
ctx->freeBigInts(_const, 1);
|
|
ctx->freeBigInts(_tmp_1, 1);
|
|
ctx->freeBigInts(_const_1, 1);
|
|
ctx->freeBigInts(_tmp_2, 1);
|
|
ctx->freeBigInts(_sigValue_1, 1);
|
|
ctx->freeBigInts(_sigValue_2, 1);
|
|
ctx->freeBigInts(_const_2, 1);
|
|
ctx->freeBigInts(_tmp_3, 1);
|
|
ctx->freeBigInts(_tmp_4, 1);
|
|
ctx->freeBigInts(_num_4, 1);
|
|
ctx->freeBigInts(_sigValue_3, 1);
|
|
ctx->freeBigInts(_const_3, 1);
|
|
ctx->freeBigInts(_tmp_6, 1);
|
|
ctx->freeBigInts(_const_4, 1);
|
|
ctx->freeBigInts(_tmp_7, 1);
|
|
ctx->freeBigInts(lc1, 1);
|
|
ctx->freeBigInts(_tmp_9, 1);
|
|
ctx->freeBigInts(i, 1);
|
|
ctx->freeBigInts(_sigValue_4, 1);
|
|
ctx->freeBigInts(_tmp_10, 1);
|
|
ctx->freeBigInts(_const_5, 1);
|
|
ctx->freeBigInts(_tmp_11, 1);
|
|
ctx->freeBigInts(_sigValue_5, 1);
|
|
ctx->freeBigInts(_sigValue_6, 1);
|
|
ctx->freeBigInts(_const_6, 1);
|
|
ctx->freeBigInts(_tmp_12, 1);
|
|
ctx->freeBigInts(_tmp_13, 1);
|
|
ctx->freeBigInts(_num_8, 1);
|
|
ctx->freeBigInts(_sigValue_7, 1);
|
|
ctx->freeBigInts(_const_7, 1);
|
|
ctx->freeBigInts(_tmp_14, 1);
|
|
ctx->freeBigInts(_tmp_15, 1);
|
|
ctx->freeBigInts(_tmp_16, 1);
|
|
ctx->freeBigInts(_tmp_17, 1);
|
|
ctx->freeBigInts(_const_8, 1);
|
|
ctx->freeBigInts(_tmp_18, 1);
|
|
ctx->freeBigInts(_sigValue_8, 1);
|
|
}
|
|
|
|
// Components
|
|
Circom_Component _components[384] = {
|
|
{_htMain,_entryTableMain,Main_49e763aed00877a8, 2}
|
|
,{_htPedersen,_entryTablePedersen,Pedersen_e89189a40b66818b, 500}
|
|
,{_htEscalarMul,_entryTableEscalarMul,EscalarMul_f29b0428f5d364a5, 252}
|
|
,{_htEscalarMul,_entryTableEscalarMul_1,EscalarMul_013c1dd4c0cce6a8, 252}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow,EscalarMulWindow_8a817f91638c8624, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_1,EscalarMulWindow_8a818091638c87d7, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_2,EscalarMulWindow_8a818191638c898a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_3,EscalarMulWindow_8a818291638c8b3d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_4,EscalarMulWindow_8a817b91638c7f58, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_5,EscalarMulWindow_8a817c91638c810b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_6,EscalarMulWindow_8a817d91638c82be, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_7,EscalarMulWindow_8a817e91638c8471, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_8,EscalarMulWindow_8a817791638c788c, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_9,EscalarMulWindow_8a817891638c7a3f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_10,EscalarMulWindow_e6955e0c27caed85, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_11,EscalarMulWindow_e6955d0c27caebd2, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_12,EscalarMulWindow_e6955c0c27caea1f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_13,EscalarMulWindow_e6955b0c27cae86c, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_14,EscalarMulWindow_e6955a0c27cae6b9, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_15,EscalarMulWindow_e695590c27cae506, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_16,EscalarMulWindow_e695580c27cae353, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_17,EscalarMulWindow_e695570c27cae1a0, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_18,EscalarMulWindow_e695660c27cafb1d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_19,EscalarMulWindow_e695650c27caf96a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_20,EscalarMulWindow_e698e40c27ce070e, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_21,EscalarMulWindow_e698e50c27ce08c1, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_22,EscalarMulWindow_e698e20c27ce03a8, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_23,EscalarMulWindow_e698e30c27ce055b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_24,EscalarMulWindow_e698e80c27ce0dda, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_25,EscalarMulWindow_e698e90c27ce0f8d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_26,EscalarMulWindow_e698e60c27ce0a74, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_27,EscalarMulWindow_e698e70c27ce0c27, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_28,EscalarMulWindow_e698dc0c27cdf976, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_29,EscalarMulWindow_e698dd0c27cdfb29, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_30,EscalarMulWindow_e69bea0c27d04717, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_31,EscalarMulWindow_e69be90c27d04564, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_32,EscalarMulWindow_e69bec0c27d04a7d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_33,EscalarMulWindow_e69beb0c27d048ca, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_34,EscalarMulWindow_e69be60c27d0404b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_35,EscalarMulWindow_e69be50c27d03e98, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_36,EscalarMulWindow_e69be80c27d043b1, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_37,EscalarMulWindow_e69be70c27d041fe, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_38,EscalarMulWindow_e69be20c27d0397f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_39,EscalarMulWindow_e69be10c27d037cc, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_40,EscalarMulWindow_e684600c27bc7db8, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_41,EscalarMulWindow_e684610c27bc7f6b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_42,EscalarMulWindow_e684620c27bc811e, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_43,EscalarMulWindow_e684630c27bc82d1, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_44,EscalarMulWindow_e684640c27bc8484, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_45,EscalarMulWindow_e684650c27bc8637, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_46,EscalarMulWindow_e684660c27bc87ea, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_47,EscalarMulWindow_e684670c27bc899d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_48,EscalarMulWindow_e684580c27bc7020, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_49,EscalarMulWindow_e684590c27bc71d3, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_50,EscalarMulWindow_e687e60c27bf9741, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_51,EscalarMulWindow_e687e50c27bf958e, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_52,EscalarMulWindow_e687e40c27bf93db, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_53,EscalarMulWindow_e687e30c27bf9228, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_54,EscalarMulWindow_e687ea0c27bf9e0d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_55,EscalarMulWindow_e687e90c27bf9c5a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_56,EscalarMulWindow_e687e80c27bf9aa7, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_57,EscalarMulWindow_e687e70c27bf98f4, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_58,EscalarMulWindow_e687de0c27bf89a9, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_59,EscalarMulWindow_e687dd0c27bf87f6, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_60,EscalarMulWindow_e68aec0c27c1d74a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_61,EscalarMulWindow_e68aed0c27c1d8fd, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_62,EscalarMulWindow_04331b56a98f2867, 6}
|
|
,{_htMultiMux4,_entryTableMultiMux4,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_1,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_1,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_2,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_2,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_3,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_3,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_4,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_4,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_5,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_5,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_6,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_6,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_7,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_7,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_8,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_8,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_9,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_9,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_10,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_10,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_11,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_11,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_12,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_12,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_13,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_13,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_14,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_14,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_15,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_15,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_16,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_16,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_17,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_17,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_18,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_18,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_19,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_19,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_20,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_20,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_21,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_21,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_22,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_22,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_23,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_23,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_24,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_24,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_25,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_25,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_26,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_26,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_27,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_27,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_28,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_28,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_29,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_29,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_30,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_30,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_31,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_31,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_32,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_32,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_33,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_33,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_34,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_34,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_35,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_35,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_36,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_36,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_37,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_37,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_38,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_38,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_39,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_39,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_40,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_40,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_41,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_41,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_42,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_42,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_43,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_43,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_44,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_44,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_45,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_45,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_46,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_46,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_47,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_47,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_48,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_48,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_49,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_49,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_50,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_50,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_51,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_51,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_52,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_52,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_53,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_53,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_54,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_54,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_55,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_55,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_56,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_56,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_57,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_57,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_58,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_58,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_59,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_59,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_60,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_60,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_61,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_61,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_62,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_62,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_63,EscalarMulWindow_c58c15588b83ea88, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_64,EscalarMulWindow_c58c16588b83ec3b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_65,EscalarMulWindow_c58c17588b83edee, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_66,EscalarMulWindow_c58c18588b83efa1, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_67,EscalarMulWindow_c58c19588b83f154, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_68,EscalarMulWindow_c58c1a588b83f307, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_69,EscalarMulWindow_c58c1b588b83f4ba, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_70,EscalarMulWindow_c58c1c588b83f66d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_71,EscalarMulWindow_c58c0d588b83dcf0, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_72,EscalarMulWindow_c58c0e588b83dea3, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_73,EscalarMulWindow_30f60375112a16b1, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_74,EscalarMulWindow_30f60275112a14fe, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_75,EscalarMulWindow_30f60175112a134b, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_76,EscalarMulWindow_30f60075112a1198, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_77,EscalarMulWindow_30f60775112a1d7d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_78,EscalarMulWindow_30f60675112a1bca, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_79,EscalarMulWindow_30f60575112a1a17, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_80,EscalarMulWindow_30f60475112a1864, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_81,EscalarMulWindow_30f5fb75112a0919, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_82,EscalarMulWindow_30f5fa75112a0766, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_83,EscalarMulWindow_30f98975112d303a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_84,EscalarMulWindow_30f98a75112d31ed, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_85,EscalarMulWindow_30f98775112d2cd4, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_86,EscalarMulWindow_30f98875112d2e87, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_87,EscalarMulWindow_30f98575112d296e, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_88,EscalarMulWindow_30f98675112d2b21, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_89,EscalarMulWindow_30f98375112d2608, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_90,EscalarMulWindow_30f98475112d27bb, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_91,EscalarMulWindow_30f98175112d22a2, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_92,EscalarMulWindow_30f98275112d2455, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_93,EscalarMulWindow_30fcef7511301363, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_94,EscalarMulWindow_30fcee75113011b0, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_95,EscalarMulWindow_30fcf175113016c9, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_96,EscalarMulWindow_30fcf07511301516, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_97,EscalarMulWindow_30fcf37511301a2f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_98,EscalarMulWindow_30fcf2751130187c, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_99,EscalarMulWindow_30fcf57511301d95, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_100,EscalarMulWindow_30fcf47511301be2, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_101,EscalarMulWindow_30fcf775113020fb, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_102,EscalarMulWindow_30fcf67511301f48, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_103,EscalarMulWindow_3100757511332cec, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_104,EscalarMulWindow_3100767511332e9f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_105,EscalarMulWindow_3100777511333052, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_106,EscalarMulWindow_3100787511333205, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_107,EscalarMulWindow_3100717511332620, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_108,EscalarMulWindow_31007275113327d3, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_109,EscalarMulWindow_3100737511332986, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_110,EscalarMulWindow_3100747511332b39, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_111,EscalarMulWindow_31007d7511333a84, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_112,EscalarMulWindow_31007e7511333c37, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_113,EscalarMulWindow_3103fb7511364675, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_114,EscalarMulWindow_3103fa75113644c2, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_115,EscalarMulWindow_3103f9751136430f, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_116,EscalarMulWindow_3103f8751136415c, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_117,EscalarMulWindow_3103f77511363fa9, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_118,EscalarMulWindow_3103f67511363df6, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_119,EscalarMulWindow_3103f57511363c43, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_120,EscalarMulWindow_3103f47511363a90, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_121,EscalarMulWindow_310403751136540d, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_122,EscalarMulWindow_310402751136525a, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_123,EscalarMulWindow_310701751138867e, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_124,EscalarMulWindow_3107027511388831, 6}
|
|
,{_htEscalarMulWindow,_entryTableEscalarMulWindow_125,EscalarMulWindow_d9853d1d04a8f6cb, 6}
|
|
,{_htMultiMux4,_entryTableMultiMux4_63,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_63,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_64,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_64,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_65,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_65,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_66,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_66,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_67,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_67,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_68,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_68,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_69,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_69,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_70,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_70,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_71,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_71,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_72,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_72,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_73,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_73,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_74,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_74,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_75,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_75,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_76,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_76,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_77,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_77,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_78,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_78,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_79,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_79,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_80,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_80,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_81,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_81,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_82,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_82,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_83,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_83,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_84,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_84,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_85,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_85,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_86,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_86,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_87,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_87,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_88,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_88,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_89,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_89,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_90,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_90,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_91,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_91,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_92,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_92,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_93,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_93,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_94,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_94,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_95,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_95,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_96,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_96,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_97,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_97,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_98,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_98,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_99,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_99,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_100,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_100,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_101,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_101,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_102,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_102,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_103,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_103,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_104,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_104,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_105,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_105,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_106,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_106,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_107,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_107,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_108,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_108,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_109,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_109,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_110,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_110,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_111,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_111,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_112,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_112,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_113,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_113,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_114,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_114,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_115,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_115,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_116,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_116,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_117,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_117,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_118,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_118,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_119,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_119,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_120,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_120,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_121,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_121,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_122,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_122,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_123,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_123,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_124,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_124,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htMultiMux4,_entryTableMultiMux4_125,MultiMux4_e43006c194d99269, 36}
|
|
,{_htBabyAdd,_entryTableBabyAdd_125,BabyAdd_4d10bd4b8f5eb590, 4}
|
|
,{_htNum2Bits,_entryTableNum2Bits,Num2Bits_615abe7f710c8f9d, 1}
|
|
,{_htNum2Bits,_entryTableNum2Bits_1,Num2Bits_615abe7f710c8f9d, 1}
|
|
};
|
|
|
|
|
|
// mapIsArray
|
|
u32 _mapIsInput[410] = {
|
|
0xFFFFFFE6,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x7E7FFFFF,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000
|
|
,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07
|
|
,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF
|
|
,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000
|
|
,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81
|
|
,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF
|
|
,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000
|
|
};
|
|
|
|
// Signal Table
|
|
int _wit2sig[5541] = {
|
|
0,12601,12602,1,2,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668
|
|
,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12731,12732
|
|
,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775,12776,12777,12778,12779,12780,12781,12782,12783,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796
|
|
,12797,12798,12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,12828,12829,12830,12831,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12860,12861,12862
|
|
,12863,12864,12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892,12893,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926
|
|
,12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990
|
|
,12991,12992,12993,12994,12995,12996,12997,12998,12999,13000,13001,13002,13003,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054
|
|
,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,6551,6552,847,848,805,806,807,808,809,810
|
|
,811,812,813,814,815,816,817,818,819,820,823,824,825,826,827,828,829,830,831,832,833,834,835,836,839,840,841,842,849,850,851,852,939,940,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,915,916,917,918,919,920,921,922,923,924,925,926,927,928
|
|
,931,932,933,934,941,942,943,944,1031,1032,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1023,1024,1025,1026,1033,1034,1035,1036,1123,1124,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094
|
|
,1095,1096,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1115,1116,1117,1118,1125,1126,1127,1128,1215,1216,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1207,1208,1209,1210,1217,1218,1219,1220
|
|
,1307,1308,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1299,1300,1301,1302,1309,1310,1311,1312,1399,1400,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1375,1376,1377,1378,1379,1380
|
|
,1381,1382,1383,1384,1385,1386,1387,1388,1391,1392,1393,1394,1401,1402,1403,1404,1491,1492,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1483,1484,1485,1486,1493,1494,1495,1496,1583,1584,1541,1542,1543,1544,1545,1546
|
|
,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1575,1576,1577,1578,1585,1586,1587,1588,1675,1676,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664
|
|
,1667,1668,1669,1670,1677,1678,1679,1680,1767,1768,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1769,1770,1771,1772,1859,1860,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830
|
|
,1831,1832,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1851,1852,1853,1854,1861,1862,1863,1864,1951,1952,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1943,1944,1945,1946,1953,1954,1955,1956
|
|
,2043,2044,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2035,2036,2037,2038,2045,2046,2047,2048,2135,2136,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2111,2112,2113,2114,2115,2116
|
|
,2117,2118,2119,2120,2121,2122,2123,2124,2127,2128,2129,2130,2137,2138,2139,2140,2227,2228,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2219,2220,2221,2222,2229,2230,2231,2232,2319,2320,2277,2278,2279,2280,2281,2282
|
|
,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2311,2312,2313,2314,2321,2322,2323,2324,2411,2412,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400
|
|
,2403,2404,2405,2406,2413,2414,2415,2416,2503,2504,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2495,2496,2497,2498,2505,2506,2507,2508,2595,2596,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566
|
|
,2567,2568,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2587,2588,2589,2590,2597,2598,2599,2600,2687,2688,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2679,2680,2681,2682,2689,2690,2691,2692
|
|
,2779,2780,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2771,2772,2773,2774,2781,2782,2783,2784,2871,2872,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2847,2848,2849,2850,2851,2852
|
|
,2853,2854,2855,2856,2857,2858,2859,2860,2863,2864,2865,2866,2873,2874,2875,2876,2963,2964,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2955,2956,2957,2958,2965,2966,2967,2968,3055,3056,3013,3014,3015,3016,3017,3018
|
|
,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3047,3048,3049,3050,3057,3058,3059,3060,3147,3148,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136
|
|
,3139,3140,3141,3142,3149,3150,3151,3152,3239,3240,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3231,3232,3233,3234,3241,3242,3243,3244,3331,3332,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302
|
|
,3303,3304,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3323,3324,3325,3326,3333,3334,3335,3336,3423,3424,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3415,3416,3417,3418,3425,3426,3427,3428
|
|
,3515,3516,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3507,3508,3509,3510,3517,3518,3519,3520,3607,3608,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3583,3584,3585,3586,3587,3588
|
|
,3589,3590,3591,3592,3593,3594,3595,3596,3599,3600,3601,3602,3609,3610,3611,3612,3699,3700,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3691,3692,3693,3694,3701,3702,3703,3704,3791,3792,3749,3750,3751,3752,3753,3754
|
|
,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3783,3784,3785,3786,3793,3794,3795,3796,3883,3884,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872
|
|
,3875,3876,3877,3878,3885,3886,3887,3888,3975,3976,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3967,3968,3969,3970,3977,3978,3979,3980,4067,4068,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038
|
|
,4039,4040,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4059,4060,4061,4062,4069,4070,4071,4072,4159,4160,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4151,4152,4153,4154,4161,4162,4163,4164
|
|
,4251,4252,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4243,4244,4245,4246,4253,4254,4255,4256,4343,4344,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4319,4320,4321,4322,4323,4324
|
|
,4325,4326,4327,4328,4329,4330,4331,4332,4335,4336,4337,4338,4345,4346,4347,4348,4435,4436,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4427,4428,4429,4430,4437,4438,4439,4440,4527,4528,4485,4486,4487,4488,4489,4490
|
|
,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4519,4520,4521,4522,4529,4530,4531,4532,4619,4620,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608
|
|
,4611,4612,4613,4614,4621,4622,4623,4624,4711,4712,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4687,4688,4689,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,4700,4703,4704,4705,4706,4713,4714,4715,4716,4803,4804,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774
|
|
,4775,4776,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4795,4796,4797,4798,4805,4806,4807,4808,4895,4896,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,4884,4887,4888,4889,4890,4897,4898,4899,4900
|
|
,4987,4988,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,4960,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4979,4980,4981,4982,4989,4990,4991,4992,5079,5080,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5055,5056,5057,5058,5059,5060
|
|
,5061,5062,5063,5064,5065,5066,5067,5068,5071,5072,5073,5074,5081,5082,5083,5084,5171,5172,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5163,5164,5165,5166,5173,5174,5175,5176,5263,5264,5221,5222,5223,5224,5225,5226
|
|
,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5255,5256,5257,5258,5265,5266,5267,5268,5355,5356,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344
|
|
,5347,5348,5349,5350,5357,5358,5359,5360,5447,5448,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5439,5440,5441,5442,5449,5450,5451,5452,5539,5540,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510
|
|
,5511,5512,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5531,5532,5533,5534,5541,5542,5543,5544,5631,5632,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5623,5624,5625,5626,5633,5634,5635,5636
|
|
,5723,5724,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5715,5716,5717,5718,5725,5726,5727,5728,5815,5816,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5791,5792,5793,5794,5795,5796
|
|
,5797,5798,5799,5800,5801,5802,5803,5804,5807,5808,5809,5810,5817,5818,5819,5820,5907,5908,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5899,5900,5901,5902,5909,5910,5911,5912,5999,6000,5957,5958,5959,5960,5961,5962
|
|
,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5991,5992,5993,5994,6001,6002,6003,6004,6091,6092,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080
|
|
,6083,6084,6085,6086,6093,6094,6095,6096,6183,6184,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6175,6176,6177,6178,6185,6186,6187,6188,6275,6276,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246
|
|
,6247,6248,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6267,6268,6269,6270,6277,6278,6279,6280,6367,6368,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6359,6360,6361,6362,6369,6370,6371,6372
|
|
,6459,6460,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6451,6452,6453,6454,6461,6462,6463,6464,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6527,6528,6529,6530,6531,6532,6533,6534
|
|
,6535,6536,6537,6538,6539,6540,6543,6544,6545,6546,6553,6554,6555,6556,6897,6898,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6889,6890,6891,6892,6899,6900,6901,6902,6989,6990,6947,6948,6949,6950,6951,6952,6953,6954
|
|
,6955,6956,6957,6958,6959,6960,6961,6962,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6981,6982,6983,6984,6991,6992,6993,6994,7081,7082,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7073,7074
|
|
,7075,7076,7083,7084,7085,7086,7173,7174,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7165,7166,7167,7168,7175,7176,7177,7178,7265,7266,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238
|
|
,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7257,7258,7259,7260,7267,7268,7269,7270,7357,7358,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7349,7350,7351,7352,7359,7360,7361,7362,7449,7450
|
|
,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7441,7442,7443,7444,7451,7452,7453,7454,7541,7542,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7517,7518,7519,7520,7521,7522,7523,7524
|
|
,7525,7526,7527,7528,7529,7530,7533,7534,7535,7536,7543,7544,7545,7546,7633,7634,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7625,7626,7627,7628,7635,7636,7637,7638,7725,7726,7683,7684,7685,7686,7687,7688,7689,7690
|
|
,7691,7692,7693,7694,7695,7696,7697,7698,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7717,7718,7719,7720,7727,7728,7729,7730,7817,7818,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7809,7810
|
|
,7811,7812,7819,7820,7821,7822,7909,7910,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7901,7902,7903,7904,7911,7912,7913,7914,8001,8002,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974
|
|
,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7993,7994,7995,7996,8003,8004,8005,8006,8093,8094,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8085,8086,8087,8088,8095,8096,8097,8098,8185,8186
|
|
,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8177,8178,8179,8180,8187,8188,8189,8190,8277,8278,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8253,8254,8255,8256,8257,8258,8259,8260
|
|
,8261,8262,8263,8264,8265,8266,8269,8270,8271,8272,8279,8280,8281,8282,8369,8370,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8361,8362,8363,8364,8371,8372,8373,8374,8461,8462,8419,8420,8421,8422,8423,8424,8425,8426
|
|
,8427,8428,8429,8430,8431,8432,8433,8434,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8453,8454,8455,8456,8463,8464,8465,8466,8553,8554,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8545,8546
|
|
,8547,8548,8555,8556,8557,8558,8645,8646,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8637,8638,8639,8640,8647,8648,8649,8650,8737,8738,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710
|
|
,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8729,8730,8731,8732,8739,8740,8741,8742,8829,8830,8787,8788,8789,8790,8791,8792,8793,8794,8795,8796,8797,8798,8799,8800,8801,8802,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8816,8817,8818,8821,8822,8823,8824,8831,8832,8833,8834,8921,8922
|
|
,8879,8880,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8913,8914,8915,8916,8923,8924,8925,8926,9013,9014,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8989,8990,8991,8992,8993,8994,8995,8996
|
|
,8997,8998,8999,9000,9001,9002,9005,9006,9007,9008,9015,9016,9017,9018,9105,9106,9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9097,9098,9099,9100,9107,9108,9109,9110,9197,9198,9155,9156,9157,9158,9159,9160,9161,9162
|
|
,9163,9164,9165,9166,9167,9168,9169,9170,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9189,9190,9191,9192,9199,9200,9201,9202,9289,9290,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259,9260,9261,9262,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9275,9276,9277,9278,9281,9282
|
|
,9283,9284,9291,9292,9293,9294,9381,9382,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9352,9353,9354,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9373,9374,9375,9376,9383,9384,9385,9386,9473,9474,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446
|
|
,9449,9450,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9465,9466,9467,9468,9475,9476,9477,9478,9565,9566,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9557,9558,9559,9560,9567,9568,9569,9570,9657,9658
|
|
,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9649,9650,9651,9652,9659,9660,9661,9662,9749,9750,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9725,9726,9727,9728,9729,9730,9731,9732
|
|
,9733,9734,9735,9736,9737,9738,9741,9742,9743,9744,9751,9752,9753,9754,9841,9842,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9833,9834,9835,9836,9843,9844,9845,9846,9933,9934,9891,9892,9893,9894,9895,9896,9897,9898
|
|
,9899,9900,9901,9902,9903,9904,9905,9906,9909,9910,9911,9912,9913,9914,9915,9916,9917,9918,9919,9920,9921,9922,9925,9926,9927,9928,9935,9936,9937,9938,10025,10026,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10017,10018
|
|
,10019,10020,10027,10028,10029,10030,10117,10118,10075,10076,10077,10078,10079,10080,10081,10082,10083,10084,10085,10086,10087,10088,10089,10090,10093,10094,10095,10096,10097,10098,10099,10100,10101,10102,10103,10104,10105,10106,10109,10110,10111,10112,10119,10120,10121,10122,10209,10210,10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182
|
|
,10185,10186,10187,10188,10189,10190,10191,10192,10193,10194,10195,10196,10197,10198,10201,10202,10203,10204,10211,10212,10213,10214,10301,10302,10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,10274,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287,10288,10289,10290,10293,10294,10295,10296,10303,10304,10305,10306,10393,10394
|
|
,10351,10352,10353,10354,10355,10356,10357,10358,10359,10360,10361,10362,10363,10364,10365,10366,10369,10370,10371,10372,10373,10374,10375,10376,10377,10378,10379,10380,10381,10382,10385,10386,10387,10388,10395,10396,10397,10398,10485,10486,10443,10444,10445,10446,10447,10448,10449,10450,10451,10452,10453,10454,10455,10456,10457,10458,10461,10462,10463,10464,10465,10466,10467,10468
|
|
,10469,10470,10471,10472,10473,10474,10477,10478,10479,10480,10487,10488,10489,10490,10577,10578,10535,10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,10546,10547,10548,10549,10550,10553,10554,10555,10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10569,10570,10571,10572,10579,10580,10581,10582,10669,10670,10627,10628,10629,10630,10631,10632,10633,10634
|
|
,10635,10636,10637,10638,10639,10640,10641,10642,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655,10656,10657,10658,10661,10662,10663,10664,10671,10672,10673,10674,10761,10762,10719,10720,10721,10722,10723,10724,10725,10726,10727,10728,10729,10730,10731,10732,10733,10734,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10753,10754
|
|
,10755,10756,10763,10764,10765,10766,10853,10854,10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10845,10846,10847,10848,10855,10856,10857,10858,10945,10946,10903,10904,10905,10906,10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918
|
|
,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,10933,10934,10937,10938,10939,10940,10947,10948,10949,10950,11037,11038,10995,10996,10997,10998,10999,11000,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11013,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11029,11030,11031,11032,11039,11040,11041,11042,11129,11130
|
|
,11087,11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,11116,11117,11118,11121,11122,11123,11124,11131,11132,11133,11134,11221,11222,11179,11180,11181,11182,11183,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11197,11198,11199,11200,11201,11202,11203,11204
|
|
,11205,11206,11207,11208,11209,11210,11213,11214,11215,11216,11223,11224,11225,11226,11313,11314,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11305,11306,11307,11308,11315,11316,11317,11318,11405,11406,11363,11364,11365,11366,11367,11368,11369,11370
|
|
,11371,11372,11373,11374,11375,11376,11377,11378,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11397,11398,11399,11400,11407,11408,11409,11410,11497,11498,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11489,11490
|
|
,11491,11492,11499,11500,11501,11502,11589,11590,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11581,11582,11583,11584,11591,11592,11593,11594,11681,11682,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654
|
|
,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11673,11674,11675,11676,11683,11684,11685,11686,11773,11774,11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,11741,11742,11743,11744,11745,11746,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11765,11766,11767,11768,11775,11776,11777,11778,11865,11866
|
|
,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,11835,11836,11837,11838,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850,11851,11852,11853,11854,11857,11858,11859,11860,11867,11868,11869,11870,11957,11958,11915,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928,11929,11930,11933,11934,11935,11936,11937,11938,11939,11940
|
|
,11941,11942,11943,11944,11945,11946,11949,11950,11951,11952,11959,11960,11961,11962,12049,12050,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021,12022,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037,12038,12041,12042,12043,12044,12051,12052,12053,12054,12141,12142,12099,12100,12101,12102,12103,12104,12105,12106
|
|
,12107,12108,12109,12110,12111,12112,12113,12114,12117,12118,12119,12120,12121,12122,12123,12124,12125,12126,12127,12128,12129,12130,12133,12134,12135,12136,12143,12144,12145,12146,12233,12234,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204,12205,12206,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,12222,12225,12226
|
|
,12227,12228,12235,12236,12237,12238,12325,12326,12283,12284,12285,12286,12287,12288,12289,12290,12291,12292,12293,12294,12295,12296,12297,12298,12301,12302,12303,12304,12305,12306,12307,12308,12309,12310,12311,12312,12313,12314,12317,12318,12319,12320,12327,12328,12329,12330,12417,12418,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390
|
|
,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12409,12410,12411,12412,12419,12420,12421,12422,12509,12510,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12501,12502,12503,12504,12511,12512,12513,12514,12559,12560
|
|
,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12590,12593,12594,12595,12596,12603,12604,12605,12606
|
|
};
|
|
|
|
Circom_Circuit _circuit = {
|
|
NSignals,
|
|
NComponents,
|
|
NInputs,
|
|
NOutputs,
|
|
NVars,
|
|
_wit2sig,
|
|
_components,
|
|
_mapIsInput,
|
|
__P__
|
|
};
|