genesis 1
genesis 2
genesis 3
genesis 4
genesis 5
genesis 6
genesis 7
genesis 8
genesis 9
genesis 10
genesis 11
genesis 12
genesis 13
genesis 14
genesis 15
genesis 16
genesis 17
genesis 18
genesis 19
genesis 20
genesis 21
genesis 22
genesis 23
genesis 24
genesis 25
genesis 26
genesis 27
genesis 28
genesis 29
genesis 30
genesis 31
genesis 32
genesis 33
genesis 34
genesis 35 import binascii
genesis 36 import base64
genesis 37
genesis 38 block_size = 16
genesis 39 key_size = 32
genesis 40
genesis 41 class Serpent:
genesis 42
genesis 43 def __init__(self, key=None):
genesis 44 """Serpent."""
genesis 45
genesis 46 if key:
genesis 47 self.set_key(key)
genesis 48
genesis 49
genesis 50 def set_key(self, key):
genesis 51 """Init."""
genesis 52
genesis 53 key_len = len(key)
genesis 54 if key_len % 4:
genesis 55
genesis 56 raise KeyError, "key not a multiple of 4"
genesis 57 if key_len > 32:
genesis 58
genesis 59 raise KeyError, "key_len > 32"
genesis 60
genesis 61 self.key_context = [0] * 140
genesis 62
genesis 63 key_word32 = [0] * 32
genesis 64 i = 0
genesis 65 while key:
genesis 66 key_word32[i] = struct.unpack("<L", key[0:4])[0]
genesis 67 key = key[4:]
genesis 68 i += 1
genesis 69
genesis 70 set_key(self.key_context, key_word32, key_len)
genesis 71
genesis 72
genesis 73
genesis 74 def decrypt(self, block):
genesis 75 """Decrypt blocks."""
genesis 76
genesis 77 if len(block) % 16:
genesis 78 raise ValueError, "block size must be a multiple of 16"
genesis 79
genesis 80 plaintext = ''
genesis 81
genesis 82 while block:
genesis 83 a, b, c, d = struct.unpack("<4L", block[:16])
genesis 84 temp = [a, b, c, d]
genesis 85 decrypt(self.key_context, temp)
genesis 86 plaintext += struct.pack("<4L", *temp)
genesis 87 block = block[16:]
genesis 88
genesis 89 return plaintext
genesis 90
genesis 91
genesis 92 def encrypt(self, block):
genesis 93 """Encrypt blocks."""
genesis 94
genesis 95 if len(block) % 16:
genesis 96 raise ValueError, "block size must be a multiple of 16"
genesis 97
genesis 98 ciphertext = ''
genesis 99
genesis 100 while block:
genesis 101 a, b, c, d = struct.unpack("<4L", block[0:16])
genesis 102 temp = [a, b, c, d]
genesis 103 encrypt(self.key_context, temp)
genesis 104 ciphertext += struct.pack("<4L", *temp)
genesis 105 block = block[16:]
genesis 106
genesis 107 return ciphertext
genesis 108
genesis 109
genesis 110 def get_name(self):
genesis 111 """Return the name of the cipher."""
genesis 112
genesis 113 return "Serpent"
genesis 114
genesis 115
genesis 116 def get_block_size(self):
genesis 117 """Get cipher block size in bytes."""
genesis 118
genesis 119 return 16
genesis 120
genesis 121
genesis 122 def get_key_size(self):
genesis 123 """Get cipher key size in bytes."""
genesis 124
genesis 125 return 32
genesis 126
genesis 127
genesis 128
genesis 129
genesis 130
genesis 131
genesis 132 import struct
genesis 133 import sys
genesis 134
genesis 135 WORD_BIGENDIAN = 0
genesis 136 if sys.byteorder == 'big':
genesis 137 WORD_BIGENDIAN = 1
genesis 138
genesis 139 def rotr32(x, n):
genesis 140 return (x >> n) | ((x << (32 - n)) & 0xFFFFFFFF)
genesis 141
genesis 142 def rotl32(x, n):
genesis 143 return ((x << n) & 0xFFFFFFFF) | (x >> (32 - n))
genesis 144
genesis 145 def byteswap32(x):
genesis 146 return ((x & 0xff) << 24) | (((x >> 8) & 0xff) << 16) | \
genesis 147 (((x >> 16) & 0xff) << 8) | ((x >> 24) & 0xff)
genesis 148
genesis 149 def set_key(l_key, key, key_len):
genesis 150 key_len *= 8
genesis 151 if key_len > 256:
genesis 152 return False
genesis 153
genesis 154 i = 0
genesis 155 lk = (key_len + 31) / 32
genesis 156 while i < lk:
genesis 157 l_key[i] = key[i]
genesis 158 if WORD_BIGENDIAN:
genesis 159 l_key[i] = byteswap32(key[i])
genesis 160 i += 1
genesis 161
genesis 162 if key_len < 256:
genesis 163 while i < 8:
genesis 164 l_key[i] = 0
genesis 165 i += 1
genesis 166 i = key_len / 32
genesis 167 lk = 1 << (key_len % 32)
genesis 168 l_key[i] = (l_key[i] & (lk - 1)) | lk
genesis 169 for i in xrange(132):
genesis 170 lk = l_key[i] ^ l_key[i + 3] ^ l_key[i + 5] ^ l_key[i + 7] ^ 0x9e3779b9 ^ i
genesis 171 l_key[i + 8] = ((lk << 11) & 0xFFFFFFFF) | (lk >> 21)
genesis 172
genesis 173 key = l_key
genesis 174
genesis 175 a = key[4 * 0 + 8]
genesis 176 b = key[4 * 0 + 9]
genesis 177 c = key[4 * 0 + 10]
genesis 178 d = key[4 * 0 + 11]
genesis 179 e = 0
genesis 180 f = 0
genesis 181 g = 0
genesis 182 h = 0
genesis 183 t1 = 0
genesis 184 t2 = 0
genesis 185 t3 = 0
genesis 186 t4 = 0
genesis 187 t5 = 0
genesis 188 t6 = 0
genesis 189 t7 = 0
genesis 190 t8 = 0
genesis 191 t9 = 0
genesis 192 t10 = 0
genesis 193 t11 = 0
genesis 194 t12 = 0
genesis 195 t13 = 0
genesis 196 t14 = 0
genesis 197 t15 = 0
genesis 198 t16 = 0
genesis 199 t1 = a ^ c;
genesis 200 t2 = d ^ t1;
genesis 201 t3 = a & t2;
genesis 202 t4 = d ^ t3;
genesis 203 t5 = b & t4;
genesis 204 g = t2 ^ t5;
genesis 205 t7 = a | g;
genesis 206 t8 = b | d;
genesis 207 t11 = a | d;
genesis 208 t9 = t4 & t7;
genesis 209 f = t8 ^ t9;
genesis 210 t12 = b ^ t11;
genesis 211 t13 = g ^ t9;
genesis 212 t15 = t3 ^ t8;
genesis 213 h = t12 ^ t13;
genesis 214 t16 = c & t15;
genesis 215 e = t12 ^ t16
genesis 216 key[4 * 0 + 8] = e
genesis 217 key[4 * 0 + 9] = f
genesis 218 key[4 * 0 + 10] = g
genesis 219 key[4 * 0 + 11] = h
genesis 220 a = key[4 * 1 + 8]
genesis 221 b = key[4 * 1 + 9]
genesis 222 c = key[4 * 1 + 10]
genesis 223 d = key[4 * 1 + 11]
genesis 224 t1 = (~a) % 0x100000000;
genesis 225 t2 = b ^ d;
genesis 226 t3 = c & t1;
genesis 227 t13 = d | t1;
genesis 228 e = t2 ^ t3;
genesis 229 t5 = c ^ t1;
genesis 230 t6 = c ^ e;
genesis 231 t7 = b & t6;
genesis 232 t10 = e | t5;
genesis 233 h = t5 ^ t7;
genesis 234 t9 = d | t7;
genesis 235 t11 = t9 & t10;
genesis 236 t14 = t2 ^ h;
genesis 237 g = a ^ t11;
genesis 238 t15 = g ^ t13;
genesis 239 f = t14 ^ t15
genesis 240 key[4 * 1 + 8] = e
genesis 241 key[4 * 1 + 9] = f
genesis 242 key[4 * 1 + 10] = g
genesis 243 key[4 * 1 + 11] = h
genesis 244 a = key[4 * 2 + 8]
genesis 245 b = key[4 * 2 + 9]
genesis 246 c = key[4 * 2 + 10]
genesis 247 d = key[4 * 2 + 11]
genesis 248 t1 = (~a) % 0x100000000;
genesis 249 t2 = b ^ t1;
genesis 250 t3 = a | t2;
genesis 251 t4 = d | t2;
genesis 252 t5 = c ^ t3;
genesis 253 g = d ^ t5;
genesis 254 t7 = b ^ t4;
genesis 255 t8 = t2 ^ g;
genesis 256 t9 = t5 & t7;
genesis 257 h = t8 ^ t9;
genesis 258 t11 = t5 ^ t7;
genesis 259 f = h ^ t11;
genesis 260 t13 = t8 & t11;
genesis 261 e = t5 ^ t13
genesis 262 key[4 * 2 + 8] = e
genesis 263 key[4 * 2 + 9] = f
genesis 264 key[4 * 2 + 10] = g
genesis 265 key[4 * 2 + 11] = h
genesis 266 a = key[4 * 3 + 8]
genesis 267 b = key[4 * 3 + 9]
genesis 268 c = key[4 * 3 + 10]
genesis 269 d = key[4 * 3 + 11]
genesis 270 t1 = a ^ d;
genesis 271 t2 = a & d;
genesis 272 t3 = c ^ t1;
genesis 273 t6 = b & t1;
genesis 274 t4 = b ^ t3;
genesis 275 t10 = (~t3) % 0x100000000;
genesis 276 h = t2 ^ t4;
genesis 277 t7 = a ^ t6;
genesis 278 t14 = (~t7) % 0x100000000;
genesis 279 t8 = c | t7;
genesis 280 t11 = t3 ^ t7;
genesis 281 g = t4 ^ t8;
genesis 282 t12 = h & t11;
genesis 283 f = t10 ^ t12;
genesis 284 e = t12 ^ t14
genesis 285 key[4 * 3 + 8] = e
genesis 286 key[4 * 3 + 9] = f
genesis 287 key[4 * 3 + 10] = g
genesis 288 key[4 * 3 + 11] = h
genesis 289 a = key[4 * 4 + 8]
genesis 290 b = key[4 * 4 + 9]
genesis 291 c = key[4 * 4 + 10]
genesis 292 d = key[4 * 4 + 11]
genesis 293 t1 = (~c) % 0x100000000;
genesis 294 t2 = b ^ c;
genesis 295 t3 = b | t1;
genesis 296 t4 = d ^ t3;
genesis 297 t5 = a & t4;
genesis 298 t7 = a ^ d;
genesis 299 h = t2 ^ t5;
genesis 300 t8 = b ^ t5;
genesis 301 t9 = t2 | t8;
genesis 302 t11 = d & t3;
genesis 303 f = t7 ^ t9;
genesis 304 t12 = t5 ^ f;
genesis 305 t15 = t1 | t4;
genesis 306 t13 = h & t12;
genesis 307 g = t11 ^ t13;
genesis 308 t16 = t12 ^ g;
genesis 309 e = t15 ^ t16
genesis 310 key[4 * 4 + 8] = e
genesis 311 key[4 * 4 + 9] = f
genesis 312 key[4 * 4 + 10] = g
genesis 313 key[4 * 4 + 11] = h
genesis 314 a = key[4 * 5 + 8]
genesis 315 b = key[4 * 5 + 9]
genesis 316 c = key[4 * 5 + 10]
genesis 317 d = key[4 * 5 + 11]
genesis 318 t1 = (~a) % 0x100000000;
genesis 319 t2 = a ^ d;
genesis 320 t3 = b ^ t2;
genesis 321 t4 = t1 | t2;
genesis 322 t5 = c ^ t4;
genesis 323 f = b ^ t5;
genesis 324 t13 = (~t5) % 0x100000000;
genesis 325 t7 = t2 | f;
genesis 326 t8 = d ^ t7;
genesis 327 t9 = t5 & t8;
genesis 328 g = t3 ^ t9;
genesis 329 t11 = t5 ^ t8;
genesis 330 e = g ^ t11;
genesis 331 t14 = t3 & t11;
genesis 332 h = t13 ^ t14
genesis 333 key[4 * 5 + 8] = e
genesis 334 key[4 * 5 + 9] = f
genesis 335 key[4 * 5 + 10] = g
genesis 336 key[4 * 5 + 11] = h
genesis 337 a = key[4 * 6 + 8]
genesis 338 b = key[4 * 6 + 9]
genesis 339 c = key[4 * 6 + 10]
genesis 340 d = key[4 * 6 + 11]
genesis 341 t1 = (~a) % 0x100000000;
genesis 342 t2 = a ^ b;
genesis 343 t3 = a ^ d;
genesis 344 t4 = c ^ t1;
genesis 345 t5 = t2 | t3;
genesis 346 e = t4 ^ t5;
genesis 347 t7 = d & e;
genesis 348 t8 = t2 ^ e;
genesis 349 t10 = t1 | e;
genesis 350 f = t7 ^ t8;
genesis 351 t11 = t2 | t7;
genesis 352 t12 = t3 ^ t10;
genesis 353 t14 = b ^ t7;
genesis 354 g = t11 ^ t12;
genesis 355 t15 = f & t12;
genesis 356 h = t14 ^ t15
genesis 357 key[4 * 6 + 8] = e
genesis 358 key[4 * 6 + 9] = f
genesis 359 key[4 * 6 + 10] = g
genesis 360 key[4 * 6 + 11] = h
genesis 361 a = key[4 * 7 + 8]
genesis 362 b = key[4 * 7 + 9]
genesis 363 c = key[4 * 7 + 10]
genesis 364 d = key[4 * 7 + 11]
genesis 365 t1 = a ^ d;
genesis 366 t2 = d & t1;
genesis 367 t3 = c ^ t2;
genesis 368 t4 = b | t3;
genesis 369 h = t1 ^ t4;
genesis 370 t6 = (~b) % 0x100000000;
genesis 371 t7 = t1 | t6;
genesis 372 e = t3 ^ t7;
genesis 373 t9 = a & e;
genesis 374 t10 = t1 ^ t6;
genesis 375 t11 = t4 & t10;
genesis 376 g = t9 ^ t11;
genesis 377 t13 = a ^ t3;
genesis 378 t14 = t10 & g;
genesis 379 f = t13 ^ t14
genesis 380 key[4 * 7 + 8] = e
genesis 381 key[4 * 7 + 9] = f
genesis 382 key[4 * 7 + 10] = g
genesis 383 key[4 * 7 + 11] = h
genesis 384 a = key[4 * 8 + 8]
genesis 385 b = key[4 * 8 + 9]
genesis 386 c = key[4 * 8 + 10]
genesis 387 d = key[4 * 8 + 11]
genesis 388 t1 = a ^ c;
genesis 389 t2 = d ^ t1;
genesis 390 t3 = a & t2;
genesis 391 t4 = d ^ t3;
genesis 392 t5 = b & t4;
genesis 393 g = t2 ^ t5;
genesis 394 t7 = a | g;
genesis 395 t8 = b | d;
genesis 396 t11 = a | d;
genesis 397 t9 = t4 & t7;
genesis 398 f = t8 ^ t9;
genesis 399 t12 = b ^ t11;
genesis 400 t13 = g ^ t9;
genesis 401 t15 = t3 ^ t8;
genesis 402 h = t12 ^ t13;
genesis 403 t16 = c & t15;
genesis 404 e = t12 ^ t16
genesis 405 key[4 * 8 + 8] = e
genesis 406 key[4 * 8 + 9] = f
genesis 407 key[4 * 8 + 10] = g
genesis 408 key[4 * 8 + 11] = h
genesis 409 a = key[4 * 9 + 8]
genesis 410 b = key[4 * 9 + 9]
genesis 411 c = key[4 * 9 + 10]
genesis 412 d = key[4 * 9 + 11]
genesis 413 t1 = (~a) % 0x100000000;
genesis 414 t2 = b ^ d;
genesis 415 t3 = c & t1;
genesis 416 t13 = d | t1;
genesis 417 e = t2 ^ t3;
genesis 418 t5 = c ^ t1;
genesis 419 t6 = c ^ e;
genesis 420 t7 = b & t6;
genesis 421 t10 = e | t5;
genesis 422 h = t5 ^ t7;
genesis 423 t9 = d | t7;
genesis 424 t11 = t9 & t10;
genesis 425 t14 = t2 ^ h;
genesis 426 g = a ^ t11;
genesis 427 t15 = g ^ t13;
genesis 428 f = t14 ^ t15
genesis 429 key[4 * 9 + 8] = e
genesis 430 key[4 * 9 + 9] = f
genesis 431 key[4 * 9 + 10] = g
genesis 432 key[4 * 9 + 11] = h
genesis 433 a = key[4 * 10 + 8]
genesis 434 b = key[4 * 10 + 9]
genesis 435 c = key[4 * 10 + 10]
genesis 436 d = key[4 * 10 + 11]
genesis 437 t1 = (~a) % 0x100000000;
genesis 438 t2 = b ^ t1;
genesis 439 t3 = a | t2;
genesis 440 t4 = d | t2;
genesis 441 t5 = c ^ t3;
genesis 442 g = d ^ t5;
genesis 443 t7 = b ^ t4;
genesis 444 t8 = t2 ^ g;
genesis 445 t9 = t5 & t7;
genesis 446 h = t8 ^ t9;
genesis 447 t11 = t5 ^ t7;
genesis 448 f = h ^ t11;
genesis 449 t13 = t8 & t11;
genesis 450 e = t5 ^ t13
genesis 451 key[4 * 10 + 8] = e
genesis 452 key[4 * 10 + 9] = f
genesis 453 key[4 * 10 + 10] = g
genesis 454 key[4 * 10 + 11] = h
genesis 455 a = key[4 * 11 + 8]
genesis 456 b = key[4 * 11 + 9]
genesis 457 c = key[4 * 11 + 10]
genesis 458 d = key[4 * 11 + 11]
genesis 459 t1 = a ^ d;
genesis 460 t2 = a & d;
genesis 461 t3 = c ^ t1;
genesis 462 t6 = b & t1;
genesis 463 t4 = b ^ t3;
genesis 464 t10 = (~t3) % 0x100000000;
genesis 465 h = t2 ^ t4;
genesis 466 t7 = a ^ t6;
genesis 467 t14 = (~t7) % 0x100000000;
genesis 468 t8 = c | t7;
genesis 469 t11 = t3 ^ t7;
genesis 470 g = t4 ^ t8;
genesis 471 t12 = h & t11;
genesis 472 f = t10 ^ t12;
genesis 473 e = t12 ^ t14
genesis 474 key[4 * 11 + 8] = e
genesis 475 key[4 * 11 + 9] = f
genesis 476 key[4 * 11 + 10] = g
genesis 477 key[4 * 11 + 11] = h
genesis 478 a = key[4 * 12 + 8]
genesis 479 b = key[4 * 12 + 9]
genesis 480 c = key[4 * 12 + 10]
genesis 481 d = key[4 * 12 + 11]
genesis 482 t1 = (~c) % 0x100000000;
genesis 483 t2 = b ^ c;
genesis 484 t3 = b | t1;
genesis 485 t4 = d ^ t3;
genesis 486 t5 = a & t4;
genesis 487 t7 = a ^ d;
genesis 488 h = t2 ^ t5;
genesis 489 t8 = b ^ t5;
genesis 490 t9 = t2 | t8;
genesis 491 t11 = d & t3;
genesis 492 f = t7 ^ t9;
genesis 493 t12 = t5 ^ f;
genesis 494 t15 = t1 | t4;
genesis 495 t13 = h & t12;
genesis 496 g = t11 ^ t13;
genesis 497 t16 = t12 ^ g;
genesis 498 e = t15 ^ t16
genesis 499 key[4 * 12 + 8] = e
genesis 500 key[4 * 12 + 9] = f
genesis 501 key[4 * 12 + 10] = g
genesis 502 key[4 * 12 + 11] = h
genesis 503 a = key[4 * 13 + 8]
genesis 504 b = key[4 * 13 + 9]
genesis 505 c = key[4 * 13 + 10]
genesis 506 d = key[4 * 13 + 11]
genesis 507 t1 = (~a) % 0x100000000;
genesis 508 t2 = a ^ d;
genesis 509 t3 = b ^ t2;
genesis 510 t4 = t1 | t2;
genesis 511 t5 = c ^ t4;
genesis 512 f = b ^ t5;
genesis 513 t13 = (~t5) % 0x100000000;
genesis 514 t7 = t2 | f;
genesis 515 t8 = d ^ t7;
genesis 516 t9 = t5 & t8;
genesis 517 g = t3 ^ t9;
genesis 518 t11 = t5 ^ t8;
genesis 519 e = g ^ t11;
genesis 520 t14 = t3 & t11;
genesis 521 h = t13 ^ t14
genesis 522 key[4 * 13 + 8] = e
genesis 523 key[4 * 13 + 9] = f
genesis 524 key[4 * 13 + 10] = g
genesis 525 key[4 * 13 + 11] = h
genesis 526 a = key[4 * 14 + 8]
genesis 527 b = key[4 * 14 + 9]
genesis 528 c = key[4 * 14 + 10]
genesis 529 d = key[4 * 14 + 11]
genesis 530 t1 = (~a) % 0x100000000;
genesis 531 t2 = a ^ b;
genesis 532 t3 = a ^ d;
genesis 533 t4 = c ^ t1;
genesis 534 t5 = t2 | t3;
genesis 535 e = t4 ^ t5;
genesis 536 t7 = d & e;
genesis 537 t8 = t2 ^ e;
genesis 538 t10 = t1 | e;
genesis 539 f = t7 ^ t8;
genesis 540 t11 = t2 | t7;
genesis 541 t12 = t3 ^ t10;
genesis 542 t14 = b ^ t7;
genesis 543 g = t11 ^ t12;
genesis 544 t15 = f & t12;
genesis 545 h = t14 ^ t15
genesis 546 key[4 * 14 + 8] = e
genesis 547 key[4 * 14 + 9] = f
genesis 548 key[4 * 14 + 10] = g
genesis 549 key[4 * 14 + 11] = h
genesis 550 a = key[4 * 15 + 8]
genesis 551 b = key[4 * 15 + 9]
genesis 552 c = key[4 * 15 + 10]
genesis 553 d = key[4 * 15 + 11]
genesis 554 t1 = a ^ d;
genesis 555 t2 = d & t1;
genesis 556 t3 = c ^ t2;
genesis 557 t4 = b | t3;
genesis 558 h = t1 ^ t4;
genesis 559 t6 = (~b) % 0x100000000;
genesis 560 t7 = t1 | t6;
genesis 561 e = t3 ^ t7;
genesis 562 t9 = a & e;
genesis 563 t10 = t1 ^ t6;
genesis 564 t11 = t4 & t10;
genesis 565 g = t9 ^ t11;
genesis 566 t13 = a ^ t3;
genesis 567 t14 = t10 & g;
genesis 568 f = t13 ^ t14
genesis 569 key[4 * 15 + 8] = e
genesis 570 key[4 * 15 + 9] = f
genesis 571 key[4 * 15 + 10] = g
genesis 572 key[4 * 15 + 11] = h
genesis 573 a = key[4 * 16 + 8]
genesis 574 b = key[4 * 16 + 9]
genesis 575 c = key[4 * 16 + 10]
genesis 576 d = key[4 * 16 + 11]
genesis 577 t1 = a ^ c;
genesis 578 t2 = d ^ t1;
genesis 579 t3 = a & t2;
genesis 580 t4 = d ^ t3;
genesis 581 t5 = b & t4;
genesis 582 g = t2 ^ t5;
genesis 583 t7 = a | g;
genesis 584 t8 = b | d;
genesis 585 t11 = a | d;
genesis 586 t9 = t4 & t7;
genesis 587 f = t8 ^ t9;
genesis 588 t12 = b ^ t11;
genesis 589 t13 = g ^ t9;
genesis 590 t15 = t3 ^ t8;
genesis 591 h = t12 ^ t13;
genesis 592 t16 = c & t15;
genesis 593 e = t12 ^ t16
genesis 594 key[4 * 16 + 8] = e
genesis 595 key[4 * 16 + 9] = f
genesis 596 key[4 * 16 + 10] = g
genesis 597 key[4 * 16 + 11] = h
genesis 598 a = key[4 * 17 + 8]
genesis 599 b = key[4 * 17 + 9]
genesis 600 c = key[4 * 17 + 10]
genesis 601 d = key[4 * 17 + 11]
genesis 602 t1 = (~a) % 0x100000000;
genesis 603 t2 = b ^ d;
genesis 604 t3 = c & t1;
genesis 605 t13 = d | t1;
genesis 606 e = t2 ^ t3;
genesis 607 t5 = c ^ t1;
genesis 608 t6 = c ^ e;
genesis 609 t7 = b & t6;
genesis 610 t10 = e | t5;
genesis 611 h = t5 ^ t7;
genesis 612 t9 = d | t7;
genesis 613 t11 = t9 & t10;
genesis 614 t14 = t2 ^ h;
genesis 615 g = a ^ t11;
genesis 616 t15 = g ^ t13;
genesis 617 f = t14 ^ t15
genesis 618 key[4 * 17 + 8] = e
genesis 619 key[4 * 17 + 9] = f
genesis 620 key[4 * 17 + 10] = g
genesis 621 key[4 * 17 + 11] = h
genesis 622 a = key[4 * 18 + 8]
genesis 623 b = key[4 * 18 + 9]
genesis 624 c = key[4 * 18 + 10]
genesis 625 d = key[4 * 18 + 11]
genesis 626 t1 = (~a) % 0x100000000;
genesis 627 t2 = b ^ t1;
genesis 628 t3 = a | t2;
genesis 629 t4 = d | t2;
genesis 630 t5 = c ^ t3;
genesis 631 g = d ^ t5;
genesis 632 t7 = b ^ t4;
genesis 633 t8 = t2 ^ g;
genesis 634 t9 = t5 & t7;
genesis 635 h = t8 ^ t9;
genesis 636 t11 = t5 ^ t7;
genesis 637 f = h ^ t11;
genesis 638 t13 = t8 & t11;
genesis 639 e = t5 ^ t13
genesis 640 key[4 * 18 + 8] = e
genesis 641 key[4 * 18 + 9] = f
genesis 642 key[4 * 18 + 10] = g
genesis 643 key[4 * 18 + 11] = h
genesis 644 a = key[4 * 19 + 8]
genesis 645 b = key[4 * 19 + 9]
genesis 646 c = key[4 * 19 + 10]
genesis 647 d = key[4 * 19 + 11]
genesis 648 t1 = a ^ d;
genesis 649 t2 = a & d;
genesis 650 t3 = c ^ t1;
genesis 651 t6 = b & t1;
genesis 652 t4 = b ^ t3;
genesis 653 t10 = (~t3) % 0x100000000;
genesis 654 h = t2 ^ t4;
genesis 655 t7 = a ^ t6;
genesis 656 t14 = (~t7) % 0x100000000;
genesis 657 t8 = c | t7;
genesis 658 t11 = t3 ^ t7;
genesis 659 g = t4 ^ t8;
genesis 660 t12 = h & t11;
genesis 661 f = t10 ^ t12;
genesis 662 e = t12 ^ t14
genesis 663 key[4 * 19 + 8] = e
genesis 664 key[4 * 19 + 9] = f
genesis 665 key[4 * 19 + 10] = g
genesis 666 key[4 * 19 + 11] = h
genesis 667 a = key[4 * 20 + 8]
genesis 668 b = key[4 * 20 + 9]
genesis 669 c = key[4 * 20 + 10]
genesis 670 d = key[4 * 20 + 11]
genesis 671 t1 = (~c) % 0x100000000;
genesis 672 t2 = b ^ c;
genesis 673 t3 = b | t1;
genesis 674 t4 = d ^ t3;
genesis 675 t5 = a & t4;
genesis 676 t7 = a ^ d;
genesis 677 h = t2 ^ t5;
genesis 678 t8 = b ^ t5;
genesis 679 t9 = t2 | t8;
genesis 680 t11 = d & t3;
genesis 681 f = t7 ^ t9;
genesis 682 t12 = t5 ^ f;
genesis 683 t15 = t1 | t4;
genesis 684 t13 = h & t12;
genesis 685 g = t11 ^ t13;
genesis 686 t16 = t12 ^ g;
genesis 687 e = t15 ^ t16
genesis 688 key[4 * 20 + 8] = e
genesis 689 key[4 * 20 + 9] = f
genesis 690 key[4 * 20 + 10] = g
genesis 691 key[4 * 20 + 11] = h
genesis 692 a = key[4 * 21 + 8]
genesis 693 b = key[4 * 21 + 9]
genesis 694 c = key[4 * 21 + 10]
genesis 695 d = key[4 * 21 + 11]
genesis 696 t1 = (~a) % 0x100000000;
genesis 697 t2 = a ^ d;
genesis 698 t3 = b ^ t2;
genesis 699 t4 = t1 | t2;
genesis 700 t5 = c ^ t4;
genesis 701 f = b ^ t5;
genesis 702 t13 = (~t5) % 0x100000000;
genesis 703 t7 = t2 | f;
genesis 704 t8 = d ^ t7;
genesis 705 t9 = t5 & t8;
genesis 706 g = t3 ^ t9;
genesis 707 t11 = t5 ^ t8;
genesis 708 e = g ^ t11;
genesis 709 t14 = t3 & t11;
genesis 710 h = t13 ^ t14
genesis 711 key[4 * 21 + 8] = e
genesis 712 key[4 * 21 + 9] = f
genesis 713 key[4 * 21 + 10] = g
genesis 714 key[4 * 21 + 11] = h
genesis 715 a = key[4 * 22 + 8]
genesis 716 b = key[4 * 22 + 9]
genesis 717 c = key[4 * 22 + 10]
genesis 718 d = key[4 * 22 + 11]
genesis 719 t1 = (~a) % 0x100000000;
genesis 720 t2 = a ^ b;
genesis 721 t3 = a ^ d;
genesis 722 t4 = c ^ t1;
genesis 723 t5 = t2 | t3;
genesis 724 e = t4 ^ t5;
genesis 725 t7 = d & e;
genesis 726 t8 = t2 ^ e;
genesis 727 t10 = t1 | e;
genesis 728 f = t7 ^ t8;
genesis 729 t11 = t2 | t7;
genesis 730 t12 = t3 ^ t10;
genesis 731 t14 = b ^ t7;
genesis 732 g = t11 ^ t12;
genesis 733 t15 = f & t12;
genesis 734 h = t14 ^ t15
genesis 735 key[4 * 22 + 8] = e
genesis 736 key[4 * 22 + 9] = f
genesis 737 key[4 * 22 + 10] = g
genesis 738 key[4 * 22 + 11] = h
genesis 739 a = key[4 * 23 + 8]
genesis 740 b = key[4 * 23 + 9]
genesis 741 c = key[4 * 23 + 10]
genesis 742 d = key[4 * 23 + 11]
genesis 743 t1 = a ^ d;
genesis 744 t2 = d & t1;
genesis 745 t3 = c ^ t2;
genesis 746 t4 = b | t3;
genesis 747 h = t1 ^ t4;
genesis 748 t6 = (~b) % 0x100000000;
genesis 749 t7 = t1 | t6;
genesis 750 e = t3 ^ t7;
genesis 751 t9 = a & e;
genesis 752 t10 = t1 ^ t6;
genesis 753 t11 = t4 & t10;
genesis 754 g = t9 ^ t11;
genesis 755 t13 = a ^ t3;
genesis 756 t14 = t10 & g;
genesis 757 f = t13 ^ t14
genesis 758 key[4 * 23 + 8] = e
genesis 759 key[4 * 23 + 9] = f
genesis 760 key[4 * 23 + 10] = g
genesis 761 key[4 * 23 + 11] = h
genesis 762 a = key[4 * 24 + 8]
genesis 763 b = key[4 * 24 + 9]
genesis 764 c = key[4 * 24 + 10]
genesis 765 d = key[4 * 24 + 11]
genesis 766 t1 = a ^ c;
genesis 767 t2 = d ^ t1;
genesis 768 t3 = a & t2;
genesis 769 t4 = d ^ t3;
genesis 770 t5 = b & t4;
genesis 771 g = t2 ^ t5;
genesis 772 t7 = a | g;
genesis 773 t8 = b | d;
genesis 774 t11 = a | d;
genesis 775 t9 = t4 & t7;
genesis 776 f = t8 ^ t9;
genesis 777 t12 = b ^ t11;
genesis 778 t13 = g ^ t9;
genesis 779 t15 = t3 ^ t8;
genesis 780 h = t12 ^ t13;
genesis 781 t16 = c & t15;
genesis 782 e = t12 ^ t16
genesis 783 key[4 * 24 + 8] = e
genesis 784 key[4 * 24 + 9] = f
genesis 785 key[4 * 24 + 10] = g
genesis 786 key[4 * 24 + 11] = h
genesis 787 a = key[4 * 25 + 8]
genesis 788 b = key[4 * 25 + 9]
genesis 789 c = key[4 * 25 + 10]
genesis 790 d = key[4 * 25 + 11]
genesis 791 t1 = (~a) % 0x100000000;
genesis 792 t2 = b ^ d;
genesis 793 t3 = c & t1;
genesis 794 t13 = d | t1;
genesis 795 e = t2 ^ t3;
genesis 796 t5 = c ^ t1;
genesis 797 t6 = c ^ e;
genesis 798 t7 = b & t6;
genesis 799 t10 = e | t5;
genesis 800 h = t5 ^ t7;
genesis 801 t9 = d | t7;
genesis 802 t11 = t9 & t10;
genesis 803 t14 = t2 ^ h;
genesis 804 g = a ^ t11;
genesis 805 t15 = g ^ t13;
genesis 806 f = t14 ^ t15
genesis 807 key[4 * 25 + 8] = e
genesis 808 key[4 * 25 + 9] = f
genesis 809 key[4 * 25 + 10] = g
genesis 810 key[4 * 25 + 11] = h
genesis 811 a = key[4 * 26 + 8]
genesis 812 b = key[4 * 26 + 9]
genesis 813 c = key[4 * 26 + 10]
genesis 814 d = key[4 * 26 + 11]
genesis 815 t1 = (~a) % 0x100000000;
genesis 816 t2 = b ^ t1;
genesis 817 t3 = a | t2;
genesis 818 t4 = d | t2;
genesis 819 t5 = c ^ t3;
genesis 820 g = d ^ t5;
genesis 821 t7 = b ^ t4;
genesis 822 t8 = t2 ^ g;
genesis 823 t9 = t5 & t7;
genesis 824 h = t8 ^ t9;
genesis 825 t11 = t5 ^ t7;
genesis 826 f = h ^ t11;
genesis 827 t13 = t8 & t11;
genesis 828 e = t5 ^ t13
genesis 829 key[4 * 26 + 8] = e
genesis 830 key[4 * 26 + 9] = f
genesis 831 key[4 * 26 + 10] = g
genesis 832 key[4 * 26 + 11] = h
genesis 833 a = key[4 * 27 + 8]
genesis 834 b = key[4 * 27 + 9]
genesis 835 c = key[4 * 27 + 10]
genesis 836 d = key[4 * 27 + 11]
genesis 837 t1 = a ^ d;
genesis 838 t2 = a & d;
genesis 839 t3 = c ^ t1;
genesis 840 t6 = b & t1;
genesis 841 t4 = b ^ t3;
genesis 842 t10 = (~t3) % 0x100000000;
genesis 843 h = t2 ^ t4;
genesis 844 t7 = a ^ t6;
genesis 845 t14 = (~t7) % 0x100000000;
genesis 846 t8 = c | t7;
genesis 847 t11 = t3 ^ t7;
genesis 848 g = t4 ^ t8;
genesis 849 t12 = h & t11;
genesis 850 f = t10 ^ t12;
genesis 851 e = t12 ^ t14
genesis 852 key[4 * 27 + 8] = e
genesis 853 key[4 * 27 + 9] = f
genesis 854 key[4 * 27 + 10] = g
genesis 855 key[4 * 27 + 11] = h
genesis 856 a = key[4 * 28 + 8]
genesis 857 b = key[4 * 28 + 9]
genesis 858 c = key[4 * 28 + 10]
genesis 859 d = key[4 * 28 + 11]
genesis 860 t1 = (~c) % 0x100000000;
genesis 861 t2 = b ^ c;
genesis 862 t3 = b | t1;
genesis 863 t4 = d ^ t3;
genesis 864 t5 = a & t4;
genesis 865 t7 = a ^ d;
genesis 866 h = t2 ^ t5;
genesis 867 t8 = b ^ t5;
genesis 868 t9 = t2 | t8;
genesis 869 t11 = d & t3;
genesis 870 f = t7 ^ t9;
genesis 871 t12 = t5 ^ f;
genesis 872 t15 = t1 | t4;
genesis 873 t13 = h & t12;
genesis 874 g = t11 ^ t13;
genesis 875 t16 = t12 ^ g;
genesis 876 e = t15 ^ t16
genesis 877 key[4 * 28 + 8] = e
genesis 878 key[4 * 28 + 9] = f
genesis 879 key[4 * 28 + 10] = g
genesis 880 key[4 * 28 + 11] = h
genesis 881 a = key[4 * 29 + 8]
genesis 882 b = key[4 * 29 + 9]
genesis 883 c = key[4 * 29 + 10]
genesis 884 d = key[4 * 29 + 11]
genesis 885 t1 = (~a) % 0x100000000;
genesis 886 t2 = a ^ d;
genesis 887 t3 = b ^ t2;
genesis 888 t4 = t1 | t2;
genesis 889 t5 = c ^ t4;
genesis 890 f = b ^ t5;
genesis 891 t13 = (~t5) % 0x100000000;
genesis 892 t7 = t2 | f;
genesis 893 t8 = d ^ t7;
genesis 894 t9 = t5 & t8;
genesis 895 g = t3 ^ t9;
genesis 896 t11 = t5 ^ t8;
genesis 897 e = g ^ t11;
genesis 898 t14 = t3 & t11;
genesis 899 h = t13 ^ t14
genesis 900 key[4 * 29 + 8] = e
genesis 901 key[4 * 29 + 9] = f
genesis 902 key[4 * 29 + 10] = g
genesis 903 key[4 * 29 + 11] = h
genesis 904 a = key[4 * 30 + 8]
genesis 905 b = key[4 * 30 + 9]
genesis 906 c = key[4 * 30 + 10]
genesis 907 d = key[4 * 30 + 11]
genesis 908 t1 = (~a) % 0x100000000;
genesis 909 t2 = a ^ b;
genesis 910 t3 = a ^ d;
genesis 911 t4 = c ^ t1;
genesis 912 t5 = t2 | t3;
genesis 913 e = t4 ^ t5;
genesis 914 t7 = d & e;
genesis 915 t8 = t2 ^ e;
genesis 916 t10 = t1 | e;
genesis 917 f = t7 ^ t8;
genesis 918 t11 = t2 | t7;
genesis 919 t12 = t3 ^ t10;
genesis 920 t14 = b ^ t7;
genesis 921 g = t11 ^ t12;
genesis 922 t15 = f & t12;
genesis 923 h = t14 ^ t15
genesis 924 key[4 * 30 + 8] = e
genesis 925 key[4 * 30 + 9] = f
genesis 926 key[4 * 30 + 10] = g
genesis 927 key[4 * 30 + 11] = h
genesis 928 a = key[4 * 31 + 8]
genesis 929 b = key[4 * 31 + 9]
genesis 930 c = key[4 * 31 + 10]
genesis 931 d = key[4 * 31 + 11]
genesis 932 t1 = a ^ d;
genesis 933 t2 = d & t1;
genesis 934 t3 = c ^ t2;
genesis 935 t4 = b | t3;
genesis 936 h = t1 ^ t4;
genesis 937 t6 = (~b) % 0x100000000;
genesis 938 t7 = t1 | t6;
genesis 939 e = t3 ^ t7;
genesis 940 t9 = a & e;
genesis 941 t10 = t1 ^ t6;
genesis 942 t11 = t4 & t10;
genesis 943 g = t9 ^ t11;
genesis 944 t13 = a ^ t3;
genesis 945 t14 = t10 & g;
genesis 946 f = t13 ^ t14
genesis 947 key[4 * 31 + 8] = e
genesis 948 key[4 * 31 + 9] = f
genesis 949 key[4 * 31 + 10] = g
genesis 950 key[4 * 31 + 11] = h
genesis 951 a = key[4 * 32 + 8]
genesis 952 b = key[4 * 32 + 9]
genesis 953 c = key[4 * 32 + 10]
genesis 954 d = key[4 * 32 + 11]
genesis 955 t1 = a ^ c;
genesis 956 t2 = d ^ t1;
genesis 957 t3 = a & t2;
genesis 958 t4 = d ^ t3;
genesis 959 t5 = b & t4;
genesis 960 g = t2 ^ t5;
genesis 961 t7 = a | g;
genesis 962 t8 = b | d;
genesis 963 t11 = a | d;
genesis 964 t9 = t4 & t7;
genesis 965 f = t8 ^ t9;
genesis 966 t12 = b ^ t11;
genesis 967 t13 = g ^ t9;
genesis 968 t15 = t3 ^ t8;
genesis 969 h = t12 ^ t13;
genesis 970 t16 = c & t15;
genesis 971 e = t12 ^ t16
genesis 972 key[4 * 32 + 8] = e
genesis 973 key[4 * 32 + 9] = f
genesis 974 key[4 * 32 + 10] = g
genesis 975 key[4 * 32 + 11] = h
genesis 976
genesis 977 def encrypt(key, in_blk):
genesis 978
genesis 979 a = in_blk[0]
genesis 980 b = in_blk[1]
genesis 981 c = in_blk[2]
genesis 982 d = in_blk[3]
genesis 983 if WORD_BIGENDIAN:
genesis 984 a = byteswap32(a)
genesis 985 b = byteswap32(b)
genesis 986 c = byteswap32(c)
genesis 987 d = byteswap32(d)
genesis 988 e = 0
genesis 989 f = 0
genesis 990 g = 0
genesis 991 h = 0
genesis 992 t1 = 0
genesis 993 t2 = 0
genesis 994 t3 = 0
genesis 995 t4 = 0
genesis 996 t5 = 0
genesis 997 t6 = 0
genesis 998 t7 = 0
genesis 999 t8 = 0
genesis 1000 t9 = 0
genesis 1001 t10 = 0
genesis 1002 t11 = 0
genesis 1003 t12 = 0
genesis 1004 t13 = 0
genesis 1005 t14 = 0
genesis 1006 t15 = 0
genesis 1007 t16 = 0
genesis 1008 a ^= key[4 * 0 + 8]
genesis 1009 b ^= key[4 * 0 + 9]
genesis 1010 c ^= key[4 * 0 + 10]
genesis 1011 d ^= key[4 * 0 + 11]
genesis 1012 t1 = a ^ d;
genesis 1013 t2 = a & d;
genesis 1014 t3 = c ^ t1;
genesis 1015 t6 = b & t1;
genesis 1016 t4 = b ^ t3;
genesis 1017 t10 = (~t3) % 0x100000000;
genesis 1018 h = t2 ^ t4;
genesis 1019 t7 = a ^ t6;
genesis 1020 t14 = (~t7) % 0x100000000;
genesis 1021 t8 = c | t7;
genesis 1022 t11 = t3 ^ t7;
genesis 1023 g = t4 ^ t8;
genesis 1024 t12 = h & t11;
genesis 1025 f = t10 ^ t12;
genesis 1026 e = t12 ^ t14
genesis 1027 e = rotl32(e, 13)
genesis 1028 g = rotl32(g, 3)
genesis 1029 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1030 f ^= e ^ g
genesis 1031 h = rotl32(h, 7)
genesis 1032 f = rotl32(f, 1)
genesis 1033 e ^= f ^ h
genesis 1034 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1035 e = rotl32(e, 5)
genesis 1036 g = rotl32(g, 22)
genesis 1037 e ^= key[4 * 1 + 8]
genesis 1038 f ^= key[4 * 1 + 9]
genesis 1039 g ^= key[4 * 1 + 10]
genesis 1040 h ^= key[4 * 1 + 11]
genesis 1041 t1 = (~e) % 0x100000000;
genesis 1042 t2 = f ^ t1;
genesis 1043 t3 = e | t2;
genesis 1044 t4 = h | t2;
genesis 1045 t5 = g ^ t3;
genesis 1046 c = h ^ t5;
genesis 1047 t7 = f ^ t4;
genesis 1048 t8 = t2 ^ c;
genesis 1049 t9 = t5 & t7;
genesis 1050 d = t8 ^ t9;
genesis 1051 t11 = t5 ^ t7;
genesis 1052 b = d ^ t11;
genesis 1053 t13 = t8 & t11;
genesis 1054 a = t5 ^ t13
genesis 1055 a = rotl32(a, 13)
genesis 1056 c = rotl32(c, 3)
genesis 1057 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1058 b ^= a ^ c
genesis 1059 d = rotl32(d, 7)
genesis 1060 b = rotl32(b, 1)
genesis 1061 a ^= b ^ d
genesis 1062 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1063 a = rotl32(a, 5)
genesis 1064 c = rotl32(c, 22)
genesis 1065 a ^= key[4 * 2 + 8]
genesis 1066 b ^= key[4 * 2 + 9]
genesis 1067 c ^= key[4 * 2 + 10]
genesis 1068 d ^= key[4 * 2 + 11]
genesis 1069 t1 = (~a) % 0x100000000;
genesis 1070 t2 = b ^ d;
genesis 1071 t3 = c & t1;
genesis 1072 t13 = d | t1;
genesis 1073 e = t2 ^ t3;
genesis 1074 t5 = c ^ t1;
genesis 1075 t6 = c ^ e;
genesis 1076 t7 = b & t6;
genesis 1077 t10 = e | t5;
genesis 1078 h = t5 ^ t7;
genesis 1079 t9 = d | t7;
genesis 1080 t11 = t9 & t10;
genesis 1081 t14 = t2 ^ h;
genesis 1082 g = a ^ t11;
genesis 1083 t15 = g ^ t13;
genesis 1084 f = t14 ^ t15
genesis 1085 e = rotl32(e, 13)
genesis 1086 g = rotl32(g, 3)
genesis 1087 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1088 f ^= e ^ g
genesis 1089 h = rotl32(h, 7)
genesis 1090 f = rotl32(f, 1)
genesis 1091 e ^= f ^ h
genesis 1092 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1093 e = rotl32(e, 5)
genesis 1094 g = rotl32(g, 22)
genesis 1095 e ^= key[4 * 3 + 8]
genesis 1096 f ^= key[4 * 3 + 9]
genesis 1097 g ^= key[4 * 3 + 10]
genesis 1098 h ^= key[4 * 3 + 11]
genesis 1099 t1 = e ^ g;
genesis 1100 t2 = h ^ t1;
genesis 1101 t3 = e & t2;
genesis 1102 t4 = h ^ t3;
genesis 1103 t5 = f & t4;
genesis 1104 c = t2 ^ t5;
genesis 1105 t7 = e | c;
genesis 1106 t8 = f | h;
genesis 1107 t11 = e | h;
genesis 1108 t9 = t4 & t7;
genesis 1109 b = t8 ^ t9;
genesis 1110 t12 = f ^ t11;
genesis 1111 t13 = c ^ t9;
genesis 1112 t15 = t3 ^ t8;
genesis 1113 d = t12 ^ t13;
genesis 1114 t16 = g & t15;
genesis 1115 a = t12 ^ t16
genesis 1116 a = rotl32(a, 13)
genesis 1117 c = rotl32(c, 3)
genesis 1118 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1119 b ^= a ^ c
genesis 1120 d = rotl32(d, 7)
genesis 1121 b = rotl32(b, 1)
genesis 1122 a ^= b ^ d
genesis 1123 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1124 a = rotl32(a, 5)
genesis 1125 c = rotl32(c, 22)
genesis 1126 a ^= key[4 * 4 + 8]
genesis 1127 b ^= key[4 * 4 + 9]
genesis 1128 c ^= key[4 * 4 + 10]
genesis 1129 d ^= key[4 * 4 + 11]
genesis 1130 t1 = a ^ d;
genesis 1131 t2 = d & t1;
genesis 1132 t3 = c ^ t2;
genesis 1133 t4 = b | t3;
genesis 1134 h = t1 ^ t4;
genesis 1135 t6 = (~b) % 0x100000000;
genesis 1136 t7 = t1 | t6;
genesis 1137 e = t3 ^ t7;
genesis 1138 t9 = a & e;
genesis 1139 t10 = t1 ^ t6;
genesis 1140 t11 = t4 & t10;
genesis 1141 g = t9 ^ t11;
genesis 1142 t13 = a ^ t3;
genesis 1143 t14 = t10 & g;
genesis 1144 f = t13 ^ t14
genesis 1145 e = rotl32(e, 13)
genesis 1146 g = rotl32(g, 3)
genesis 1147 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1148 f ^= e ^ g
genesis 1149 h = rotl32(h, 7)
genesis 1150 f = rotl32(f, 1)
genesis 1151 e ^= f ^ h
genesis 1152 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1153 e = rotl32(e, 5)
genesis 1154 g = rotl32(g, 22)
genesis 1155 e ^= key[4 * 5 + 8]
genesis 1156 f ^= key[4 * 5 + 9]
genesis 1157 g ^= key[4 * 5 + 10]
genesis 1158 h ^= key[4 * 5 + 11]
genesis 1159 t1 = (~e) % 0x100000000;
genesis 1160 t2 = e ^ f;
genesis 1161 t3 = e ^ h;
genesis 1162 t4 = g ^ t1;
genesis 1163 t5 = t2 | t3;
genesis 1164 a = t4 ^ t5;
genesis 1165 t7 = h & a;
genesis 1166 t8 = t2 ^ a;
genesis 1167 t10 = t1 | a;
genesis 1168 b = t7 ^ t8;
genesis 1169 t11 = t2 | t7;
genesis 1170 t12 = t3 ^ t10;
genesis 1171 t14 = f ^ t7;
genesis 1172 c = t11 ^ t12;
genesis 1173 t15 = b & t12;
genesis 1174 d = t14 ^ t15
genesis 1175 a = rotl32(a, 13)
genesis 1176 c = rotl32(c, 3)
genesis 1177 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1178 b ^= a ^ c
genesis 1179 d = rotl32(d, 7)
genesis 1180 b = rotl32(b, 1)
genesis 1181 a ^= b ^ d
genesis 1182 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1183 a = rotl32(a, 5)
genesis 1184 c = rotl32(c, 22)
genesis 1185 a ^= key[4 * 6 + 8]
genesis 1186 b ^= key[4 * 6 + 9]
genesis 1187 c ^= key[4 * 6 + 10]
genesis 1188 d ^= key[4 * 6 + 11]
genesis 1189 t1 = (~a) % 0x100000000;
genesis 1190 t2 = a ^ d;
genesis 1191 t3 = b ^ t2;
genesis 1192 t4 = t1 | t2;
genesis 1193 t5 = c ^ t4;
genesis 1194 f = b ^ t5;
genesis 1195 t13 = (~t5) % 0x100000000;
genesis 1196 t7 = t2 | f;
genesis 1197 t8 = d ^ t7;
genesis 1198 t9 = t5 & t8;
genesis 1199 g = t3 ^ t9;
genesis 1200 t11 = t5 ^ t8;
genesis 1201 e = g ^ t11;
genesis 1202 t14 = t3 & t11;
genesis 1203 h = t13 ^ t14
genesis 1204 e = rotl32(e, 13)
genesis 1205 g = rotl32(g, 3)
genesis 1206 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1207 f ^= e ^ g
genesis 1208 h = rotl32(h, 7)
genesis 1209 f = rotl32(f, 1)
genesis 1210 e ^= f ^ h
genesis 1211 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1212 e = rotl32(e, 5)
genesis 1213 g = rotl32(g, 22)
genesis 1214 e ^= key[4 * 7 + 8]
genesis 1215 f ^= key[4 * 7 + 9]
genesis 1216 g ^= key[4 * 7 + 10]
genesis 1217 h ^= key[4 * 7 + 11]
genesis 1218 t1 = (~g) % 0x100000000;
genesis 1219 t2 = f ^ g;
genesis 1220 t3 = f | t1;
genesis 1221 t4 = h ^ t3;
genesis 1222 t5 = e & t4;
genesis 1223 t7 = e ^ h;
genesis 1224 d = t2 ^ t5;
genesis 1225 t8 = f ^ t5;
genesis 1226 t9 = t2 | t8;
genesis 1227 t11 = h & t3;
genesis 1228 b = t7 ^ t9;
genesis 1229 t12 = t5 ^ b;
genesis 1230 t15 = t1 | t4;
genesis 1231 t13 = d & t12;
genesis 1232 c = t11 ^ t13;
genesis 1233 t16 = t12 ^ c;
genesis 1234 a = t15 ^ t16
genesis 1235 a = rotl32(a, 13)
genesis 1236 c = rotl32(c, 3)
genesis 1237 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1238 b ^= a ^ c
genesis 1239 d = rotl32(d, 7)
genesis 1240 b = rotl32(b, 1)
genesis 1241 a ^= b ^ d
genesis 1242 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1243 a = rotl32(a, 5)
genesis 1244 c = rotl32(c, 22)
genesis 1245 a ^= key[4 * 8 + 8]
genesis 1246 b ^= key[4 * 8 + 9]
genesis 1247 c ^= key[4 * 8 + 10]
genesis 1248 d ^= key[4 * 8 + 11]
genesis 1249 t1 = a ^ d;
genesis 1250 t2 = a & d;
genesis 1251 t3 = c ^ t1;
genesis 1252 t6 = b & t1;
genesis 1253 t4 = b ^ t3;
genesis 1254 t10 = (~t3) % 0x100000000;
genesis 1255 h = t2 ^ t4;
genesis 1256 t7 = a ^ t6;
genesis 1257 t14 = (~t7) % 0x100000000;
genesis 1258 t8 = c | t7;
genesis 1259 t11 = t3 ^ t7;
genesis 1260 g = t4 ^ t8;
genesis 1261 t12 = h & t11;
genesis 1262 f = t10 ^ t12;
genesis 1263 e = t12 ^ t14
genesis 1264 e = rotl32(e, 13)
genesis 1265 g = rotl32(g, 3)
genesis 1266 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1267 f ^= e ^ g
genesis 1268 h = rotl32(h, 7)
genesis 1269 f = rotl32(f, 1)
genesis 1270 e ^= f ^ h
genesis 1271 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1272 e = rotl32(e, 5)
genesis 1273 g = rotl32(g, 22)
genesis 1274 e ^= key[4 * 9 + 8]
genesis 1275 f ^= key[4 * 9 + 9]
genesis 1276 g ^= key[4 * 9 + 10]
genesis 1277 h ^= key[4 * 9 + 11]
genesis 1278 t1 = (~e) % 0x100000000;
genesis 1279 t2 = f ^ t1;
genesis 1280 t3 = e | t2;
genesis 1281 t4 = h | t2;
genesis 1282 t5 = g ^ t3;
genesis 1283 c = h ^ t5;
genesis 1284 t7 = f ^ t4;
genesis 1285 t8 = t2 ^ c;
genesis 1286 t9 = t5 & t7;
genesis 1287 d = t8 ^ t9;
genesis 1288 t11 = t5 ^ t7;
genesis 1289 b = d ^ t11;
genesis 1290 t13 = t8 & t11;
genesis 1291 a = t5 ^ t13
genesis 1292 a = rotl32(a, 13)
genesis 1293 c = rotl32(c, 3)
genesis 1294 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1295 b ^= a ^ c
genesis 1296 d = rotl32(d, 7)
genesis 1297 b = rotl32(b, 1)
genesis 1298 a ^= b ^ d
genesis 1299 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1300 a = rotl32(a, 5)
genesis 1301 c = rotl32(c, 22)
genesis 1302 a ^= key[4 * 10 + 8]
genesis 1303 b ^= key[4 * 10 + 9]
genesis 1304 c ^= key[4 * 10 + 10]
genesis 1305 d ^= key[4 * 10 + 11]
genesis 1306 t1 = (~a) % 0x100000000;
genesis 1307 t2 = b ^ d;
genesis 1308 t3 = c & t1;
genesis 1309 t13 = d | t1;
genesis 1310 e = t2 ^ t3;
genesis 1311 t5 = c ^ t1;
genesis 1312 t6 = c ^ e;
genesis 1313 t7 = b & t6;
genesis 1314 t10 = e | t5;
genesis 1315 h = t5 ^ t7;
genesis 1316 t9 = d | t7;
genesis 1317 t11 = t9 & t10;
genesis 1318 t14 = t2 ^ h;
genesis 1319 g = a ^ t11;
genesis 1320 t15 = g ^ t13;
genesis 1321 f = t14 ^ t15
genesis 1322 e = rotl32(e, 13)
genesis 1323 g = rotl32(g, 3)
genesis 1324 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1325 f ^= e ^ g
genesis 1326 h = rotl32(h, 7)
genesis 1327 f = rotl32(f, 1)
genesis 1328 e ^= f ^ h
genesis 1329 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1330 e = rotl32(e, 5)
genesis 1331 g = rotl32(g, 22)
genesis 1332 e ^= key[4 * 11 + 8]
genesis 1333 f ^= key[4 * 11 + 9]
genesis 1334 g ^= key[4 * 11 + 10]
genesis 1335 h ^= key[4 * 11 + 11]
genesis 1336 t1 = e ^ g;
genesis 1337 t2 = h ^ t1;
genesis 1338 t3 = e & t2;
genesis 1339 t4 = h ^ t3;
genesis 1340 t5 = f & t4;
genesis 1341 c = t2 ^ t5;
genesis 1342 t7 = e | c;
genesis 1343 t8 = f | h;
genesis 1344 t11 = e | h;
genesis 1345 t9 = t4 & t7;
genesis 1346 b = t8 ^ t9;
genesis 1347 t12 = f ^ t11;
genesis 1348 t13 = c ^ t9;
genesis 1349 t15 = t3 ^ t8;
genesis 1350 d = t12 ^ t13;
genesis 1351 t16 = g & t15;
genesis 1352 a = t12 ^ t16
genesis 1353 a = rotl32(a, 13)
genesis 1354 c = rotl32(c, 3)
genesis 1355 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1356 b ^= a ^ c
genesis 1357 d = rotl32(d, 7)
genesis 1358 b = rotl32(b, 1)
genesis 1359 a ^= b ^ d
genesis 1360 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1361 a = rotl32(a, 5)
genesis 1362 c = rotl32(c, 22)
genesis 1363 a ^= key[4 * 12 + 8]
genesis 1364 b ^= key[4 * 12 + 9]
genesis 1365 c ^= key[4 * 12 + 10]
genesis 1366 d ^= key[4 * 12 + 11]
genesis 1367 t1 = a ^ d;
genesis 1368 t2 = d & t1;
genesis 1369 t3 = c ^ t2;
genesis 1370 t4 = b | t3;
genesis 1371 h = t1 ^ t4;
genesis 1372 t6 = (~b) % 0x100000000;
genesis 1373 t7 = t1 | t6;
genesis 1374 e = t3 ^ t7;
genesis 1375 t9 = a & e;
genesis 1376 t10 = t1 ^ t6;
genesis 1377 t11 = t4 & t10;
genesis 1378 g = t9 ^ t11;
genesis 1379 t13 = a ^ t3;
genesis 1380 t14 = t10 & g;
genesis 1381 f = t13 ^ t14
genesis 1382 e = rotl32(e, 13)
genesis 1383 g = rotl32(g, 3)
genesis 1384 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1385 f ^= e ^ g
genesis 1386 h = rotl32(h, 7)
genesis 1387 f = rotl32(f, 1)
genesis 1388 e ^= f ^ h
genesis 1389 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1390 e = rotl32(e, 5)
genesis 1391 g = rotl32(g, 22)
genesis 1392 e ^= key[4 * 13 + 8]
genesis 1393 f ^= key[4 * 13 + 9]
genesis 1394 g ^= key[4 * 13 + 10]
genesis 1395 h ^= key[4 * 13 + 11]
genesis 1396 t1 = (~e) % 0x100000000;
genesis 1397 t2 = e ^ f;
genesis 1398 t3 = e ^ h;
genesis 1399 t4 = g ^ t1;
genesis 1400 t5 = t2 | t3;
genesis 1401 a = t4 ^ t5;
genesis 1402 t7 = h & a;
genesis 1403 t8 = t2 ^ a;
genesis 1404 t10 = t1 | a;
genesis 1405 b = t7 ^ t8;
genesis 1406 t11 = t2 | t7;
genesis 1407 t12 = t3 ^ t10;
genesis 1408 t14 = f ^ t7;
genesis 1409 c = t11 ^ t12;
genesis 1410 t15 = b & t12;
genesis 1411 d = t14 ^ t15
genesis 1412 a = rotl32(a, 13)
genesis 1413 c = rotl32(c, 3)
genesis 1414 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1415 b ^= a ^ c
genesis 1416 d = rotl32(d, 7)
genesis 1417 b = rotl32(b, 1)
genesis 1418 a ^= b ^ d
genesis 1419 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1420 a = rotl32(a, 5)
genesis 1421 c = rotl32(c, 22)
genesis 1422 a ^= key[4 * 14 + 8]
genesis 1423 b ^= key[4 * 14 + 9]
genesis 1424 c ^= key[4 * 14 + 10]
genesis 1425 d ^= key[4 * 14 + 11]
genesis 1426 t1 = (~a) % 0x100000000;
genesis 1427 t2 = a ^ d;
genesis 1428 t3 = b ^ t2;
genesis 1429 t4 = t1 | t2;
genesis 1430 t5 = c ^ t4;
genesis 1431 f = b ^ t5;
genesis 1432 t13 = (~t5) % 0x100000000;
genesis 1433 t7 = t2 | f;
genesis 1434 t8 = d ^ t7;
genesis 1435 t9 = t5 & t8;
genesis 1436 g = t3 ^ t9;
genesis 1437 t11 = t5 ^ t8;
genesis 1438 e = g ^ t11;
genesis 1439 t14 = t3 & t11;
genesis 1440 h = t13 ^ t14
genesis 1441 e = rotl32(e, 13)
genesis 1442 g = rotl32(g, 3)
genesis 1443 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1444 f ^= e ^ g
genesis 1445 h = rotl32(h, 7)
genesis 1446 f = rotl32(f, 1)
genesis 1447 e ^= f ^ h
genesis 1448 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1449 e = rotl32(e, 5)
genesis 1450 g = rotl32(g, 22)
genesis 1451 e ^= key[4 * 15 + 8]
genesis 1452 f ^= key[4 * 15 + 9]
genesis 1453 g ^= key[4 * 15 + 10]
genesis 1454 h ^= key[4 * 15 + 11]
genesis 1455 t1 = (~g) % 0x100000000;
genesis 1456 t2 = f ^ g;
genesis 1457 t3 = f | t1;
genesis 1458 t4 = h ^ t3;
genesis 1459 t5 = e & t4;
genesis 1460 t7 = e ^ h;
genesis 1461 d = t2 ^ t5;
genesis 1462 t8 = f ^ t5;
genesis 1463 t9 = t2 | t8;
genesis 1464 t11 = h & t3;
genesis 1465 b = t7 ^ t9;
genesis 1466 t12 = t5 ^ b;
genesis 1467 t15 = t1 | t4;
genesis 1468 t13 = d & t12;
genesis 1469 c = t11 ^ t13;
genesis 1470 t16 = t12 ^ c;
genesis 1471 a = t15 ^ t16
genesis 1472 a = rotl32(a, 13)
genesis 1473 c = rotl32(c, 3)
genesis 1474 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1475 b ^= a ^ c
genesis 1476 d = rotl32(d, 7)
genesis 1477 b = rotl32(b, 1)
genesis 1478 a ^= b ^ d
genesis 1479 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1480 a = rotl32(a, 5)
genesis 1481 c = rotl32(c, 22)
genesis 1482 a ^= key[4 * 16 + 8]
genesis 1483 b ^= key[4 * 16 + 9]
genesis 1484 c ^= key[4 * 16 + 10]
genesis 1485 d ^= key[4 * 16 + 11]
genesis 1486 t1 = a ^ d;
genesis 1487 t2 = a & d;
genesis 1488 t3 = c ^ t1;
genesis 1489 t6 = b & t1;
genesis 1490 t4 = b ^ t3;
genesis 1491 t10 = (~t3) % 0x100000000;
genesis 1492 h = t2 ^ t4;
genesis 1493 t7 = a ^ t6;
genesis 1494 t14 = (~t7) % 0x100000000;
genesis 1495 t8 = c | t7;
genesis 1496 t11 = t3 ^ t7;
genesis 1497 g = t4 ^ t8;
genesis 1498 t12 = h & t11;
genesis 1499 f = t10 ^ t12;
genesis 1500 e = t12 ^ t14
genesis 1501 e = rotl32(e, 13)
genesis 1502 g = rotl32(g, 3)
genesis 1503 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1504 f ^= e ^ g
genesis 1505 h = rotl32(h, 7)
genesis 1506 f = rotl32(f, 1)
genesis 1507 e ^= f ^ h
genesis 1508 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1509 e = rotl32(e, 5)
genesis 1510 g = rotl32(g, 22)
genesis 1511 e ^= key[4 * 17 + 8]
genesis 1512 f ^= key[4 * 17 + 9]
genesis 1513 g ^= key[4 * 17 + 10]
genesis 1514 h ^= key[4 * 17 + 11]
genesis 1515 t1 = (~e) % 0x100000000;
genesis 1516 t2 = f ^ t1;
genesis 1517 t3 = e | t2;
genesis 1518 t4 = h | t2;
genesis 1519 t5 = g ^ t3;
genesis 1520 c = h ^ t5;
genesis 1521 t7 = f ^ t4;
genesis 1522 t8 = t2 ^ c;
genesis 1523 t9 = t5 & t7;
genesis 1524 d = t8 ^ t9;
genesis 1525 t11 = t5 ^ t7;
genesis 1526 b = d ^ t11;
genesis 1527 t13 = t8 & t11;
genesis 1528 a = t5 ^ t13
genesis 1529 a = rotl32(a, 13)
genesis 1530 c = rotl32(c, 3)
genesis 1531 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1532 b ^= a ^ c
genesis 1533 d = rotl32(d, 7)
genesis 1534 b = rotl32(b, 1)
genesis 1535 a ^= b ^ d
genesis 1536 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1537 a = rotl32(a, 5)
genesis 1538 c = rotl32(c, 22)
genesis 1539 a ^= key[4 * 18 + 8]
genesis 1540 b ^= key[4 * 18 + 9]
genesis 1541 c ^= key[4 * 18 + 10]
genesis 1542 d ^= key[4 * 18 + 11]
genesis 1543 t1 = (~a) % 0x100000000;
genesis 1544 t2 = b ^ d;
genesis 1545 t3 = c & t1;
genesis 1546 t13 = d | t1;
genesis 1547 e = t2 ^ t3;
genesis 1548 t5 = c ^ t1;
genesis 1549 t6 = c ^ e;
genesis 1550 t7 = b & t6;
genesis 1551 t10 = e | t5;
genesis 1552 h = t5 ^ t7;
genesis 1553 t9 = d | t7;
genesis 1554 t11 = t9 & t10;
genesis 1555 t14 = t2 ^ h;
genesis 1556 g = a ^ t11;
genesis 1557 t15 = g ^ t13;
genesis 1558 f = t14 ^ t15
genesis 1559 e = rotl32(e, 13)
genesis 1560 g = rotl32(g, 3)
genesis 1561 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1562 f ^= e ^ g
genesis 1563 h = rotl32(h, 7)
genesis 1564 f = rotl32(f, 1)
genesis 1565 e ^= f ^ h
genesis 1566 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1567 e = rotl32(e, 5)
genesis 1568 g = rotl32(g, 22)
genesis 1569 e ^= key[4 * 19 + 8]
genesis 1570 f ^= key[4 * 19 + 9]
genesis 1571 g ^= key[4 * 19 + 10]
genesis 1572 h ^= key[4 * 19 + 11]
genesis 1573 t1 = e ^ g;
genesis 1574 t2 = h ^ t1;
genesis 1575 t3 = e & t2;
genesis 1576 t4 = h ^ t3;
genesis 1577 t5 = f & t4;
genesis 1578 c = t2 ^ t5;
genesis 1579 t7 = e | c;
genesis 1580 t8 = f | h;
genesis 1581 t11 = e | h;
genesis 1582 t9 = t4 & t7;
genesis 1583 b = t8 ^ t9;
genesis 1584 t12 = f ^ t11;
genesis 1585 t13 = c ^ t9;
genesis 1586 t15 = t3 ^ t8;
genesis 1587 d = t12 ^ t13;
genesis 1588 t16 = g & t15;
genesis 1589 a = t12 ^ t16
genesis 1590 a = rotl32(a, 13)
genesis 1591 c = rotl32(c, 3)
genesis 1592 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1593 b ^= a ^ c
genesis 1594 d = rotl32(d, 7)
genesis 1595 b = rotl32(b, 1)
genesis 1596 a ^= b ^ d
genesis 1597 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1598 a = rotl32(a, 5)
genesis 1599 c = rotl32(c, 22)
genesis 1600 a ^= key[4 * 20 + 8]
genesis 1601 b ^= key[4 * 20 + 9]
genesis 1602 c ^= key[4 * 20 + 10]
genesis 1603 d ^= key[4 * 20 + 11]
genesis 1604 t1 = a ^ d;
genesis 1605 t2 = d & t1;
genesis 1606 t3 = c ^ t2;
genesis 1607 t4 = b | t3;
genesis 1608 h = t1 ^ t4;
genesis 1609 t6 = (~b) % 0x100000000;
genesis 1610 t7 = t1 | t6;
genesis 1611 e = t3 ^ t7;
genesis 1612 t9 = a & e;
genesis 1613 t10 = t1 ^ t6;
genesis 1614 t11 = t4 & t10;
genesis 1615 g = t9 ^ t11;
genesis 1616 t13 = a ^ t3;
genesis 1617 t14 = t10 & g;
genesis 1618 f = t13 ^ t14
genesis 1619 e = rotl32(e, 13)
genesis 1620 g = rotl32(g, 3)
genesis 1621 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1622 f ^= e ^ g
genesis 1623 h = rotl32(h, 7)
genesis 1624 f = rotl32(f, 1)
genesis 1625 e ^= f ^ h
genesis 1626 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1627 e = rotl32(e, 5)
genesis 1628 g = rotl32(g, 22)
genesis 1629 e ^= key[4 * 21 + 8]
genesis 1630 f ^= key[4 * 21 + 9]
genesis 1631 g ^= key[4 * 21 + 10]
genesis 1632 h ^= key[4 * 21 + 11]
genesis 1633 t1 = (~e) % 0x100000000;
genesis 1634 t2 = e ^ f;
genesis 1635 t3 = e ^ h;
genesis 1636 t4 = g ^ t1;
genesis 1637 t5 = t2 | t3;
genesis 1638 a = t4 ^ t5;
genesis 1639 t7 = h & a;
genesis 1640 t8 = t2 ^ a;
genesis 1641 t10 = t1 | a;
genesis 1642 b = t7 ^ t8;
genesis 1643 t11 = t2 | t7;
genesis 1644 t12 = t3 ^ t10;
genesis 1645 t14 = f ^ t7;
genesis 1646 c = t11 ^ t12;
genesis 1647 t15 = b & t12;
genesis 1648 d = t14 ^ t15
genesis 1649 a = rotl32(a, 13)
genesis 1650 c = rotl32(c, 3)
genesis 1651 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1652 b ^= a ^ c
genesis 1653 d = rotl32(d, 7)
genesis 1654 b = rotl32(b, 1)
genesis 1655 a ^= b ^ d
genesis 1656 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1657 a = rotl32(a, 5)
genesis 1658 c = rotl32(c, 22)
genesis 1659 a ^= key[4 * 22 + 8]
genesis 1660 b ^= key[4 * 22 + 9]
genesis 1661 c ^= key[4 * 22 + 10]
genesis 1662 d ^= key[4 * 22 + 11]
genesis 1663 t1 = (~a) % 0x100000000;
genesis 1664 t2 = a ^ d;
genesis 1665 t3 = b ^ t2;
genesis 1666 t4 = t1 | t2;
genesis 1667 t5 = c ^ t4;
genesis 1668 f = b ^ t5;
genesis 1669 t13 = (~t5) % 0x100000000;
genesis 1670 t7 = t2 | f;
genesis 1671 t8 = d ^ t7;
genesis 1672 t9 = t5 & t8;
genesis 1673 g = t3 ^ t9;
genesis 1674 t11 = t5 ^ t8;
genesis 1675 e = g ^ t11;
genesis 1676 t14 = t3 & t11;
genesis 1677 h = t13 ^ t14
genesis 1678 e = rotl32(e, 13)
genesis 1679 g = rotl32(g, 3)
genesis 1680 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1681 f ^= e ^ g
genesis 1682 h = rotl32(h, 7)
genesis 1683 f = rotl32(f, 1)
genesis 1684 e ^= f ^ h
genesis 1685 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1686 e = rotl32(e, 5)
genesis 1687 g = rotl32(g, 22)
genesis 1688 e ^= key[4 * 23 + 8]
genesis 1689 f ^= key[4 * 23 + 9]
genesis 1690 g ^= key[4 * 23 + 10]
genesis 1691 h ^= key[4 * 23 + 11]
genesis 1692 t1 = (~g) % 0x100000000;
genesis 1693 t2 = f ^ g;
genesis 1694 t3 = f | t1;
genesis 1695 t4 = h ^ t3;
genesis 1696 t5 = e & t4;
genesis 1697 t7 = e ^ h;
genesis 1698 d = t2 ^ t5;
genesis 1699 t8 = f ^ t5;
genesis 1700 t9 = t2 | t8;
genesis 1701 t11 = h & t3;
genesis 1702 b = t7 ^ t9;
genesis 1703 t12 = t5 ^ b;
genesis 1704 t15 = t1 | t4;
genesis 1705 t13 = d & t12;
genesis 1706 c = t11 ^ t13;
genesis 1707 t16 = t12 ^ c;
genesis 1708 a = t15 ^ t16
genesis 1709 a = rotl32(a, 13)
genesis 1710 c = rotl32(c, 3)
genesis 1711 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1712 b ^= a ^ c
genesis 1713 d = rotl32(d, 7)
genesis 1714 b = rotl32(b, 1)
genesis 1715 a ^= b ^ d
genesis 1716 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1717 a = rotl32(a, 5)
genesis 1718 c = rotl32(c, 22)
genesis 1719 a ^= key[4 * 24 + 8]
genesis 1720 b ^= key[4 * 24 + 9]
genesis 1721 c ^= key[4 * 24 + 10]
genesis 1722 d ^= key[4 * 24 + 11]
genesis 1723 t1 = a ^ d;
genesis 1724 t2 = a & d;
genesis 1725 t3 = c ^ t1;
genesis 1726 t6 = b & t1;
genesis 1727 t4 = b ^ t3;
genesis 1728 t10 = (~t3) % 0x100000000;
genesis 1729 h = t2 ^ t4;
genesis 1730 t7 = a ^ t6;
genesis 1731 t14 = (~t7) % 0x100000000;
genesis 1732 t8 = c | t7;
genesis 1733 t11 = t3 ^ t7;
genesis 1734 g = t4 ^ t8;
genesis 1735 t12 = h & t11;
genesis 1736 f = t10 ^ t12;
genesis 1737 e = t12 ^ t14
genesis 1738 e = rotl32(e, 13)
genesis 1739 g = rotl32(g, 3)
genesis 1740 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1741 f ^= e ^ g
genesis 1742 h = rotl32(h, 7)
genesis 1743 f = rotl32(f, 1)
genesis 1744 e ^= f ^ h
genesis 1745 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1746 e = rotl32(e, 5)
genesis 1747 g = rotl32(g, 22)
genesis 1748 e ^= key[4 * 25 + 8]
genesis 1749 f ^= key[4 * 25 + 9]
genesis 1750 g ^= key[4 * 25 + 10]
genesis 1751 h ^= key[4 * 25 + 11]
genesis 1752 t1 = (~e) % 0x100000000;
genesis 1753 t2 = f ^ t1;
genesis 1754 t3 = e | t2;
genesis 1755 t4 = h | t2;
genesis 1756 t5 = g ^ t3;
genesis 1757 c = h ^ t5;
genesis 1758 t7 = f ^ t4;
genesis 1759 t8 = t2 ^ c;
genesis 1760 t9 = t5 & t7;
genesis 1761 d = t8 ^ t9;
genesis 1762 t11 = t5 ^ t7;
genesis 1763 b = d ^ t11;
genesis 1764 t13 = t8 & t11;
genesis 1765 a = t5 ^ t13
genesis 1766 a = rotl32(a, 13)
genesis 1767 c = rotl32(c, 3)
genesis 1768 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1769 b ^= a ^ c
genesis 1770 d = rotl32(d, 7)
genesis 1771 b = rotl32(b, 1)
genesis 1772 a ^= b ^ d
genesis 1773 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1774 a = rotl32(a, 5)
genesis 1775 c = rotl32(c, 22)
genesis 1776 a ^= key[4 * 26 + 8]
genesis 1777 b ^= key[4 * 26 + 9]
genesis 1778 c ^= key[4 * 26 + 10]
genesis 1779 d ^= key[4 * 26 + 11]
genesis 1780 t1 = (~a) % 0x100000000;
genesis 1781 t2 = b ^ d;
genesis 1782 t3 = c & t1;
genesis 1783 t13 = d | t1;
genesis 1784 e = t2 ^ t3;
genesis 1785 t5 = c ^ t1;
genesis 1786 t6 = c ^ e;
genesis 1787 t7 = b & t6;
genesis 1788 t10 = e | t5;
genesis 1789 h = t5 ^ t7;
genesis 1790 t9 = d | t7;
genesis 1791 t11 = t9 & t10;
genesis 1792 t14 = t2 ^ h;
genesis 1793 g = a ^ t11;
genesis 1794 t15 = g ^ t13;
genesis 1795 f = t14 ^ t15
genesis 1796 e = rotl32(e, 13)
genesis 1797 g = rotl32(g, 3)
genesis 1798 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1799 f ^= e ^ g
genesis 1800 h = rotl32(h, 7)
genesis 1801 f = rotl32(f, 1)
genesis 1802 e ^= f ^ h
genesis 1803 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1804 e = rotl32(e, 5)
genesis 1805 g = rotl32(g, 22)
genesis 1806 e ^= key[4 * 27 + 8]
genesis 1807 f ^= key[4 * 27 + 9]
genesis 1808 g ^= key[4 * 27 + 10]
genesis 1809 h ^= key[4 * 27 + 11]
genesis 1810 t1 = e ^ g;
genesis 1811 t2 = h ^ t1;
genesis 1812 t3 = e & t2;
genesis 1813 t4 = h ^ t3;
genesis 1814 t5 = f & t4;
genesis 1815 c = t2 ^ t5;
genesis 1816 t7 = e | c;
genesis 1817 t8 = f | h;
genesis 1818 t11 = e | h;
genesis 1819 t9 = t4 & t7;
genesis 1820 b = t8 ^ t9;
genesis 1821 t12 = f ^ t11;
genesis 1822 t13 = c ^ t9;
genesis 1823 t15 = t3 ^ t8;
genesis 1824 d = t12 ^ t13;
genesis 1825 t16 = g & t15;
genesis 1826 a = t12 ^ t16
genesis 1827 a = rotl32(a, 13)
genesis 1828 c = rotl32(c, 3)
genesis 1829 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1830 b ^= a ^ c
genesis 1831 d = rotl32(d, 7)
genesis 1832 b = rotl32(b, 1)
genesis 1833 a ^= b ^ d
genesis 1834 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1835 a = rotl32(a, 5)
genesis 1836 c = rotl32(c, 22)
genesis 1837 a ^= key[4 * 28 + 8]
genesis 1838 b ^= key[4 * 28 + 9]
genesis 1839 c ^= key[4 * 28 + 10]
genesis 1840 d ^= key[4 * 28 + 11]
genesis 1841 t1 = a ^ d;
genesis 1842 t2 = d & t1;
genesis 1843 t3 = c ^ t2;
genesis 1844 t4 = b | t3;
genesis 1845 h = t1 ^ t4;
genesis 1846 t6 = (~b) % 0x100000000;
genesis 1847 t7 = t1 | t6;
genesis 1848 e = t3 ^ t7;
genesis 1849 t9 = a & e;
genesis 1850 t10 = t1 ^ t6;
genesis 1851 t11 = t4 & t10;
genesis 1852 g = t9 ^ t11;
genesis 1853 t13 = a ^ t3;
genesis 1854 t14 = t10 & g;
genesis 1855 f = t13 ^ t14
genesis 1856 e = rotl32(e, 13)
genesis 1857 g = rotl32(g, 3)
genesis 1858 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1859 f ^= e ^ g
genesis 1860 h = rotl32(h, 7)
genesis 1861 f = rotl32(f, 1)
genesis 1862 e ^= f ^ h
genesis 1863 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1864 e = rotl32(e, 5)
genesis 1865 g = rotl32(g, 22)
genesis 1866 e ^= key[4 * 29 + 8]
genesis 1867 f ^= key[4 * 29 + 9]
genesis 1868 g ^= key[4 * 29 + 10]
genesis 1869 h ^= key[4 * 29 + 11]
genesis 1870 t1 = (~e) % 0x100000000;
genesis 1871 t2 = e ^ f;
genesis 1872 t3 = e ^ h;
genesis 1873 t4 = g ^ t1;
genesis 1874 t5 = t2 | t3;
genesis 1875 a = t4 ^ t5;
genesis 1876 t7 = h & a;
genesis 1877 t8 = t2 ^ a;
genesis 1878 t10 = t1 | a;
genesis 1879 b = t7 ^ t8;
genesis 1880 t11 = t2 | t7;
genesis 1881 t12 = t3 ^ t10;
genesis 1882 t14 = f ^ t7;
genesis 1883 c = t11 ^ t12;
genesis 1884 t15 = b & t12;
genesis 1885 d = t14 ^ t15
genesis 1886 a = rotl32(a, 13)
genesis 1887 c = rotl32(c, 3)
genesis 1888 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 1889 b ^= a ^ c
genesis 1890 d = rotl32(d, 7)
genesis 1891 b = rotl32(b, 1)
genesis 1892 a ^= b ^ d
genesis 1893 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 1894 a = rotl32(a, 5)
genesis 1895 c = rotl32(c, 22)
genesis 1896 a ^= key[4 * 30 + 8]
genesis 1897 b ^= key[4 * 30 + 9]
genesis 1898 c ^= key[4 * 30 + 10]
genesis 1899 d ^= key[4 * 30 + 11]
genesis 1900 t1 = (~a) % 0x100000000;
genesis 1901 t2 = a ^ d;
genesis 1902 t3 = b ^ t2;
genesis 1903 t4 = t1 | t2;
genesis 1904 t5 = c ^ t4;
genesis 1905 f = b ^ t5;
genesis 1906 t13 = (~t5) % 0x100000000;
genesis 1907 t7 = t2 | f;
genesis 1908 t8 = d ^ t7;
genesis 1909 t9 = t5 & t8;
genesis 1910 g = t3 ^ t9;
genesis 1911 t11 = t5 ^ t8;
genesis 1912 e = g ^ t11;
genesis 1913 t14 = t3 & t11;
genesis 1914 h = t13 ^ t14
genesis 1915 e = rotl32(e, 13)
genesis 1916 g = rotl32(g, 3)
genesis 1917 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 1918 f ^= e ^ g
genesis 1919 h = rotl32(h, 7)
genesis 1920 f = rotl32(f, 1)
genesis 1921 e ^= f ^ h
genesis 1922 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 1923 e = rotl32(e, 5)
genesis 1924 g = rotl32(g, 22)
genesis 1925 e ^= key[4 * 31 + 8]
genesis 1926 f ^= key[4 * 31 + 9]
genesis 1927 g ^= key[4 * 31 + 10]
genesis 1928 h ^= key[4 * 31 + 11]
genesis 1929 t1 = (~g) % 0x100000000;
genesis 1930 t2 = f ^ g;
genesis 1931 t3 = f | t1;
genesis 1932 t4 = h ^ t3;
genesis 1933 t5 = e & t4;
genesis 1934 t7 = e ^ h;
genesis 1935 d = t2 ^ t5;
genesis 1936 t8 = f ^ t5;
genesis 1937 t9 = t2 | t8;
genesis 1938 t11 = h & t3;
genesis 1939 b = t7 ^ t9;
genesis 1940 t12 = t5 ^ b;
genesis 1941 t15 = t1 | t4;
genesis 1942 t13 = d & t12;
genesis 1943 c = t11 ^ t13;
genesis 1944 t16 = t12 ^ c;
genesis 1945 a = t15 ^ t16
genesis 1946 a ^= key[4 * 32 + 8]
genesis 1947 b ^= key[4 * 32 + 9]
genesis 1948 c ^= key[4 * 32 + 10]
genesis 1949 d ^= key[4 * 32 + 11]
genesis 1950 if WORD_BIGENDIAN:
genesis 1951 a = byteswap32(a)
genesis 1952 b = byteswap32(b)
genesis 1953 c = byteswap32(c)
genesis 1954 d = byteswap32(d)
genesis 1955 in_blk[0] = a
genesis 1956 in_blk[1] = b
genesis 1957 in_blk[2] = c
genesis 1958 in_blk[3] = d
genesis 1959
genesis 1960 def decrypt(key, in_blk):
genesis 1961
genesis 1962 a = in_blk[0]
genesis 1963 b = in_blk[1]
genesis 1964 c = in_blk[2]
genesis 1965 d = in_blk[3]
genesis 1966 if WORD_BIGENDIAN:
genesis 1967 a = byteswap32(a)
genesis 1968 b = byteswap32(b)
genesis 1969 c = byteswap32(c)
genesis 1970 d = byteswap32(d)
genesis 1971 e = 0
genesis 1972 f = 0
genesis 1973 g = 0
genesis 1974 h = 0
genesis 1975 t1 = 0
genesis 1976 t2 = 0
genesis 1977 t3 = 0
genesis 1978 t4 = 0
genesis 1979 t5 = 0
genesis 1980 t6 = 0
genesis 1981 t7 = 0
genesis 1982 t8 = 0
genesis 1983 t9 = 0
genesis 1984 t10 = 0
genesis 1985 t11 = 0
genesis 1986 t12 = 0
genesis 1987 t13 = 0
genesis 1988 t14 = 0
genesis 1989 t15 = 0
genesis 1990 t16 = 0
genesis 1991 a ^= key[4 * 32 + 8]
genesis 1992 b ^= key[4 * 32 + 9]
genesis 1993 c ^= key[4 * 32 + 10]
genesis 1994 d ^= key[4 * 32 + 11]
genesis 1995 t1 = a & b;
genesis 1996 t2 = a | b;
genesis 1997 t3 = c | t1;
genesis 1998 t4 = d & t2;
genesis 1999 h = t3 ^ t4;
genesis 2000 t6 = (~d) % 0x100000000;
genesis 2001 t7 = b ^ t4;
genesis 2002 t8 = h ^ t6;
genesis 2003 t11 = c ^ t7;
genesis 2004 t9 = t7 | t8;
genesis 2005 f = a ^ t9;
genesis 2006 t12 = d | f;
genesis 2007 e = t11 ^ t12;
genesis 2008 t14 = a & h;
genesis 2009 t15 = t3 ^ f;
genesis 2010 t16 = e ^ t14;
genesis 2011 g = t15 ^ t16
genesis 2012 e ^= key[4 * 31 + 8]
genesis 2013 f ^= key[4 * 31 + 9]
genesis 2014 g ^= key[4 * 31 + 10]
genesis 2015 h ^= key[4 * 31 + 11]
genesis 2016 g = rotr32(g, 22)
genesis 2017 e = rotr32(e, 5)
genesis 2018 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2019 e ^= f ^ h
genesis 2020 h = rotr32(h, 7)
genesis 2021 f = rotr32(f, 1)
genesis 2022 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2023 f ^= e ^ g
genesis 2024 g = rotr32(g, 3)
genesis 2025 e = rotr32(e, 13)
genesis 2026 t1 = (~e) % 0x100000000;
genesis 2027 t2 = e ^ f;
genesis 2028 t3 = g ^ t2;
genesis 2029 t4 = g | t1;
genesis 2030 t5 = h ^ t4;
genesis 2031 t13 = h & t1;
genesis 2032 b = t3 ^ t5;
genesis 2033 t7 = t3 & t5;
genesis 2034 t8 = t2 ^ t7;
genesis 2035 t9 = f | t8;
genesis 2036 d = t5 ^ t9;
genesis 2037 t11 = f | d;
genesis 2038 a = t8 ^ t11;
genesis 2039 t14 = t3 ^ t11;
genesis 2040 c = t13 ^ t14
genesis 2041 a ^= key[4 * 30 + 8]
genesis 2042 b ^= key[4 * 30 + 9]
genesis 2043 c ^= key[4 * 30 + 10]
genesis 2044 d ^= key[4 * 30 + 11]
genesis 2045 c = rotr32(c, 22)
genesis 2046 a = rotr32(a, 5)
genesis 2047 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2048 a ^= b ^ d
genesis 2049 d = rotr32(d, 7)
genesis 2050 b = rotr32(b, 1)
genesis 2051 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2052 b ^= a ^ c
genesis 2053 c = rotr32(c, 3)
genesis 2054 a = rotr32(a, 13)
genesis 2055 t1 = (~c) % 0x100000000;
genesis 2056 t2 = b & t1;
genesis 2057 t3 = d ^ t2;
genesis 2058 t4 = a & t3;
genesis 2059 t5 = b ^ t1;
genesis 2060 h = t4 ^ t5;
genesis 2061 t7 = b | h;
genesis 2062 t8 = a & t7;
genesis 2063 f = t3 ^ t8;
genesis 2064 t10 = a | d;
genesis 2065 t11 = t1 ^ t7;
genesis 2066 e = t10 ^ t11;
genesis 2067 t13 = a ^ c;
genesis 2068 t14 = b & t10;
genesis 2069 t15 = t4 | t13;
genesis 2070 g = t14 ^ t15
genesis 2071 e ^= key[4 * 29 + 8]
genesis 2072 f ^= key[4 * 29 + 9]
genesis 2073 g ^= key[4 * 29 + 10]
genesis 2074 h ^= key[4 * 29 + 11]
genesis 2075 g = rotr32(g, 22)
genesis 2076 e = rotr32(e, 5)
genesis 2077 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2078 e ^= f ^ h
genesis 2079 h = rotr32(h, 7)
genesis 2080 f = rotr32(f, 1)
genesis 2081 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2082 f ^= e ^ g
genesis 2083 g = rotr32(g, 3)
genesis 2084 e = rotr32(e, 13)
genesis 2085 t1 = g ^ h;
genesis 2086 t2 = g | h;
genesis 2087 t3 = f ^ t2;
genesis 2088 t4 = e & t3;
genesis 2089 b = t1 ^ t4;
genesis 2090 t6 = e ^ h;
genesis 2091 t7 = f | h;
genesis 2092 t8 = t6 & t7;
genesis 2093 d = t3 ^ t8;
genesis 2094 t10 = (~e) % 0x100000000;
genesis 2095 t11 = g ^ d;
genesis 2096 t12 = t10 | t11;
genesis 2097 a = t3 ^ t12;
genesis 2098 t14 = g | t4;
genesis 2099 t15 = t7 ^ t14;
genesis 2100 t16 = d | t10;
genesis 2101 c = t15 ^ t16
genesis 2102 a ^= key[4 * 28 + 8]
genesis 2103 b ^= key[4 * 28 + 9]
genesis 2104 c ^= key[4 * 28 + 10]
genesis 2105 d ^= key[4 * 28 + 11]
genesis 2106 c = rotr32(c, 22)
genesis 2107 a = rotr32(a, 5)
genesis 2108 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2109 a ^= b ^ d
genesis 2110 d = rotr32(d, 7)
genesis 2111 b = rotr32(b, 1)
genesis 2112
genesis 2113 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2114 b ^= a ^ c
genesis 2115 c = rotr32(c, 3)
genesis 2116 a = rotr32(a, 13)
genesis 2117 t1 = b ^ c;
genesis 2118 t2 = b | c;
genesis 2119 t3 = a ^ c;
genesis 2120 t7 = a ^ d;
genesis 2121 t4 = t2 ^ t3;
genesis 2122 t5 = d | t4;
genesis 2123 t9 = t2 ^ t7;
genesis 2124 e = t1 ^ t5;
genesis 2125 t8 = t1 | t5;
genesis 2126 t11 = a & t4;
genesis 2127 g = t8 ^ t9;
genesis 2128 t12 = e | t9;
genesis 2129 f = t11 ^ t12;
genesis 2130 t14 = a & g;
genesis 2131 t15 = t2 ^ t14;
genesis 2132 t16 = e & t15;
genesis 2133 h = t4 ^ t16
genesis 2134 e ^= key[4 * 27 + 8]
genesis 2135 f ^= key[4 * 27 + 9]
genesis 2136 g ^= key[4 * 27 + 10]
genesis 2137 h ^= key[4 * 27 + 11]
genesis 2138 g = rotr32(g, 22)
genesis 2139 e = rotr32(e, 5)
genesis 2140 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2141 e ^= f ^ h
genesis 2142 h = rotr32(h, 7)
genesis 2143 f = rotr32(f, 1)
genesis 2144 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2145 f ^= e ^ g
genesis 2146 g = rotr32(g, 3)
genesis 2147 e = rotr32(e, 13)
genesis 2148 t1 = f ^ h;
genesis 2149 t2 = (~t1) % 0x100000000;
genesis 2150 t3 = e ^ g;
genesis 2151 t4 = g ^ t1;
genesis 2152 t7 = e | t2;
genesis 2153 t5 = f & t4;
genesis 2154 t8 = h ^ t7;
genesis 2155 t11 = (~t4) % 0x100000000;
genesis 2156 a = t3 ^ t5;
genesis 2157 t9 = t3 | t8;
genesis 2158 t14 = h & t11;
genesis 2159 d = t1 ^ t9;
genesis 2160 t12 = a | d;
genesis 2161 b = t11 ^ t12;
genesis 2162 t15 = t3 ^ t12;
genesis 2163 c = t14 ^ t15
genesis 2164 a ^= key[4 * 26 + 8]
genesis 2165 b ^= key[4 * 26 + 9]
genesis 2166 c ^= key[4 * 26 + 10]
genesis 2167 d ^= key[4 * 26 + 11]
genesis 2168 c = rotr32(c, 22)
genesis 2169 a = rotr32(a, 5)
genesis 2170 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2171 a ^= b ^ d
genesis 2172 d = rotr32(d, 7)
genesis 2173 b = rotr32(b, 1)
genesis 2174 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2175 b ^= a ^ c
genesis 2176 c = rotr32(c, 3)
genesis 2177 a = rotr32(a, 13)
genesis 2178 t1 = a ^ d;
genesis 2179 t2 = a & b;
genesis 2180 t3 = b ^ c;
genesis 2181 t4 = a ^ t3;
genesis 2182 t5 = b | d;
genesis 2183 t7 = c | t1;
genesis 2184 h = t4 ^ t5;
genesis 2185 t8 = b ^ t7;
genesis 2186 t11 = (~t2) % 0x100000000;
genesis 2187 t9 = t4 & t8;
genesis 2188 f = t1 ^ t9;
genesis 2189 t13 = t9 ^ t11;
genesis 2190 t12 = h & f;
genesis 2191 g = t12 ^ t13;
genesis 2192 t15 = a & d;
genesis 2193 t16 = c ^ t13;
genesis 2194 e = t15 ^ t16
genesis 2195 e ^= key[4 * 25 + 8]
genesis 2196 f ^= key[4 * 25 + 9]
genesis 2197 g ^= key[4 * 25 + 10]
genesis 2198 h ^= key[4 * 25 + 11]
genesis 2199 g = rotr32(g, 22)
genesis 2200 e = rotr32(e, 5)
genesis 2201 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2202 e ^= f ^ h
genesis 2203 h = rotr32(h, 7)
genesis 2204 f = rotr32(f, 1)
genesis 2205 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2206 f ^= e ^ g
genesis 2207 g = rotr32(g, 3)
genesis 2208 e = rotr32(e, 13)
genesis 2209 t1 = (~e) % 0x100000000
genesis 2210 t2 = e ^ f
genesis 2211 t3 = t1 | t2
genesis 2212 t4 = h ^ t3
genesis 2213 t7 = h & t2
genesis 2214 t5 = g ^ t4
genesis 2215 t8 = t1 ^ t7
genesis 2216 c = t2 ^ t5
genesis 2217 t11 = e & t4
genesis 2218 t9 = c & t8
genesis 2219 t14 = t5 ^ t8
genesis 2220 b = t4 ^ t9
genesis 2221 t12 = t5 | b
genesis 2222 d = t11 ^ t12
genesis 2223 a = d ^ t14
genesis 2224 a ^= key[4 * 24 + 8]
genesis 2225 b ^= key[4 * 24 + 9]
genesis 2226 c ^= key[4 * 24 + 10]
genesis 2227 d ^= key[4 * 24 + 11]
genesis 2228 c = rotr32(c, 22)
genesis 2229 a = rotr32(a, 5)
genesis 2230 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2231 a ^= b ^ d
genesis 2232 d = rotr32(d, 7)
genesis 2233 b = rotr32(b, 1)
genesis 2234 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2235 b ^= a ^ c
genesis 2236 c = rotr32(c, 3)
genesis 2237 a = rotr32(a, 13)
genesis 2238 t1 = a & b;
genesis 2239 t2 = a | b;
genesis 2240 t3 = c | t1;
genesis 2241 t4 = d & t2;
genesis 2242 h = t3 ^ t4;
genesis 2243 t6 = (~d) % 0x100000000;
genesis 2244 t7 = b ^ t4;
genesis 2245 t8 = h ^ t6;
genesis 2246 t11 = c ^ t7;
genesis 2247 t9 = t7 | t8;
genesis 2248 f = a ^ t9;
genesis 2249 t12 = d | f;
genesis 2250 e = t11 ^ t12;
genesis 2251 t14 = a & h;
genesis 2252 t15 = t3 ^ f;
genesis 2253 t16 = e ^ t14;
genesis 2254 g = t15 ^ t16
genesis 2255 e ^= key[4 * 23 + 8]
genesis 2256 f ^= key[4 * 23 + 9]
genesis 2257 g ^= key[4 * 23 + 10]
genesis 2258 h ^= key[4 * 23 + 11]
genesis 2259 g = rotr32(g, 22)
genesis 2260 e = rotr32(e, 5)
genesis 2261 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2262 e ^= f ^ h
genesis 2263 h = rotr32(h, 7)
genesis 2264 f = rotr32(f, 1)
genesis 2265 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2266 f ^= e ^ g
genesis 2267 g = rotr32(g, 3)
genesis 2268 e = rotr32(e, 13)
genesis 2269 t1 = (~e) % 0x100000000;
genesis 2270 t2 = e ^ f;
genesis 2271 t3 = g ^ t2;
genesis 2272 t4 = g | t1;
genesis 2273 t5 = h ^ t4;
genesis 2274 t13 = h & t1;
genesis 2275 b = t3 ^ t5;
genesis 2276 t7 = t3 & t5;
genesis 2277 t8 = t2 ^ t7;
genesis 2278 t9 = f | t8;
genesis 2279 d = t5 ^ t9;
genesis 2280 t11 = f | d;
genesis 2281 a = t8 ^ t11;
genesis 2282 t14 = t3 ^ t11;
genesis 2283 c = t13 ^ t14
genesis 2284 a ^= key[4 * 22 + 8]
genesis 2285 b ^= key[4 * 22 + 9]
genesis 2286 c ^= key[4 * 22 + 10]
genesis 2287 d ^= key[4 * 22 + 11]
genesis 2288 c = rotr32(c, 22)
genesis 2289 a = rotr32(a, 5)
genesis 2290 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2291 a ^= b ^ d
genesis 2292 d = rotr32(d, 7)
genesis 2293 b = rotr32(b, 1)
genesis 2294 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2295 b ^= a ^ c
genesis 2296 c = rotr32(c, 3)
genesis 2297 a = rotr32(a, 13)
genesis 2298 t1 = (~c) % 0x100000000;
genesis 2299 t2 = b & t1;
genesis 2300 t3 = d ^ t2;
genesis 2301 t4 = a & t3;
genesis 2302 t5 = b ^ t1;
genesis 2303 h = t4 ^ t5;
genesis 2304 t7 = b | h;
genesis 2305 t8 = a & t7;
genesis 2306 f = t3 ^ t8;
genesis 2307 t10 = a | d;
genesis 2308 t11 = t1 ^ t7;
genesis 2309 e = t10 ^ t11;
genesis 2310 t13 = a ^ c;
genesis 2311 t14 = b & t10;
genesis 2312 t15 = t4 | t13;
genesis 2313 g = t14 ^ t15
genesis 2314 e ^= key[4 * 21 + 8]
genesis 2315 f ^= key[4 * 21 + 9]
genesis 2316 g ^= key[4 * 21 + 10]
genesis 2317 h ^= key[4 * 21 + 11]
genesis 2318 g = rotr32(g, 22)
genesis 2319 e = rotr32(e, 5)
genesis 2320 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2321 e ^= f ^ h
genesis 2322 h = rotr32(h, 7)
genesis 2323 f = rotr32(f, 1)
genesis 2324 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2325 f ^= e ^ g
genesis 2326 g = rotr32(g, 3)
genesis 2327 e = rotr32(e, 13)
genesis 2328 t1 = g ^ h;
genesis 2329 t2 = g | h;
genesis 2330 t3 = f ^ t2;
genesis 2331 t4 = e & t3;
genesis 2332 b = t1 ^ t4;
genesis 2333 t6 = e ^ h;
genesis 2334 t7 = f | h;
genesis 2335 t8 = t6 & t7;
genesis 2336 d = t3 ^ t8;
genesis 2337 t10 = (~e) % 0x100000000;
genesis 2338 t11 = g ^ d;
genesis 2339 t12 = t10 | t11;
genesis 2340 a = t3 ^ t12;
genesis 2341 t14 = g | t4;
genesis 2342 t15 = t7 ^ t14;
genesis 2343 t16 = d | t10;
genesis 2344 c = t15 ^ t16
genesis 2345 a ^= key[4 * 20 + 8]
genesis 2346 b ^= key[4 * 20 + 9]
genesis 2347 c ^= key[4 * 20 + 10]
genesis 2348 d ^= key[4 * 20 + 11]
genesis 2349 c = rotr32(c, 22)
genesis 2350 a = rotr32(a, 5)
genesis 2351 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2352 a ^= b ^ d
genesis 2353 d = rotr32(d, 7)
genesis 2354 b = rotr32(b, 1)
genesis 2355 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2356 b ^= a ^ c
genesis 2357 c = rotr32(c, 3)
genesis 2358 a = rotr32(a, 13)
genesis 2359 t1 = b ^ c;
genesis 2360 t2 = b | c;
genesis 2361 t3 = a ^ c;
genesis 2362 t7 = a ^ d;
genesis 2363 t4 = t2 ^ t3;
genesis 2364 t5 = d | t4;
genesis 2365 t9 = t2 ^ t7;
genesis 2366 e = t1 ^ t5;
genesis 2367 t8 = t1 | t5;
genesis 2368 t11 = a & t4;
genesis 2369 g = t8 ^ t9;
genesis 2370 t12 = e | t9;
genesis 2371 f = t11 ^ t12;
genesis 2372 t14 = a & g;
genesis 2373 t15 = t2 ^ t14;
genesis 2374 t16 = e & t15;
genesis 2375 h = t4 ^ t16
genesis 2376 e ^= key[4 * 19 + 8]
genesis 2377 f ^= key[4 * 19 + 9]
genesis 2378 g ^= key[4 * 19 + 10]
genesis 2379 h ^= key[4 * 19 + 11]
genesis 2380 g = rotr32(g, 22)
genesis 2381 e = rotr32(e, 5)
genesis 2382 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2383 e ^= f ^ h
genesis 2384 h = rotr32(h, 7)
genesis 2385 f = rotr32(f, 1)
genesis 2386 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2387 f ^= e ^ g
genesis 2388 g = rotr32(g, 3)
genesis 2389 e = rotr32(e, 13)
genesis 2390 t1 = f ^ h;
genesis 2391 t2 = (~t1) % 0x100000000;
genesis 2392 t3 = e ^ g;
genesis 2393 t4 = g ^ t1;
genesis 2394 t7 = e | t2;
genesis 2395 t5 = f & t4;
genesis 2396 t8 = h ^ t7;
genesis 2397 t11 = (~t4) % 0x100000000;
genesis 2398 a = t3 ^ t5;
genesis 2399 t9 = t3 | t8;
genesis 2400 t14 = h & t11;
genesis 2401 d = t1 ^ t9;
genesis 2402 t12 = a | d;
genesis 2403 b = t11 ^ t12;
genesis 2404 t15 = t3 ^ t12;
genesis 2405 c = t14 ^ t15
genesis 2406 a ^= key[4 * 18 + 8]
genesis 2407 b ^= key[4 * 18 + 9]
genesis 2408 c ^= key[4 * 18 + 10]
genesis 2409 d ^= key[4 * 18 + 11]
genesis 2410 c = rotr32(c, 22)
genesis 2411 a = rotr32(a, 5)
genesis 2412 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2413 a ^= b ^ d
genesis 2414 d = rotr32(d, 7)
genesis 2415 b = rotr32(b, 1)
genesis 2416 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2417 b ^= a ^ c
genesis 2418 c = rotr32(c, 3)
genesis 2419 a = rotr32(a, 13)
genesis 2420 t1 = a ^ d;
genesis 2421 t2 = a & b;
genesis 2422 t3 = b ^ c;
genesis 2423 t4 = a ^ t3;
genesis 2424 t5 = b | d;
genesis 2425 t7 = c | t1;
genesis 2426 h = t4 ^ t5;
genesis 2427 t8 = b ^ t7;
genesis 2428 t11 = (~t2) % 0x100000000;
genesis 2429 t9 = t4 & t8;
genesis 2430 f = t1 ^ t9;
genesis 2431 t13 = t9 ^ t11;
genesis 2432 t12 = h & f;
genesis 2433 g = t12 ^ t13;
genesis 2434 t15 = a & d;
genesis 2435 t16 = c ^ t13;
genesis 2436 e = t15 ^ t16
genesis 2437 e ^= key[4 * 17 + 8]
genesis 2438 f ^= key[4 * 17 + 9]
genesis 2439 g ^= key[4 * 17 + 10]
genesis 2440 h ^= key[4 * 17 + 11]
genesis 2441 g = rotr32(g, 22)
genesis 2442 e = rotr32(e, 5)
genesis 2443 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2444 e ^= f ^ h
genesis 2445 h = rotr32(h, 7)
genesis 2446 f = rotr32(f, 1)
genesis 2447 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2448 f ^= e ^ g
genesis 2449 g = rotr32(g, 3)
genesis 2450 e = rotr32(e, 13)
genesis 2451 t1 = (~e) % 0x100000000
genesis 2452 t2 = e ^ f
genesis 2453 t3 = t1 | t2
genesis 2454 t4 = h ^ t3
genesis 2455 t7 = h & t2
genesis 2456 t5 = g ^ t4
genesis 2457 t8 = t1 ^ t7
genesis 2458 c = t2 ^ t5
genesis 2459 t11 = e & t4
genesis 2460 t9 = c & t8
genesis 2461 t14 = t5 ^ t8
genesis 2462 b = t4 ^ t9
genesis 2463 t12 = t5 | b
genesis 2464 d = t11 ^ t12
genesis 2465 a = d ^ t14
genesis 2466 a ^= key[4 * 16 + 8]
genesis 2467 b ^= key[4 * 16 + 9]
genesis 2468 c ^= key[4 * 16 + 10]
genesis 2469 d ^= key[4 * 16 + 11]
genesis 2470 c = rotr32(c, 22)
genesis 2471 a = rotr32(a, 5)
genesis 2472 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2473 a ^= b ^ d
genesis 2474 d = rotr32(d, 7)
genesis 2475 b = rotr32(b, 1)
genesis 2476 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2477 b ^= a ^ c
genesis 2478 c = rotr32(c, 3)
genesis 2479 a = rotr32(a, 13)
genesis 2480 t1 = a & b;
genesis 2481 t2 = a | b;
genesis 2482 t3 = c | t1;
genesis 2483 t4 = d & t2;
genesis 2484 h = t3 ^ t4;
genesis 2485 t6 = (~d) % 0x100000000;
genesis 2486 t7 = b ^ t4;
genesis 2487 t8 = h ^ t6;
genesis 2488 t11 = c ^ t7;
genesis 2489 t9 = t7 | t8;
genesis 2490 f = a ^ t9;
genesis 2491 t12 = d | f;
genesis 2492 e = t11 ^ t12;
genesis 2493 t14 = a & h;
genesis 2494 t15 = t3 ^ f;
genesis 2495 t16 = e ^ t14;
genesis 2496 g = t15 ^ t16
genesis 2497 e ^= key[4 * 15 + 8]
genesis 2498 f ^= key[4 * 15 + 9]
genesis 2499 g ^= key[4 * 15 + 10]
genesis 2500 h ^= key[4 * 15 + 11]
genesis 2501 g = rotr32(g, 22)
genesis 2502 e = rotr32(e, 5)
genesis 2503 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2504 e ^= f ^ h
genesis 2505 h = rotr32(h, 7)
genesis 2506 f = rotr32(f, 1)
genesis 2507 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2508 f ^= e ^ g
genesis 2509 g = rotr32(g, 3)
genesis 2510 e = rotr32(e, 13)
genesis 2511 t1 = (~e) % 0x100000000;
genesis 2512 t2 = e ^ f;
genesis 2513 t3 = g ^ t2;
genesis 2514 t4 = g | t1;
genesis 2515 t5 = h ^ t4;
genesis 2516 t13 = h & t1;
genesis 2517 b = t3 ^ t5;
genesis 2518 t7 = t3 & t5;
genesis 2519 t8 = t2 ^ t7;
genesis 2520 t9 = f | t8;
genesis 2521 d = t5 ^ t9;
genesis 2522 t11 = f | d;
genesis 2523 a = t8 ^ t11;
genesis 2524 t14 = t3 ^ t11;
genesis 2525 c = t13 ^ t14
genesis 2526 a ^= key[4 * 14 + 8]
genesis 2527 b ^= key[4 * 14 + 9]
genesis 2528 c ^= key[4 * 14 + 10]
genesis 2529 d ^= key[4 * 14 + 11]
genesis 2530 c = rotr32(c, 22)
genesis 2531 a = rotr32(a, 5)
genesis 2532 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2533 a ^= b ^ d
genesis 2534 d = rotr32(d, 7)
genesis 2535 b = rotr32(b, 1)
genesis 2536 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2537 b ^= a ^ c
genesis 2538 c = rotr32(c, 3)
genesis 2539 a = rotr32(a, 13)
genesis 2540 t1 = (~c) % 0x100000000;
genesis 2541 t2 = b & t1;
genesis 2542 t3 = d ^ t2;
genesis 2543 t4 = a & t3;
genesis 2544 t5 = b ^ t1;
genesis 2545 h = t4 ^ t5;
genesis 2546 t7 = b | h;
genesis 2547 t8 = a & t7;
genesis 2548 f = t3 ^ t8;
genesis 2549 t10 = a | d;
genesis 2550 t11 = t1 ^ t7;
genesis 2551 e = t10 ^ t11;
genesis 2552 t13 = a ^ c;
genesis 2553 t14 = b & t10;
genesis 2554 t15 = t4 | t13;
genesis 2555 g = t14 ^ t15
genesis 2556 e ^= key[4 * 13 + 8]
genesis 2557 f ^= key[4 * 13 + 9]
genesis 2558 g ^= key[4 * 13 + 10]
genesis 2559 h ^= key[4 * 13 + 11]
genesis 2560 g = rotr32(g, 22)
genesis 2561 e = rotr32(e, 5)
genesis 2562 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2563 e ^= f ^ h
genesis 2564 h = rotr32(h, 7)
genesis 2565 f = rotr32(f, 1)
genesis 2566 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2567 f ^= e ^ g
genesis 2568 g = rotr32(g, 3)
genesis 2569 e = rotr32(e, 13)
genesis 2570 t1 = g ^ h;
genesis 2571 t2 = g | h;
genesis 2572 t3 = f ^ t2;
genesis 2573 t4 = e & t3;
genesis 2574 b = t1 ^ t4;
genesis 2575 t6 = e ^ h;
genesis 2576 t7 = f | h;
genesis 2577 t8 = t6 & t7;
genesis 2578 d = t3 ^ t8;
genesis 2579 t10 = (~e) % 0x100000000;
genesis 2580 t11 = g ^ d;
genesis 2581 t12 = t10 | t11;
genesis 2582 a = t3 ^ t12;
genesis 2583 t14 = g | t4;
genesis 2584 t15 = t7 ^ t14;
genesis 2585 t16 = d | t10;
genesis 2586 c = t15 ^ t16
genesis 2587 a ^= key[4 * 12 + 8]
genesis 2588 b ^= key[4 * 12 + 9]
genesis 2589 c ^= key[4 * 12 + 10]
genesis 2590 d ^= key[4 * 12 + 11]
genesis 2591 c = rotr32(c, 22)
genesis 2592 a = rotr32(a, 5)
genesis 2593 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2594 a ^= b ^ d
genesis 2595 d = rotr32(d, 7)
genesis 2596 b = rotr32(b, 1)
genesis 2597 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2598 b ^= a ^ c
genesis 2599 c = rotr32(c, 3)
genesis 2600 a = rotr32(a, 13)
genesis 2601 t1 = b ^ c;
genesis 2602 t2 = b | c;
genesis 2603 t3 = a ^ c;
genesis 2604 t7 = a ^ d;
genesis 2605 t4 = t2 ^ t3;
genesis 2606 t5 = d | t4;
genesis 2607 t9 = t2 ^ t7;
genesis 2608 e = t1 ^ t5;
genesis 2609 t8 = t1 | t5;
genesis 2610 t11 = a & t4;
genesis 2611 g = t8 ^ t9;
genesis 2612 t12 = e | t9;
genesis 2613 f = t11 ^ t12;
genesis 2614 t14 = a & g;
genesis 2615 t15 = t2 ^ t14;
genesis 2616 t16 = e & t15;
genesis 2617 h = t4 ^ t16
genesis 2618 e ^= key[4 * 11 + 8]
genesis 2619 f ^= key[4 * 11 + 9]
genesis 2620 g ^= key[4 * 11 + 10]
genesis 2621 h ^= key[4 * 11 + 11]
genesis 2622 g = rotr32(g, 22)
genesis 2623 e = rotr32(e, 5)
genesis 2624 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2625 e ^= f ^ h
genesis 2626 h = rotr32(h, 7)
genesis 2627 f = rotr32(f, 1)
genesis 2628 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2629 f ^= e ^ g
genesis 2630 g = rotr32(g, 3)
genesis 2631 e = rotr32(e, 13)
genesis 2632 t1 = f ^ h;
genesis 2633 t2 = (~t1) % 0x100000000;
genesis 2634 t3 = e ^ g;
genesis 2635 t4 = g ^ t1;
genesis 2636 t7 = e | t2;
genesis 2637 t5 = f & t4;
genesis 2638 t8 = h ^ t7;
genesis 2639 t11 = (~t4) % 0x100000000;
genesis 2640 a = t3 ^ t5;
genesis 2641 t9 = t3 | t8;
genesis 2642 t14 = h & t11;
genesis 2643 d = t1 ^ t9;
genesis 2644 t12 = a | d;
genesis 2645 b = t11 ^ t12;
genesis 2646 t15 = t3 ^ t12;
genesis 2647 c = t14 ^ t15
genesis 2648 a ^= key[4 * 10 + 8]
genesis 2649 b ^= key[4 * 10 + 9]
genesis 2650 c ^= key[4 * 10 + 10]
genesis 2651 d ^= key[4 * 10 + 11]
genesis 2652 c = rotr32(c, 22)
genesis 2653 a = rotr32(a, 5)
genesis 2654 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2655 a ^= b ^ d
genesis 2656 d = rotr32(d, 7)
genesis 2657 b = rotr32(b, 1)
genesis 2658 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2659 b ^= a ^ c
genesis 2660 c = rotr32(c, 3)
genesis 2661 a = rotr32(a, 13)
genesis 2662 t1 = a ^ d;
genesis 2663 t2 = a & b;
genesis 2664 t3 = b ^ c;
genesis 2665 t4 = a ^ t3;
genesis 2666 t5 = b | d;
genesis 2667 t7 = c | t1;
genesis 2668 h = t4 ^ t5;
genesis 2669 t8 = b ^ t7;
genesis 2670 t11 = (~t2) % 0x100000000;
genesis 2671 t9 = t4 & t8;
genesis 2672 f = t1 ^ t9;
genesis 2673 t13 = t9 ^ t11;
genesis 2674 t12 = h & f;
genesis 2675 g = t12 ^ t13;
genesis 2676 t15 = a & d;
genesis 2677 t16 = c ^ t13;
genesis 2678 e = t15 ^ t16
genesis 2679 e ^= key[4 * 9 + 8]
genesis 2680 f ^= key[4 * 9 + 9]
genesis 2681 g ^= key[4 * 9 + 10]
genesis 2682 h ^= key[4 * 9 + 11]
genesis 2683 g = rotr32(g, 22)
genesis 2684 e = rotr32(e, 5)
genesis 2685 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2686 e ^= f ^ h
genesis 2687 h = rotr32(h, 7)
genesis 2688 f = rotr32(f, 1)
genesis 2689 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2690 f ^= e ^ g
genesis 2691 g = rotr32(g, 3)
genesis 2692 e = rotr32(e, 13)
genesis 2693 t1 = (~e) % 0x100000000
genesis 2694 t2 = e ^ f
genesis 2695 t3 = t1 | t2
genesis 2696 t4 = h ^ t3
genesis 2697 t7 = h & t2
genesis 2698 t5 = g ^ t4
genesis 2699 t8 = t1 ^ t7
genesis 2700 c = t2 ^ t5
genesis 2701 t11 = e & t4
genesis 2702 t9 = c & t8
genesis 2703 t14 = t5 ^ t8
genesis 2704 b = t4 ^ t9
genesis 2705 t12 = t5 | b
genesis 2706 d = t11 ^ t12
genesis 2707 a = d ^ t14
genesis 2708 a ^= key[4 * 8 + 8]
genesis 2709 b ^= key[4 * 8 + 9]
genesis 2710 c ^= key[4 * 8 + 10]
genesis 2711 d ^= key[4 * 8 + 11]
genesis 2712 c = rotr32(c, 22)
genesis 2713 a = rotr32(a, 5)
genesis 2714 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2715 a ^= b ^ d
genesis 2716 d = rotr32(d, 7)
genesis 2717 b = rotr32(b, 1)
genesis 2718 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2719 b ^= a ^ c
genesis 2720 c = rotr32(c, 3)
genesis 2721 a = rotr32(a, 13)
genesis 2722 t1 = a & b;
genesis 2723 t2 = a | b;
genesis 2724 t3 = c | t1;
genesis 2725 t4 = d & t2;
genesis 2726 h = t3 ^ t4;
genesis 2727 t6 = (~d) % 0x100000000;
genesis 2728 t7 = b ^ t4;
genesis 2729 t8 = h ^ t6;
genesis 2730 t11 = c ^ t7;
genesis 2731 t9 = t7 | t8;
genesis 2732 f = a ^ t9;
genesis 2733 t12 = d | f;
genesis 2734 e = t11 ^ t12;
genesis 2735 t14 = a & h;
genesis 2736 t15 = t3 ^ f;
genesis 2737 t16 = e ^ t14;
genesis 2738 g = t15 ^ t16
genesis 2739 e ^= key[4 * 7 + 8]
genesis 2740 f ^= key[4 * 7 + 9]
genesis 2741 g ^= key[4 * 7 + 10]
genesis 2742 h ^= key[4 * 7 + 11]
genesis 2743 g = rotr32(g, 22)
genesis 2744 e = rotr32(e, 5)
genesis 2745 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2746 e ^= f ^ h
genesis 2747 h = rotr32(h, 7)
genesis 2748 f = rotr32(f, 1)
genesis 2749 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2750 f ^= e ^ g
genesis 2751 g = rotr32(g, 3)
genesis 2752 e = rotr32(e, 13)
genesis 2753 t1 = (~e) % 0x100000000;
genesis 2754 t2 = e ^ f;
genesis 2755 t3 = g ^ t2;
genesis 2756 t4 = g | t1;
genesis 2757 t5 = h ^ t4;
genesis 2758 t13 = h & t1;
genesis 2759 b = t3 ^ t5;
genesis 2760 t7 = t3 & t5;
genesis 2761 t8 = t2 ^ t7;
genesis 2762 t9 = f | t8;
genesis 2763 d = t5 ^ t9;
genesis 2764 t11 = f | d;
genesis 2765 a = t8 ^ t11;
genesis 2766 t14 = t3 ^ t11;
genesis 2767 c = t13 ^ t14
genesis 2768 a ^= key[4 * 6 + 8]
genesis 2769 b ^= key[4 * 6 + 9]
genesis 2770 c ^= key[4 * 6 + 10]
genesis 2771 d ^= key[4 * 6 + 11]
genesis 2772 c = rotr32(c, 22)
genesis 2773 a = rotr32(a, 5)
genesis 2774 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2775 a ^= b ^ d
genesis 2776 d = rotr32(d, 7)
genesis 2777 b = rotr32(b, 1)
genesis 2778 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2779 b ^= a ^ c
genesis 2780 c = rotr32(c, 3)
genesis 2781 a = rotr32(a, 13)
genesis 2782 t1 = (~c) % 0x100000000;
genesis 2783 t2 = b & t1;
genesis 2784 t3 = d ^ t2;
genesis 2785 t4 = a & t3;
genesis 2786 t5 = b ^ t1;
genesis 2787 h = t4 ^ t5;
genesis 2788 t7 = b | h;
genesis 2789 t8 = a & t7;
genesis 2790 f = t3 ^ t8;
genesis 2791 t10 = a | d;
genesis 2792 t11 = t1 ^ t7;
genesis 2793 e = t10 ^ t11;
genesis 2794 t13 = a ^ c;
genesis 2795 t14 = b & t10;
genesis 2796 t15 = t4 | t13;
genesis 2797 g = t14 ^ t15
genesis 2798 e ^= key[4 * 5 + 8]
genesis 2799 f ^= key[4 * 5 + 9]
genesis 2800 g ^= key[4 * 5 + 10]
genesis 2801 h ^= key[4 * 5 + 11]
genesis 2802 g = rotr32(g, 22)
genesis 2803 e = rotr32(e, 5)
genesis 2804 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2805 e ^= f ^ h
genesis 2806 h = rotr32(h, 7)
genesis 2807 f = rotr32(f, 1)
genesis 2808 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2809 f ^= e ^ g
genesis 2810 g = rotr32(g, 3)
genesis 2811 e = rotr32(e, 13)
genesis 2812 t1 = g ^ h;
genesis 2813 t2 = g | h;
genesis 2814 t3 = f ^ t2;
genesis 2815 t4 = e & t3;
genesis 2816 b = t1 ^ t4;
genesis 2817 t6 = e ^ h;
genesis 2818 t7 = f | h;
genesis 2819 t8 = t6 & t7;
genesis 2820 d = t3 ^ t8;
genesis 2821 t10 = (~e) % 0x100000000;
genesis 2822 t11 = g ^ d;
genesis 2823 t12 = t10 | t11;
genesis 2824 a = t3 ^ t12;
genesis 2825 t14 = g | t4;
genesis 2826 t15 = t7 ^ t14;
genesis 2827 t16 = d | t10;
genesis 2828 c = t15 ^ t16
genesis 2829 a ^= key[4 * 4 + 8]
genesis 2830 b ^= key[4 * 4 + 9]
genesis 2831 c ^= key[4 * 4 + 10]
genesis 2832 d ^= key[4 * 4 + 11]
genesis 2833 c = rotr32(c, 22)
genesis 2834 a = rotr32(a, 5)
genesis 2835 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2836 a ^= b ^ d
genesis 2837 d = rotr32(d, 7)
genesis 2838 b = rotr32(b, 1)
genesis 2839 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2840 b ^= a ^ c
genesis 2841 c = rotr32(c, 3)
genesis 2842 a = rotr32(a, 13)
genesis 2843 t1 = b ^ c;
genesis 2844 t2 = b | c;
genesis 2845 t3 = a ^ c;
genesis 2846 t7 = a ^ d;
genesis 2847 t4 = t2 ^ t3;
genesis 2848 t5 = d | t4;
genesis 2849 t9 = t2 ^ t7;
genesis 2850 e = t1 ^ t5;
genesis 2851 t8 = t1 | t5;
genesis 2852 t11 = a & t4;
genesis 2853 g = t8 ^ t9;
genesis 2854 t12 = e | t9;
genesis 2855 f = t11 ^ t12;
genesis 2856 t14 = a & g;
genesis 2857 t15 = t2 ^ t14;
genesis 2858 t16 = e & t15;
genesis 2859 h = t4 ^ t16
genesis 2860 e ^= key[4 * 3 + 8]
genesis 2861 f ^= key[4 * 3 + 9]
genesis 2862 g ^= key[4 * 3 + 10]
genesis 2863 h ^= key[4 * 3 + 11]
genesis 2864 g = rotr32(g, 22)
genesis 2865 e = rotr32(e, 5)
genesis 2866 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2867 e ^= f ^ h
genesis 2868 h = rotr32(h, 7)
genesis 2869 f = rotr32(f, 1)
genesis 2870 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2871 f ^= e ^ g
genesis 2872 g = rotr32(g, 3)
genesis 2873 e = rotr32(e, 13)
genesis 2874 t1 = f ^ h;
genesis 2875 t2 = (~t1) % 0x100000000;
genesis 2876 t3 = e ^ g;
genesis 2877 t4 = g ^ t1;
genesis 2878 t7 = e | t2;
genesis 2879 t5 = f & t4;
genesis 2880 t8 = h ^ t7;
genesis 2881 t11 = (~t4) % 0x100000000;
genesis 2882 a = t3 ^ t5;
genesis 2883 t9 = t3 | t8;
genesis 2884 t14 = h & t11;
genesis 2885 d = t1 ^ t9;
genesis 2886 t12 = a | d;
genesis 2887 b = t11 ^ t12;
genesis 2888 t15 = t3 ^ t12;
genesis 2889 c = t14 ^ t15
genesis 2890 a ^= key[4 * 2 + 8]
genesis 2891 b ^= key[4 * 2 + 9]
genesis 2892 c ^= key[4 * 2 + 10]
genesis 2893 d ^= key[4 * 2 + 11]
genesis 2894 c = rotr32(c, 22)
genesis 2895 a = rotr32(a, 5)
genesis 2896 c ^= d ^ ((b << 7) & 0xFFFFFFFF)
genesis 2897 a ^= b ^ d
genesis 2898 d = rotr32(d, 7)
genesis 2899 b = rotr32(b, 1)
genesis 2900 d ^= c ^ ((a << 3) & 0xFFFFFFFF)
genesis 2901 b ^= a ^ c
genesis 2902 c = rotr32(c, 3)
genesis 2903 a = rotr32(a, 13)
genesis 2904 t1 = a ^ d;
genesis 2905 t2 = a & b;
genesis 2906 t3 = b ^ c;
genesis 2907 t4 = a ^ t3;
genesis 2908 t5 = b | d;
genesis 2909 t7 = c | t1;
genesis 2910 h = t4 ^ t5;
genesis 2911 t8 = b ^ t7;
genesis 2912 t11 = (~t2) % 0x100000000;
genesis 2913 t9 = t4 & t8;
genesis 2914 f = t1 ^ t9;
genesis 2915 t13 = t9 ^ t11;
genesis 2916 t12 = h & f;
genesis 2917 g = t12 ^ t13;
genesis 2918 t15 = a & d;
genesis 2919 t16 = c ^ t13;
genesis 2920 e = t15 ^ t16
genesis 2921 e ^= key[4 * 1 + 8]
genesis 2922 f ^= key[4 * 1 + 9]
genesis 2923 g ^= key[4 * 1 + 10]
genesis 2924 h ^= key[4 * 1 + 11]
genesis 2925 g = rotr32(g, 22)
genesis 2926 e = rotr32(e, 5)
genesis 2927 g ^= h ^ ((f << 7) & 0xFFFFFFFF)
genesis 2928 e ^= f ^ h
genesis 2929 h = rotr32(h, 7)
genesis 2930 f = rotr32(f, 1)
genesis 2931 h ^= g ^ ((e << 3) & 0xFFFFFFFF)
genesis 2932 f ^= e ^ g
genesis 2933 g = rotr32(g, 3)
genesis 2934 e = rotr32(e, 13)
genesis 2935 t1 = (~e) % 0x100000000
genesis 2936 t2 = e ^ f
genesis 2937 t3 = t1 | t2
genesis 2938 t4 = h ^ t3
genesis 2939 t7 = h & t2
genesis 2940 t5 = g ^ t4
genesis 2941 t8 = t1 ^ t7
genesis 2942 c = t2 ^ t5
genesis 2943 t11 = e & t4
genesis 2944 t9 = c & t8
genesis 2945 t14 = t5 ^ t8
genesis 2946 b = t4 ^ t9
genesis 2947 t12 = t5 | b
genesis 2948 d = t11 ^ t12
genesis 2949 a = d ^ t14
genesis 2950 a ^= key[4 * 0 + 8]
genesis 2951 b ^= key[4 * 0 + 9]
genesis 2952 c ^= key[4 * 0 + 10]
genesis 2953 d ^= key[4 * 0 + 11]
genesis 2954 if WORD_BIGENDIAN:
genesis 2955 a = byteswap32(a)
genesis 2956 b = byteswap32(b)
genesis 2957 c = byteswap32(c)
genesis 2958 d = byteswap32(d)
genesis 2959 in_blk[0] = a
genesis 2960 in_blk[1] = b
genesis 2961 in_blk[2] = c
genesis 2962 in_blk[3] = d
genesis 2963
genesis 2964 __testkey = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
genesis 2965 __testdat = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
genesis 2966 assert '\xde&\x9f\xf83\xe42\xb8[.\x88\xd2p\x1c\xe7\\' == Serpent(__testkey).encrypt(__testdat)
genesis 2967 assert __testdat == Serpent(__testkey).decrypt('\xde&\x9f\xf83\xe42\xb8[.\x88\xd2p\x1c\xe7\\')
genesis 2968
genesis 2969
genesis 2970 def serpent_cbc_encrypt(key, data, iv='\x00'*16):
genesis 2971 out = ""
genesis 2972 last = iv
genesis 2973 for i in range((len(data)/16)):
genesis 2974 temp = data[i*16:(i+1)*16]
genesis 2975 to_encode = ""
genesis 2976 for j in range(4):
genesis 2977 temp1 = struct.unpack_from('<I', temp[j*4:])[0]
genesis 2978 temp2 = struct.unpack_from('<I', last[j*4:])[0]
genesis 2979 to_encode += struct.pack('<I',((temp1 ^ temp2) & 0xffffffff))
genesis 2980 last= Serpent(key).encrypt(to_encode)
genesis 2981 out += last
genesis 2982
genesis 2983 return out
genesis 2984
genesis 2985
genesis 2986 def serpent_cbc_decrypt(key,data,iv='\x00'*16):
genesis 2987 out2 = ""
genesis 2988 last = iv
genesis 2989 for i in range((len(data)/16)):
genesis 2990 temp = Serpent(key).decrypt(data[i*16:(i+1)*16])
genesis 2991 to_decode = ""
genesis 2992 for j in range(4):
genesis 2993 temp1 = struct.unpack_from('<I', temp[j*4:])[0]
genesis 2994 temp2 = struct.unpack_from('<I', last[j*4:])[0]
genesis 2995 to_decode += struct.pack('<I',((temp1 ^ temp2) & 0xffffffff))
genesis 2996 out2 += to_decode
genesis 2997 last = data[i*16:(i+1)*16]
genesis 2998 return out2