# File timestamp (UTC): 2021-02-22T07:01:04.152 # NIST Circuit Complexity Project # https://csrc.nist.gov/projects/circuit-complexity begin circuit Whirlpool--rs=4 # Boolean Circuit for a linear system y = A.x defined by a 64x64 bit-matrix A # Matrix A weights (W): totalW=904, adjW=840, minWInRow=10, maxWInRow=25, minWInCol=10, maxWICol=21 # Matrix represented as 64 rows: vecRows=UInt64[0x0104010805020901, 0x020802100a041202, 0x0410042014082404, 0x0820084028104808, 0x1040108050209010, 0x2080201da0403d20, 0x401d403a5d807a40, 0x803a8074ba1df480, 0x0401080502090101, 0x0802100a04120202, 0x1004201408240404, 0x2008402810480808, 0x4010805020901010, 0x80201da0403d2020, 0x1d403a5d807a4040, 0x3a8074ba1df48080, 0x0108050209010104, 0x02100a0412020208, 0x0420140824040410, 0x0840281048080820, 0x1080502090101040, 0x201da0403d202080, 0x403a5d807a40401d, 0x8074ba1df480803a, 0x0805020901010401, 0x100a041202020802, 0x2014082404041004, 0x4028104808082008, 0x8050209010104010, 0x1da0403d20208020, 0x3a5d807a40401d40, 0x74ba1df480803a80, 0x0502090101040108, 0x0a04120202080210, 0x1408240404100420, 0x2810480808200840, 0x5020901010401080, 0xa0403d202080201d, 0x5d807a40401d403a, 0xba1df480803a8074, 0x0209010104010805, 0x041202020802100a, 0x0824040410042014, 0x1048080820084028, 0x2090101040108050, 0x403d202080201da0, 0x807a40401d403a5d, 0x1df480803a8074ba, 0x0901010401080502, 0x1202020802100a04, 0x2404041004201408, 0x4808082008402810, 0x9010104010805020, 0x3d202080201da040, 0x7a40401d403a5d80, 0xf480803a8074ba1d, 0x0101040108050209, 0x02020802100a0412, 0x0404100420140824, 0x0808200840281048, 0x1010401080502090, 0x202080201da0403d, 0x40401d403a5d807a, 0x80803a8074ba1df4] # Matrix represented as 64 columns: vecCols=UInt64[0x2180412001400101, 0x4201824002800202, 0xa48245a004410404, 0x6984ca6108c20808, 0xf288d4e210c41010, 0xe410a8c420882020, 0xc820508840104040, 0x9040a01080208080, 0x8041200140010121, 0x0182400280020242, 0x8245a004410404a4, 0x84ca6108c2080869, 0x88d4e210c41010f2, 0x10a8c420882020e4, 0x20508840104040c8, 0x40a0108020808090, 0x4120014001012180, 0x8240028002024201, 0x45a004410404a482, 0xca6108c208086984, 0xd4e210c41010f288, 0xa8c420882020e410, 0x508840104040c820, 0xa010802080809040, 0x2001400101218041, 0x4002800202420182, 0xa004410404a48245, 0x6108c208086984ca, 0xe210c41010f288d4, 0xc420882020e410a8, 0x8840104040c82050, 0x10802080809040a0, 0x0140010121804120, 0x0280020242018240, 0x04410404a48245a0, 0x08c208086984ca61, 0x10c41010f288d4e2, 0x20882020e410a8c4, 0x40104040c8205088, 0x802080809040a010, 0x4001012180412001, 0x8002024201824002, 0x410404a48245a004, 0xc208086984ca6108, 0xc41010f288d4e210, 0x882020e410a8c420, 0x104040c820508840, 0x2080809040a01080, 0x0101218041200140, 0x0202420182400280, 0x0404a48245a00441, 0x08086984ca6108c2, 0x1010f288d4e210c4, 0x2020e410a8c42088, 0x4040c82050884010, 0x80809040a0108020, 0x0121804120014001, 0x0242018240028002, 0x04a48245a0044104, 0x086984ca6108c208, 0x10f288d4e210c410, 0x20e410a8c4208820, 0x40c8205088401040, 0x809040a010802080] # The element in the i-th row and j-th col of A is A[i,j] = 1 & (vecRows[i]>>(j-1)) = 1 & (vecCols[j]>>(i-1)) # Matrix obtained from: https://github.com/rub-hgi/shorter_linear_slps_for_mds_matrices # Tally: 64 inputs, 64 outputs, 425 gates (425 XOR) # Depth: 11 Inputs: x1:x64 Outputs: y1:y64 Internal: t1:t361 GateSyntax: GateName Output Inputs # Regex find gate in new format: XOR\s([ty]\d+)\s([tyx]\d+)\s([tyx]\d+).*$ # Regex replacing to old format: \1 = XOR\(\2,\3\) begin SLP XOR t1 x24 x48 XOR t2 x8 x32 XOR t3 x16 x56 XOR t4 x40 x64 XOR t5 x39 x63 XOR t6 x15 x55 XOR t7 x7 x31 XOR t8 x23 x47 XOR t9 x38 x62 XOR t10 x22 x46 XOR t11 x6 x30 XOR t12 x14 x54 XOR t13 x23 x32 XOR t14 x56 t8 XOR t15 x38 t13 XOR t16 x55 x64 XOR t17 x24 t6 XOR t18 x6 t16 XOR t19 x44 t1 XOR t20 x12 t3 XOR t21 x53 t2 XOR t22 x46 t18 XOR t23 x21 t4 XOR t24 x14 t15 XOR t25 x60 t7 XOR t26 x40 t10 XOR t27 x28 t5 XOR t28 x8 t12 XOR t29 x32 x64 XOR t30 x39 t17 XOR t31 x7 t14 XOR t32 x22 x62 XOR t33 x30 x54 XOR t34 x43 t1 XOR t35 x11 t3 XOR t36 x25 x57 XOR t37 x9 x41 XOR t38 t36 t37 XOR t39 x1 x49 XOR t40 x33 t39 XOR t41 x17 t40 XOR t42 x10 x58 XOR t43 x42 t42 XOR t44 x26 t43 XOR t45 x34 x50 XOR t46 x2 t45 XOR t47 x18 t46 XOR t48 t9 t14 XOR t49 t11 t17 XOR t50 x27 x59 XOR t51 x63 t24 XOR t52 x31 t22 XOR t53 x39 x48 XOR t54 x61 t23 XOR t55 x7 x16 XOR t56 x29 t21 XOR t57 x14 x46 XOR t58 x13 x37 XOR t59 x5 x45 XOR t60 x52 t31 XOR t61 x20 t30 XOR t62 x3 x35 XOR t63 x19 t62 XOR t64 x51 t63 XOR t65 x4 x36 XOR t66 t5 t28 XOR t67 t7 t26 XOR t68 x43 t50 XOR t69 x11 t68 XOR t70 t4 t6 XOR t71 t2 t8 XOR t72 x36 t20 XOR t73 x4 t19 XOR t74 t25 t61 XOR t75 t27 t60 XOR t76 x2 t35 XOR t77 x19 x28 XOR t78 x51 x60 XOR t79 x53 t30 XOR t80 x21 t31 XOR t81 t14 t17 XOR t82 t13 t47 XOR t83 t16 t47 XOR t84 t30 t31 XOR t85 x41 t4 XOR t86 x9 t2 XOR t87 t49 t72 XOR t88 x8 x40 XOR t89 t48 t73 XOR t90 x33 x57 XOR t91 x16 x48 XOR t92 x57 t53 XOR t93 t33 t92 XOR t94 x15 t93 XOR y57 t41 t94 XOR t95 x1 x25 XOR t96 t55 t85 XOR t97 x47 t32 XOR t98 t9 t29 XOR t99 x15 x62 XOR t100 x42 t90 XOR t101 x37 x61 XOR t102 t79 t101 XOR t103 x13 x45 XOR t104 x5 x29 XOR t105 t80 t104 XOR t106 x25 t55 XOR t107 x8 t64 XOR t108 x24 t88 XOR t109 t3 t108 XOR t110 x58 t83 XOR t111 t107 t108 XOR t112 t11 t29 XOR t113 x45 x54 XOR t114 x15 x63 XOR t115 x47 x55 XOR t116 x31 t114 XOR t117 x20 t19 XOR t118 x35 t49 XOR t119 x3 t48 XOR t120 x52 t20 XOR t121 x30 t57 XOR t122 x62 t57 XOR t123 t34 t77 XOR t124 x17 t3 XOR t125 x48 t52 XOR t126 x10 t77 XOR t127 t33 t123 XOR t128 x44 t25 XOR t129 x34 t7 XOR t130 x51 t26 XOR t131 x49 x58 XOR t132 x12 t27 XOR t133 x34 t54 XOR t134 x59 t51 XOR t135 t56 t78 XOR t136 x58 t105 XOR t137 t103 t133 XOR t138 x5 t35 XOR t139 x38 t104 XOR t140 t4 t24 XOR t141 x54 t139 XOR t142 x35 t138 XOR t143 x26 t102 XOR t144 x52 t74 XOR t145 t65 t144 XOR t146 x9 t128 XOR t147 x27 x42 XOR t148 x3 t34 XOR t149 x61 t148 XOR t150 x18 t149 XOR t151 x20 t132 XOR t152 t65 t75 XOR t153 x26 x41 XOR t154 x41 t51 XOR y41 t41 t154 XOR t155 t41 t106 XOR y25 t97 t155 XOR t156 x33 t49 XOR y33 t38 t156 XOR t157 x17 t66 XOR y17 t38 t157 XOR t158 x35 t124 XOR t159 t91 t140 XOR y40 t141 t159 XOR t160 t41 t52 XOR y9 x9 t160 XOR t161 t44 t129 XOR y34 t124 t161 XOR t162 t38 t48 XOR y1 x1 t162 XOR t163 t38 t67 XOR y49 x49 t163 XOR t164 t7 t110 XOR y58 t96 t164 XOR t165 t22 t71 XOR t166 t81 t165 XOR y32 t54 t166 XOR t167 x57 t82 XOR t168 x10 t167 XOR y10 t31 t168 XOR t169 x42 t30 XOR t170 x25 t169 XOR y42 t83 t170 XOR t171 t33 t109 XOR t172 x63 t59 XOR y16 t171 t172 XOR t173 x18 t70 XOR t174 x1 t173 XOR y18 t44 t174 XOR t175 t81 t140 XOR t176 t56 t175 XOR y64 t6 t176 XOR t177 x33 t44 XOR t178 t71 t177 XOR y50 x50 t178 XOR t179 t15 t56 XOR t180 t84 t89 XOR y15 t179 t180 XOR t181 t116 t117 XOR t182 t139 t181 XOR y55 t115 t182 XOR t183 t18 t84 XOR t184 t54 t183 XOR y47 t87 t184 XOR t185 x11 t125 XOR t186 t131 t185 XOR t187 t107 t186 XOR y11 x25 t187 XOR t188 x50 t119 XOR t189 x17 t85 XOR t190 t69 t189 XOR y3 t188 t190 XOR t191 t1 t5 XOR t192 x2 x49 XOR t193 t44 t192 XOR y2 t191 t193 XOR t194 x48 t86 XOR t195 x26 x63 XOR t196 t82 t194 XOR y26 t195 t196 XOR t197 t48 t123 XOR t198 t137 t197 XOR t199 t75 t198 XOR y5 t136 t199 XOR t200 t66 t76 XOR t201 t68 t200 XOR t202 x19 t90 XOR y19 t201 t202 XOR t203 t89 t132 XOR t204 t78 t203 XOR t205 x18 t100 XOR y4 t204 t205 XOR t206 t1 t95 XOR t207 t69 t130 XOR t208 t129 t207 XOR y51 t206 t208 XOR t209 t101 t120 XOR t210 x6 t116 XOR t211 t209 t210 XOR y23 t8 t211 XOR t212 t32 t109 XOR t213 x31 t58 XOR t214 x4 x37 XOR t215 t212 t213 XOR y48 t91 t215 XOR t216 t71 t122 XOR t217 t214 t216 XOR y54 t127 t217 XOR t218 x49 t69 XOR t219 t86 t218 XOR t220 x18 t219 XOR y35 t118 t220 XOR t221 t95 t126 XOR t222 x50 t128 XOR t223 t87 t221 XOR y36 t222 t223 XOR t224 t59 t99 XOR t225 t24 t74 XOR t226 t98 t225 XOR y31 t224 t226 XOR t227 x21 t112 XOR t228 t3 t227 XOR t229 x45 t53 XOR y56 t228 t229 XOR t230 x32 t58 XOR t231 t75 t115 XOR t232 t230 t231 XOR y63 x46 t232 XOR t233 t1 t55 XOR t234 x13 t98 XOR t235 t233 t234 XOR y24 x53 t235 XOR t236 t16 t101 XOR t237 t91 t236 XOR t238 t10 t237 XOR y8 t2 t238 XOR t239 t86 t107 XOR t240 x59 t239 XOR t241 t94 t100 XOR t242 t240 t241 XOR y59 x56 t242 XOR t243 t52 t98 XOR t244 t113 t130 XOR t245 t243 t244 XOR t246 x27 t72 XOR y62 t245 t246 XOR t247 t74 t142 XOR t248 t67 t141 XOR t249 x56 t18 XOR t250 t247 t249 XOR y46 t248 t250 XOR t251 t49 t74 XOR t252 t135 t251 XOR t253 t76 t103 XOR t254 t252 t253 XOR y37 t143 t254 XOR t255 x36 t23 XOR t256 x47 t255 XOR t257 t25 t113 XOR t258 t114 t256 XOR y7 t257 t258 XOR t259 t117 t122 XOR t260 t118 t134 XOR t261 t79 t260 XOR t262 t259 t261 XOR y6 t140 t262 XOR t263 t213 t214 XOR t264 t97 t263 XOR t265 t21 t99 XOR t266 t27 t264 XOR y39 t265 t266 XOR t267 x27 t97 XOR t268 x1 t267 XOR t269 x10 t111 XOR t270 t96 t268 XOR y27 t269 t270 XOR t271 t70 t121 XOR t272 t32 t271 XOR t273 x36 t78 XOR t274 t135 t147 XOR t275 t272 t273 XOR y22 t138 t275 XOR t276 x2 t274 XOR t277 t13 t105 XOR t278 t230 t277 XOR t279 t276 t278 XOR y13 t125 t279 XOR t280 x43 t273 XOR t281 t150 t274 XOR t282 t67 t280 XOR t283 t103 t282 XOR t284 t8 t283 XOR y53 t281 t284 XOR t285 x40 t55 XOR t286 t127 t221 XOR t287 x34 t286 XOR t288 t285 t287 XOR t289 t145 t288 XOR y60 t39 t289 XOR t290 t91 y41 XOR t291 t34 t39 XOR t292 t111 t291 XOR t293 t90 t153 XOR t294 t292 t293 XOR y43 t290 t294 XOR t295 x19 t73 XOR t296 t134 t295 XOR t297 t112 t296 XOR t298 t28 t297 XOR t299 x22 t298 XOR y30 x13 t299 XOR t300 x33 t146 XOR t301 x27 t46 XOR t302 t110 t301 XOR t303 t51 t302 XOR t304 t300 t303 XOR y44 t145 t304 XOR t305 t80 t120 XOR t306 t119 t305 XOR t307 x27 t121 XOR t308 x31 t306 XOR t309 t2 t307 XOR y38 t308 t309 XOR t310 x55 t102 XOR t311 t59 t133 XOR t312 x16 t126 XOR t313 t134 t312 XOR t314 t310 t313 XOR y45 t311 t314 XOR t315 x24 t149 XOR t316 x22 t15 XOR t317 t66 t315 XOR t318 x6 t75 XOR t319 t317 t318 XOR y14 t316 t319 XOR t320 t129 t151 XOR t321 t131 t320 XOR t322 t28 t146 XOR t323 x3 t321 XOR t324 t70 t323 XOR y20 t322 t324 XOR t325 t152 t157 XOR t326 x20 x42 XOR t327 x8 t32 XOR t328 t92 t327 XOR t329 t200 t328 XOR t330 t325 t329 XOR y28 t326 t330 XOR t331 x50 t142 XOR t332 x31 t19 XOR t333 t143 t331 XOR t334 t23 t29 XOR t335 t33 t334 XOR t336 t332 t335 XOR y61 t333 t336 XOR t337 t151 t153 XOR t338 x1 x59 XOR t339 x50 t337 XOR t340 t13 t52 XOR t341 t152 t340 XOR t342 t338 t341 XOR y12 t339 t342 XOR t343 x22 t29 XOR t344 t101 t114 XOR t345 t20 t136 XOR t346 t265 t345 XOR t347 t344 t346 XOR t348 t343 t347 XOR y29 t150 t348 XOR t349 t71 t153 XOR t350 t120 t158 XOR t351 x2 t349 XOR t352 x28 t128 XOR t353 t351 t352 XOR t354 t350 t353 XOR y52 t26 t354 XOR t355 t137 t158 XOR t356 x4 x59 XOR t357 x29 t356 XOR t358 x10 t355 XOR t359 t45 t357 XOR t360 t6 t359 XOR t361 t358 t360 XOR y21 t157 t361 end SLP end circuit