# File timestamp (UTC): 2021-02-23T00:37:49.454 # NIST Circuit Complexity Project # https://csrc.nist.gov/projects/circuit-complexity begin circuit ARIA--rs=48 # Boolean Circuit for a linear system y = A.x defined by a 128x128 bit-matrix A # Matrix A weights (W): totalW=896, adjW=768, minWInRow=7, maxWInRow=7, minWInCol=7, maxWICol=7 # Matrix represented as 128 rows: vecRows=UInt128[0x00010100000001010001000101000000, 0x00020200000002020002000202000000, 0x00040400000004040004000404000000, 0x00080800000008080008000808000000, 0x00101000000010100010001010000000, 0x00202000000020200020002020000000, 0x00404000000040400040004040000000, 0x00808000000080800080008080000000, 0x01000001000001010100010000010000, 0x02000002000002020200020000020000, 0x04000004000004040400040000040000, 0x08000008000008080800080000080000, 0x10000010000010101000100000100000, 0x20000020000020202000200000200000, 0x40000040000040404000400000400000, 0x80000080000080808000800000800000, 0x01000001010100000001000100000100, 0x02000002020200000002000200000200, 0x04000004040400000004000400000400, 0x08000008080800000008000800000800, 0x10000010101000000010001000001000, 0x20000020202000000020002000002000, 0x40000040404000000040004000004000, 0x80000080808000000080008000008000, 0x00010100010100000100010000000001, 0x00020200020200000200020000000002, 0x00040400040400000400040000000004, 0x00080800080800000800080000000008, 0x00101000101000001000100000000010, 0x00202000202000002000200000000020, 0x00404000404000004000400000000040, 0x00808000808000008000800000000080, 0x01010000010000010000010000010001, 0x02020000020000020000020000020002, 0x04040000040000040000040000040004, 0x08080000080000080000080000080008, 0x10100000100000100000100000100010, 0x20200000200000200000200000200020, 0x40400000400000400000400000400040, 0x80800000800000800000800000800080, 0x01010000000101000000000101000100, 0x02020000000202000000000202000200, 0x04040000000404000000000404000400, 0x08080000000808000000000808000800, 0x10100000001010000000001010001000, 0x20200000002020000000002020002000, 0x40400000004040000000004040004000, 0x80800000008080000000008080008000, 0x00000101000101000100000000010001, 0x00000202000202000200000000020002, 0x00000404000404000400000000040004, 0x00000808000808000800000000080008, 0x00001010001010001000000000100010, 0x00002020002020002000000000200020, 0x00004040004040004000000000400040, 0x00008080008080008000000000800080, 0x00000101010000010001000001000100, 0x00000202020000020002000002000200, 0x00000404040000040004000004000400, 0x00000808080000080008000008000800, 0x00001010100000100010000010001000, 0x00002020200000200020000020002000, 0x00004040400000400040000040004000, 0x00008080800000800080000080008000, 0x01000100000100000100000100000101, 0x02000200000200000200000200000202, 0x04000400000400000400000400000404, 0x08000800000800000800000800000808, 0x10001000001000001000001000001010, 0x20002000002000002000002000002020, 0x40004000004000004000004000004040, 0x80008000008000008000008000008080, 0x00010001010000000001010000000101, 0x00020002020000000002020000000202, 0x00040004040000000004040000000404, 0x00080008080000000008080000000808, 0x00100010100000000010100000001010, 0x00200020200000000020200000002020, 0x00400040400000000040400000004040, 0x00800080800000000080800000008080, 0x01000100000000010001010001010000, 0x02000200000000020002020002020000, 0x04000400000000040004040004040000, 0x08000800000000080008080008080000, 0x10001000000000100010100010100000, 0x20002000000000200020200020200000, 0x40004000000000400040400040400000, 0x80008000000000800080800080800000, 0x00010001000001000100000101010000, 0x00020002000002000200000202020000, 0x00040004000004000400000404040000, 0x00080008000008000800000808080000, 0x00100010000010001000001010100000, 0x00200020000020002000002020200000, 0x00400040000040004000004040400000, 0x00800080000080008000008080800000, 0x00000001010001000101000000010100, 0x00000002020002000202000000020200, 0x00000004040004000404000000040400, 0x00000008080008000808000000080800, 0x00000010100010001010000000101000, 0x00000020200020002020000000202000, 0x00000040400040004040000000404000, 0x00000080800080008080000000808000, 0x00000100000100010101000001000001, 0x00000200000200020202000002000002, 0x00000400000400040404000004000004, 0x00000800000800080808000008000008, 0x00001000001000101010000010000010, 0x00002000002000202020000020000020, 0x00004000004000404040000040000040, 0x00008000008000808080000080000080, 0x00010000010001000000010101000001, 0x00020000020002000000020202000002, 0x00040000040004000000040404000004, 0x00080000080008000000080808000008, 0x00100000100010000000101010000010, 0x00200000200020000000202020000020, 0x00400000400040000000404040000040, 0x00800000800080000000808080000080, 0x01000000000100010000010100010100, 0x02000000000200020000020200020200, 0x04000000000400040000040400040400, 0x08000000000800080000080800080800, 0x10000000001000100000101000101000, 0x20000000002000200000202000202000, 0x40000000004000400000404000404000, 0x80000000008000800000808000808000] # Matrix represented as 128 columns: vecCols=UInt128[0x00000000000000000001000101000000, 0x00000000000000000002000202000000, 0x00000000000000000004000404000000, 0x00000000000000000008000808000000, 0x00000000000000000010001010000000, 0x00000000000000000020002020000000, 0x00000000000000000040004040000000, 0x00000000000000000080008080000000, 0x00000000000000000100010000010000, 0x00000000000000000200020000020000, 0x00000000000000000400040000040000, 0x00000000000000000800080000080000, 0x00000000000000001000100000100000, 0x00000000000000002000200000200000, 0x00000000000000004000400000400000, 0xffffffffffffffff8000800000800000, 0x00000000000000000001000100000100, 0x00000000000000000002000200000200, 0x00000000000000000004000400000400, 0x00000000000000000008000800000800, 0x00000000000000000010001000001000, 0x00000000000000000020002000002000, 0x00000000000000000040004000004000, 0x00000000000000000080008000008000, 0x00000000000000000100010000000001, 0x00000000000000000200020000000002, 0x00000000000000000400040000000004, 0x00000000000000000800080000000008, 0x00000000000000001000100000000010, 0x00000000000000002000200000000020, 0x00000000000000004000400000000040, 0xffffffffffffffff8000800000000080, 0x00000000000000000000010000010001, 0x00000000000000000000020000020002, 0x00000000000000000000040000040004, 0x00000000000000000000080000080008, 0x00000000000000000000100000100010, 0x00000000000000000000200000200020, 0x00000000000000000000400000400040, 0x00000000000000000000800000800080, 0x00000000000000000000000101000100, 0x00000000000000000000000202000200, 0x00000000000000000000000404000400, 0x00000000000000000000000808000800, 0x00000000000000000000001010001000, 0x00000000000000000000002020002000, 0x00000000000000000000004040004000, 0x00000000000000000000008080008000, 0x00000000000000000100000000010001, 0x00000000000000000200000000020002, 0x00000000000000000400000000040004, 0x00000000000000000800000000080008, 0x00000000000000001000000000100010, 0x00000000000000002000000000200020, 0x00000000000000004000000000400040, 0xffffffffffffffff8000000000800080, 0x00000000000000000001000001000100, 0x00000000000000000002000002000200, 0x00000000000000000004000004000400, 0x00000000000000000008000008000800, 0x00000000000000000010000010001000, 0x00000000000000000020000020002000, 0x00000000000000000040000040004000, 0x00000000000000000080000080008000, 0x00000000000000000100000100000101, 0x00000000000000000200000200000202, 0x00000000000000000400000400000404, 0x00000000000000000800000800000808, 0x00000000000000001000001000001010, 0x00000000000000002000002000002020, 0x00000000000000004000004000004040, 0xffffffffffffffff8000008000008080, 0x00000000000000000001010000000101, 0x00000000000000000002020000000202, 0x00000000000000000004040000000404, 0x00000000000000000008080000000808, 0x00000000000000000010100000001010, 0x00000000000000000020200000002020, 0x00000000000000000040400000004040, 0x00000000000000000080800000008080, 0x00000000000000000001010001010000, 0x00000000000000000002020002020000, 0x00000000000000000004040004040000, 0x00000000000000000008080008080000, 0x00000000000000000010100010100000, 0x00000000000000000020200020200000, 0x00000000000000000040400040400000, 0x00000000000000000080800080800000, 0x00000000000000000100000101010000, 0x00000000000000000200000202020000, 0x00000000000000000400000404040000, 0x00000000000000000800000808080000, 0x00000000000000001000001010100000, 0x00000000000000002000002020200000, 0x00000000000000004000004040400000, 0xffffffffffffffff8000008080800000, 0x00000000000000000101000000010100, 0x00000000000000000202000000020200, 0x00000000000000000404000000040400, 0x00000000000000000808000000080800, 0x00000000000000001010000000101000, 0x00000000000000002020000000202000, 0x00000000000000004040000000404000, 0xffffffffffffffff8080000000808000, 0x00000000000000000101000001000001, 0x00000000000000000202000002000002, 0x00000000000000000404000004000004, 0x00000000000000000808000008000008, 0x00000000000000001010000010000010, 0x00000000000000002020000020000020, 0x00000000000000004040000040000040, 0xffffffffffffffff8080000080000080, 0x00000000000000000000010101000001, 0x00000000000000000000020202000002, 0x00000000000000000000040404000004, 0x00000000000000000000080808000008, 0x00000000000000000000101010000010, 0x00000000000000000000202020000020, 0x00000000000000000000404040000040, 0x00000000000000000000808080000080, 0x00000000000000000000010100010100, 0x00000000000000000000020200020200, 0x00000000000000000000040400040400, 0x00000000000000000000080800080800, 0x00000000000000000000101000101000, 0x00000000000000000000202000202000, 0x00000000000000000000404000404000, 0x00000000000000000000808000808000] # 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: 128 inputs, 128 outputs, 387 gates (387 XOR) # Depth: 7 Inputs: x1:x128 Outputs: y1:y128 Internal: t1:t259 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 x5 x117 XOR t2 x31 x39 XOR t3 x11 x83 XOR t4 x89 x113 XOR t5 x91 x115 XOR t6 x15 x55 XOR t7 x33 x81 XOR t8 x22 x78 XOR t9 x17 x97 XOR t10 x40 x88 XOR t11 x1 x57 XOR t12 x48 x96 XOR t13 x60 x76 XOR t14 x25 x73 XOR t15 x10 x50 XOR t16 x14 x86 XOR t17 x72 x112 XOR t18 x3 x107 XOR t19 x29 x37 XOR t20 x52 x92 XOR t21 x121 t7 XOR t22 x95 t6 XOR t23 x19 x99 XOR t24 x2 x58 XOR t25 x4 x84 XOR t26 x63 x111 XOR t27 x27 x51 XOR t28 x16 x56 XOR t29 x46 x70 XOR t30 x28 x108 XOR t31 x59 t18 XOR t32 x64 x104 XOR t33 x23 x79 XOR t34 x13 x101 XOR t35 x93 t1 XOR t36 x18 x98 XOR t37 x87 x127 XOR t38 x32 t17 XOR t39 x103 t22 XOR t40 x77 t19 XOR t41 x120 t12 XOR t42 x102 t8 XOR t43 x30 x54 XOR t44 x119 t2 XOR t45 x62 t42 XOR t46 x34 x114 XOR t47 x20 t13 XOR t48 x126 t16 XOR t49 x26 x106 XOR t50 x85 x125 XOR t51 x36 x116 XOR t52 x35 x75 XOR t53 x44 x68 XOR t54 x42 x90 XOR t55 x110 t43 XOR t56 x12 t20 XOR t57 x24 x128 XOR t58 x41 x65 XOR t59 x21 x45 XOR t60 x123 t3 XOR t61 x105 t11 XOR t62 x53 x109 XOR t63 x66 x122 XOR t64 x82 t24 XOR t65 x100 t47 XOR y100 t56 t65 XOR t66 x94 x118 XOR t67 x7 x47 XOR t68 x69 t59 XOR t69 x43 x67 XOR t70 x80 t32 XOR t71 x74 t46 XOR t72 x8 t41 XOR t73 x9 t21 XOR y65 t61 t73 XOR t74 x38 t48 XOR t75 x6 t66 XOR t76 x124 t53 XOR y12 t65 t76 XOR t77 x13 t50 XOR t78 x71 x111 XOR t79 x60 t25 XOR t80 x49 x65 XOR t81 x43 t5 XOR t82 x25 t80 XOR t83 x125 t68 XOR y37 t35 t83 XOR t84 x95 t67 XOR t85 x24 t70 XOR t86 x46 t75 XOR t87 x115 t52 XOR t88 x20 t76 XOR t89 x33 t14 XOR t90 x68 t30 XOR t91 x39 t37 XOR y23 t39 t91 XOR t92 x48 t57 XOR t93 x55 t78 XOR t94 x50 t49 XOR t95 x16 t10 XOR t96 x45 t35 XOR y117 t40 t96 XOR t97 x107 t27 XOR t98 x93 t34 XOR t99 x59 t23 XOR t100 x58 t36 XOR t101 x70 t55 XOR t102 x69 t62 XOR t103 x41 t4 XOR t104 x81 t61 XOR y25 t103 t104 XOR y105 t82 t104 XOR t105 x90 t15 XOR t106 x75 t99 XOR t107 x5 x61 XOR t108 x57 t9 XOR t109 x117 t40 XOR y5 t102 t109 XOR y45 t77 t109 XOR t110 x42 t63 XOR t111 x114 t54 XOR t112 x35 t60 XOR y67 t31 t112 XOR t113 t47 y100 XOR y60 t90 t113 XOR t114 x104 t28 XOR y80 t72 t114 XOR t115 x3 t81 XOR t116 x26 t71 XOR y90 t100 t116 XOR t117 x126 t29 XOR y14 t45 t117 XOR t118 x56 t38 XOR y88 t92 t118 XOR t119 x106 t64 XOR y26 t111 t119 XOR t120 x103 t33 XOR t121 x63 t120 XOR y95 t44 t121 XOR y103 t22 t121 XOR t122 x76 t51 XOR t123 x1 t103 XOR y113 t89 t123 XOR t124 x79 t44 XOR y7 t93 t124 XOR y119 t84 t124 XOR t125 x62 x110 XOR t126 x9 x89 XOR t127 x44 x116 XOR t128 x74 t100 XOR y10 t110 t128 XOR y98 t105 t128 XOR t129 x34 x82 XOR t130 x14 x54 XOR t131 x32 x80 XOR t132 x109 t107 XOR t133 x6 t125 XOR y70 t74 t133 XOR t134 x64 x112 XOR t135 x11 x51 XOR t136 x67 t97 XOR y3 t87 t136 XOR t137 x113 t89 XOR y89 t108 t137 XOR t138 x66 t94 XOR y2 t71 t138 XOR y106 t64 t138 XOR t139 x18 t110 XOR y82 t94 t139 XOR t140 x23 x127 XOR t141 x31 t93 XOR t142 x4 x92 XOR t143 x53 t98 XOR t144 x38 x78 XOR t145 x72 t92 XOR y16 t70 t145 XOR y128 t95 t145 XOR t146 x77 x101 XOR t147 x49 t126 XOR t148 x36 x84 XOR t149 x17 x121 XOR t150 x98 t105 XOR t151 x87 t26 XOR t152 x108 t79 XOR t153 x7 t151 XOR y55 t120 t153 XOR t154 x2 x90 XOR t155 x12 x124 XOR t156 x30 t144 XOR y118 t86 t156 XOR t157 x86 t133 XOR y54 t42 t157 XOR t158 x19 x123 XOR t159 x105 t82 XOR t160 x52 t90 XOR y4 t122 t160 XOR y108 t79 t160 XOR t161 x83 t31 XOR y27 t81 t161 XOR t162 x8 x88 XOR t163 x85 t132 XOR t164 x28 t122 XOR t165 x27 t87 XOR y43 t60 t165 XOR y91 t99 t165 XOR t166 x10 x122 XOR t167 x15 t91 XOR t168 x40 x120 XOR t169 x118 t156 XOR y46 t48 t169 XOR t170 x128 t95 XOR t171 x119 t84 XOR y31 t151 t171 XOR t172 x96 t114 XOR y64 t38 t172 XOR t173 x97 t147 XOR y17 t21 t173 XOR t174 x22 t117 XOR y38 t75 t174 XOR y86 t55 t174 XOR t175 x94 x102 XOR t176 x73 t108 XOR y97 t147 t176 XOR t177 x47 x71 XOR t178 x91 x99 XOR t179 x29 t102 XOR y61 t98 t179 XOR t180 x37 t77 XOR y69 t132 t180 XOR y125 t68 t180 XOR t181 x21 x61 XOR t182 x5 t163 XOR y29 t96 t182 XOR t183 x118 t101 XOR y6 t144 t183 XOR t184 x17 t58 XOR y121 t73 t184 XOR t185 x94 t130 XOR y102 t45 t185 XOR t186 x4 t113 XOR y76 t127 t186 XOR t187 x93 t143 XOR y77 t96 t187 XOR t188 x67 t158 XOR y35 t115 t188 XOR t189 t101 t157 XOR y110 x110 t189 XOR t190 t69 t97 XOR y83 t158 t190 XOR t191 t159 t173 XOR y57 x49 t191 XOR t192 t131 t170 XOR y48 x120 t192 XOR t193 x61 t83 XOR y13 t146 t193 XOR t194 x73 t9 XOR y49 t104 t194 XOR t195 t86 t125 XOR y30 x86 t195 XOR t196 t115 t135 XOR y75 x99 t196 XOR t197 x122 t150 XOR y18 t129 t197 XOR t198 x114 t154 XOR y34 t139 t198 XOR t199 t119 t166 XOR y66 x34 t199 XOR t200 x124 t113 XOR y20 t148 t200 XOR t201 x15 t124 XOR y47 t37 t201 XOR t202 x82 t116 XOR y42 t166 t202 XOR t203 x25 t159 XOR y1 t137 t203 XOR t204 t69 t106 XOR y11 x123 t204 XOR t205 t176 t184 XOR y9 t149 t205 XOR t206 x10 t139 XOR y122 t129 t206 XOR t207 t88 t148 XOR y124 x12 t207 XOR t208 t111 t150 XOR y74 t154 t208 XOR t209 x36 t155 XOR y68 t152 t209 XOR t210 t74 t174 XOR y126 x126 t210 XOR t211 x54 t74 XOR y22 t175 t211 XOR t212 x28 t65 XOR y92 t51 t212 XOR t213 x128 t172 XOR y24 t10 t213 XOR t214 x80 t118 XOR y8 t168 t214 XOR t215 t175 t185 XOR y78 t86 t215 XOR t216 x27 t52 XOR y115 t115 t216 XOR t217 x112 t85 XOR y56 t162 t217 XOR t218 x37 t143 XOR y21 t50 t218 XOR t219 x67 t27 XOR y107 t161 t219 XOR t220 x85 t179 XOR y109 t107 t220 XOR t221 x66 t150 XOR y58 t49 t221 XOR t222 x7 t167 XOR y71 t26 t222 XOR t223 x127 t177 XOR y15 t121 t223 XOR t224 x42 t154 XOR y114 t116 t224 XOR t225 t118 t162 XOR y112 x64 t225 XOR t226 t148 t209 XOR y44 t164 t226 XOR t227 x21 t163 XOR y53 t146 t227 XOR t228 t28 t85 XOR y104 x96 t228 XOR t229 x71 t140 XOR y39 t171 t229 XOR t230 t85 t168 XOR y96 x32 t230 XOR t231 x11 t136 XOR y59 t178 t231 XOR t232 x116 t142 XOR y36 t88 t232 XOR t233 x60 t152 XOR y52 t65 t233 XOR t234 t141 t153 XOR y111 x111 t234 XOR t235 x14 t101 XOR y62 t175 t235 XOR t236 x41 t159 XOR y81 t149 t236 XOR t237 x91 t106 XOR y99 t135 t237 XOR t238 x69 t83 XOR y85 t179 t238 XOR t239 t57 t72 XOR y40 x72 t239 XOR t240 t127 t232 XOR y116 t164 t240 XOR t241 t140 t223 XOR y127 t167 t241 XOR t242 t134 t162 XOR y32 t41 t242 XOR t243 x47 t140 XOR y87 t141 t243 XOR t244 x8 t170 XOR y72 t134 t244 XOR t245 x92 t152 XOR y28 t127 t245 XOR t246 t45 t169 XOR y94 x78 t246 XOR t247 x40 t131 XOR y120 t72 t247 XOR t248 x77 t181 XOR y101 t143 t248 XOR t249 t106 t161 XOR y51 x59 t249 XOR t250 x52 t30 XOR y84 t88 t250 XOR t251 t123 t173 XOR y73 x89 t251 XOR t252 t39 t67 XOR y79 x119 t252 XOR t253 t112 t178 XOR y19 x51 t253 XOR t254 x31 t39 XOR y63 t78 t254 XOR t255 t36 t119 XOR y50 x74 t255 XOR t256 x113 t14 XOR y41 t73 t256 XOR t257 t146 t248 XOR y93 t109 t257 XOR t258 x19 t112 XOR y123 t69 t258 XOR t259 t123 t149 XOR y33 x65 t259 end SLP end circuit