1%ifidn __OUTPUT_FORMAT__,obj 2section code use32 class=code align=64 3%elifidn __OUTPUT_FORMAT__,win32 4$@feat.00 equ 1 5section .text code align=64 6%else 7section .text code 8%endif 9global _whirlpool_block_mmx 10align 16 11_whirlpool_block_mmx: 12L$_whirlpool_block_mmx_begin: 13 push ebp 14 push ebx 15 push esi 16 push edi 17 mov esi,DWORD [20+esp] 18 mov edi,DWORD [24+esp] 19 mov ebp,DWORD [28+esp] 20 mov eax,esp 21 sub esp,148 22 and esp,-64 23 lea ebx,[128+esp] 24 mov DWORD [ebx],esi 25 mov DWORD [4+ebx],edi 26 mov DWORD [8+ebx],ebp 27 mov DWORD [16+ebx],eax 28 call L$000pic_point 29L$000pic_point: 30 pop ebp 31 lea ebp,[(L$001table-L$000pic_point)+ebp] 32 xor ecx,ecx 33 xor edx,edx 34 movq mm0,[esi] 35 movq mm1,[8+esi] 36 movq mm2,[16+esi] 37 movq mm3,[24+esi] 38 movq mm4,[32+esi] 39 movq mm5,[40+esi] 40 movq mm6,[48+esi] 41 movq mm7,[56+esi] 42L$002outerloop: 43 movq [esp],mm0 44 movq [8+esp],mm1 45 movq [16+esp],mm2 46 movq [24+esp],mm3 47 movq [32+esp],mm4 48 movq [40+esp],mm5 49 movq [48+esp],mm6 50 movq [56+esp],mm7 51 pxor mm0,[edi] 52 pxor mm1,[8+edi] 53 pxor mm2,[16+edi] 54 pxor mm3,[24+edi] 55 pxor mm4,[32+edi] 56 pxor mm5,[40+edi] 57 pxor mm6,[48+edi] 58 pxor mm7,[56+edi] 59 movq [64+esp],mm0 60 movq [72+esp],mm1 61 movq [80+esp],mm2 62 movq [88+esp],mm3 63 movq [96+esp],mm4 64 movq [104+esp],mm5 65 movq [112+esp],mm6 66 movq [120+esp],mm7 67 xor esi,esi 68 mov DWORD [12+ebx],esi 69align 16 70L$003round: 71 movq mm0,[4096+esi*8+ebp] 72 mov eax,DWORD [esp] 73 mov ebx,DWORD [4+esp] 74 movzx ecx,al 75 movzx edx,ah 76 shr eax,16 77 lea esi,[ecx*1+ecx] 78 movzx ecx,al 79 lea edi,[edx*1+edx] 80 movzx edx,ah 81 pxor mm0,[esi*8+ebp] 82 movq mm1,[7+edi*8+ebp] 83 mov eax,DWORD [8+esp] 84 lea esi,[ecx*1+ecx] 85 movzx ecx,bl 86 lea edi,[edx*1+edx] 87 movzx edx,bh 88 movq mm2,[6+esi*8+ebp] 89 movq mm3,[5+edi*8+ebp] 90 shr ebx,16 91 lea esi,[ecx*1+ecx] 92 movzx ecx,bl 93 lea edi,[edx*1+edx] 94 movzx edx,bh 95 movq mm4,[4+esi*8+ebp] 96 movq mm5,[3+edi*8+ebp] 97 mov ebx,DWORD [12+esp] 98 lea esi,[ecx*1+ecx] 99 movzx ecx,al 100 lea edi,[edx*1+edx] 101 movzx edx,ah 102 movq mm6,[2+esi*8+ebp] 103 movq mm7,[1+edi*8+ebp] 104 shr eax,16 105 lea esi,[ecx*1+ecx] 106 movzx ecx,al 107 lea edi,[edx*1+edx] 108 movzx edx,ah 109 pxor mm1,[esi*8+ebp] 110 pxor mm2,[7+edi*8+ebp] 111 mov eax,DWORD [16+esp] 112 lea esi,[ecx*1+ecx] 113 movzx ecx,bl 114 lea edi,[edx*1+edx] 115 movzx edx,bh 116 pxor mm3,[6+esi*8+ebp] 117 pxor mm4,[5+edi*8+ebp] 118 shr ebx,16 119 lea esi,[ecx*1+ecx] 120 movzx ecx,bl 121 lea edi,[edx*1+edx] 122 movzx edx,bh 123 pxor mm5,[4+esi*8+ebp] 124 pxor mm6,[3+edi*8+ebp] 125 mov ebx,DWORD [20+esp] 126 lea esi,[ecx*1+ecx] 127 movzx ecx,al 128 lea edi,[edx*1+edx] 129 movzx edx,ah 130 pxor mm7,[2+esi*8+ebp] 131 pxor mm0,[1+edi*8+ebp] 132 shr eax,16 133 lea esi,[ecx*1+ecx] 134 movzx ecx,al 135 lea edi,[edx*1+edx] 136 movzx edx,ah 137 pxor mm2,[esi*8+ebp] 138 pxor mm3,[7+edi*8+ebp] 139 mov eax,DWORD [24+esp] 140 lea esi,[ecx*1+ecx] 141 movzx ecx,bl 142 lea edi,[edx*1+edx] 143 movzx edx,bh 144 pxor mm4,[6+esi*8+ebp] 145 pxor mm5,[5+edi*8+ebp] 146 shr ebx,16 147 lea esi,[ecx*1+ecx] 148 movzx ecx,bl 149 lea edi,[edx*1+edx] 150 movzx edx,bh 151 pxor mm6,[4+esi*8+ebp] 152 pxor mm7,[3+edi*8+ebp] 153 mov ebx,DWORD [28+esp] 154 lea esi,[ecx*1+ecx] 155 movzx ecx,al 156 lea edi,[edx*1+edx] 157 movzx edx,ah 158 pxor mm0,[2+esi*8+ebp] 159 pxor mm1,[1+edi*8+ebp] 160 shr eax,16 161 lea esi,[ecx*1+ecx] 162 movzx ecx,al 163 lea edi,[edx*1+edx] 164 movzx edx,ah 165 pxor mm3,[esi*8+ebp] 166 pxor mm4,[7+edi*8+ebp] 167 mov eax,DWORD [32+esp] 168 lea esi,[ecx*1+ecx] 169 movzx ecx,bl 170 lea edi,[edx*1+edx] 171 movzx edx,bh 172 pxor mm5,[6+esi*8+ebp] 173 pxor mm6,[5+edi*8+ebp] 174 shr ebx,16 175 lea esi,[ecx*1+ecx] 176 movzx ecx,bl 177 lea edi,[edx*1+edx] 178 movzx edx,bh 179 pxor mm7,[4+esi*8+ebp] 180 pxor mm0,[3+edi*8+ebp] 181 mov ebx,DWORD [36+esp] 182 lea esi,[ecx*1+ecx] 183 movzx ecx,al 184 lea edi,[edx*1+edx] 185 movzx edx,ah 186 pxor mm1,[2+esi*8+ebp] 187 pxor mm2,[1+edi*8+ebp] 188 shr eax,16 189 lea esi,[ecx*1+ecx] 190 movzx ecx,al 191 lea edi,[edx*1+edx] 192 movzx edx,ah 193 pxor mm4,[esi*8+ebp] 194 pxor mm5,[7+edi*8+ebp] 195 mov eax,DWORD [40+esp] 196 lea esi,[ecx*1+ecx] 197 movzx ecx,bl 198 lea edi,[edx*1+edx] 199 movzx edx,bh 200 pxor mm6,[6+esi*8+ebp] 201 pxor mm7,[5+edi*8+ebp] 202 shr ebx,16 203 lea esi,[ecx*1+ecx] 204 movzx ecx,bl 205 lea edi,[edx*1+edx] 206 movzx edx,bh 207 pxor mm0,[4+esi*8+ebp] 208 pxor mm1,[3+edi*8+ebp] 209 mov ebx,DWORD [44+esp] 210 lea esi,[ecx*1+ecx] 211 movzx ecx,al 212 lea edi,[edx*1+edx] 213 movzx edx,ah 214 pxor mm2,[2+esi*8+ebp] 215 pxor mm3,[1+edi*8+ebp] 216 shr eax,16 217 lea esi,[ecx*1+ecx] 218 movzx ecx,al 219 lea edi,[edx*1+edx] 220 movzx edx,ah 221 pxor mm5,[esi*8+ebp] 222 pxor mm6,[7+edi*8+ebp] 223 mov eax,DWORD [48+esp] 224 lea esi,[ecx*1+ecx] 225 movzx ecx,bl 226 lea edi,[edx*1+edx] 227 movzx edx,bh 228 pxor mm7,[6+esi*8+ebp] 229 pxor mm0,[5+edi*8+ebp] 230 shr ebx,16 231 lea esi,[ecx*1+ecx] 232 movzx ecx,bl 233 lea edi,[edx*1+edx] 234 movzx edx,bh 235 pxor mm1,[4+esi*8+ebp] 236 pxor mm2,[3+edi*8+ebp] 237 mov ebx,DWORD [52+esp] 238 lea esi,[ecx*1+ecx] 239 movzx ecx,al 240 lea edi,[edx*1+edx] 241 movzx edx,ah 242 pxor mm3,[2+esi*8+ebp] 243 pxor mm4,[1+edi*8+ebp] 244 shr eax,16 245 lea esi,[ecx*1+ecx] 246 movzx ecx,al 247 lea edi,[edx*1+edx] 248 movzx edx,ah 249 pxor mm6,[esi*8+ebp] 250 pxor mm7,[7+edi*8+ebp] 251 mov eax,DWORD [56+esp] 252 lea esi,[ecx*1+ecx] 253 movzx ecx,bl 254 lea edi,[edx*1+edx] 255 movzx edx,bh 256 pxor mm0,[6+esi*8+ebp] 257 pxor mm1,[5+edi*8+ebp] 258 shr ebx,16 259 lea esi,[ecx*1+ecx] 260 movzx ecx,bl 261 lea edi,[edx*1+edx] 262 movzx edx,bh 263 pxor mm2,[4+esi*8+ebp] 264 pxor mm3,[3+edi*8+ebp] 265 mov ebx,DWORD [60+esp] 266 lea esi,[ecx*1+ecx] 267 movzx ecx,al 268 lea edi,[edx*1+edx] 269 movzx edx,ah 270 pxor mm4,[2+esi*8+ebp] 271 pxor mm5,[1+edi*8+ebp] 272 shr eax,16 273 lea esi,[ecx*1+ecx] 274 movzx ecx,al 275 lea edi,[edx*1+edx] 276 movzx edx,ah 277 pxor mm7,[esi*8+ebp] 278 pxor mm0,[7+edi*8+ebp] 279 mov eax,DWORD [64+esp] 280 lea esi,[ecx*1+ecx] 281 movzx ecx,bl 282 lea edi,[edx*1+edx] 283 movzx edx,bh 284 pxor mm1,[6+esi*8+ebp] 285 pxor mm2,[5+edi*8+ebp] 286 shr ebx,16 287 lea esi,[ecx*1+ecx] 288 movzx ecx,bl 289 lea edi,[edx*1+edx] 290 movzx edx,bh 291 pxor mm3,[4+esi*8+ebp] 292 pxor mm4,[3+edi*8+ebp] 293 mov ebx,DWORD [68+esp] 294 lea esi,[ecx*1+ecx] 295 movzx ecx,al 296 lea edi,[edx*1+edx] 297 movzx edx,ah 298 pxor mm5,[2+esi*8+ebp] 299 pxor mm6,[1+edi*8+ebp] 300 movq [esp],mm0 301 movq [8+esp],mm1 302 movq [16+esp],mm2 303 movq [24+esp],mm3 304 movq [32+esp],mm4 305 movq [40+esp],mm5 306 movq [48+esp],mm6 307 movq [56+esp],mm7 308 shr eax,16 309 lea esi,[ecx*1+ecx] 310 movzx ecx,al 311 lea edi,[edx*1+edx] 312 movzx edx,ah 313 pxor mm0,[esi*8+ebp] 314 pxor mm1,[7+edi*8+ebp] 315 mov eax,DWORD [72+esp] 316 lea esi,[ecx*1+ecx] 317 movzx ecx,bl 318 lea edi,[edx*1+edx] 319 movzx edx,bh 320 pxor mm2,[6+esi*8+ebp] 321 pxor mm3,[5+edi*8+ebp] 322 shr ebx,16 323 lea esi,[ecx*1+ecx] 324 movzx ecx,bl 325 lea edi,[edx*1+edx] 326 movzx edx,bh 327 pxor mm4,[4+esi*8+ebp] 328 pxor mm5,[3+edi*8+ebp] 329 mov ebx,DWORD [76+esp] 330 lea esi,[ecx*1+ecx] 331 movzx ecx,al 332 lea edi,[edx*1+edx] 333 movzx edx,ah 334 pxor mm6,[2+esi*8+ebp] 335 pxor mm7,[1+edi*8+ebp] 336 shr eax,16 337 lea esi,[ecx*1+ecx] 338 movzx ecx,al 339 lea edi,[edx*1+edx] 340 movzx edx,ah 341 pxor mm1,[esi*8+ebp] 342 pxor mm2,[7+edi*8+ebp] 343 mov eax,DWORD [80+esp] 344 lea esi,[ecx*1+ecx] 345 movzx ecx,bl 346 lea edi,[edx*1+edx] 347 movzx edx,bh 348 pxor mm3,[6+esi*8+ebp] 349 pxor mm4,[5+edi*8+ebp] 350 shr ebx,16 351 lea esi,[ecx*1+ecx] 352 movzx ecx,bl 353 lea edi,[edx*1+edx] 354 movzx edx,bh 355 pxor mm5,[4+esi*8+ebp] 356 pxor mm6,[3+edi*8+ebp] 357 mov ebx,DWORD [84+esp] 358 lea esi,[ecx*1+ecx] 359 movzx ecx,al 360 lea edi,[edx*1+edx] 361 movzx edx,ah 362 pxor mm7,[2+esi*8+ebp] 363 pxor mm0,[1+edi*8+ebp] 364 shr eax,16 365 lea esi,[ecx*1+ecx] 366 movzx ecx,al 367 lea edi,[edx*1+edx] 368 movzx edx,ah 369 pxor mm2,[esi*8+ebp] 370 pxor mm3,[7+edi*8+ebp] 371 mov eax,DWORD [88+esp] 372 lea esi,[ecx*1+ecx] 373 movzx ecx,bl 374 lea edi,[edx*1+edx] 375 movzx edx,bh 376 pxor mm4,[6+esi*8+ebp] 377 pxor mm5,[5+edi*8+ebp] 378 shr ebx,16 379 lea esi,[ecx*1+ecx] 380 movzx ecx,bl 381 lea edi,[edx*1+edx] 382 movzx edx,bh 383 pxor mm6,[4+esi*8+ebp] 384 pxor mm7,[3+edi*8+ebp] 385 mov ebx,DWORD [92+esp] 386 lea esi,[ecx*1+ecx] 387 movzx ecx,al 388 lea edi,[edx*1+edx] 389 movzx edx,ah 390 pxor mm0,[2+esi*8+ebp] 391 pxor mm1,[1+edi*8+ebp] 392 shr eax,16 393 lea esi,[ecx*1+ecx] 394 movzx ecx,al 395 lea edi,[edx*1+edx] 396 movzx edx,ah 397 pxor mm3,[esi*8+ebp] 398 pxor mm4,[7+edi*8+ebp] 399 mov eax,DWORD [96+esp] 400 lea esi,[ecx*1+ecx] 401 movzx ecx,bl 402 lea edi,[edx*1+edx] 403 movzx edx,bh 404 pxor mm5,[6+esi*8+ebp] 405 pxor mm6,[5+edi*8+ebp] 406 shr ebx,16 407 lea esi,[ecx*1+ecx] 408 movzx ecx,bl 409 lea edi,[edx*1+edx] 410 movzx edx,bh 411 pxor mm7,[4+esi*8+ebp] 412 pxor mm0,[3+edi*8+ebp] 413 mov ebx,DWORD [100+esp] 414 lea esi,[ecx*1+ecx] 415 movzx ecx,al 416 lea edi,[edx*1+edx] 417 movzx edx,ah 418 pxor mm1,[2+esi*8+ebp] 419 pxor mm2,[1+edi*8+ebp] 420 shr eax,16 421 lea esi,[ecx*1+ecx] 422 movzx ecx,al 423 lea edi,[edx*1+edx] 424 movzx edx,ah 425 pxor mm4,[esi*8+ebp] 426 pxor mm5,[7+edi*8+ebp] 427 mov eax,DWORD [104+esp] 428 lea esi,[ecx*1+ecx] 429 movzx ecx,bl 430 lea edi,[edx*1+edx] 431 movzx edx,bh 432 pxor mm6,[6+esi*8+ebp] 433 pxor mm7,[5+edi*8+ebp] 434 shr ebx,16 435 lea esi,[ecx*1+ecx] 436 movzx ecx,bl 437 lea edi,[edx*1+edx] 438 movzx edx,bh 439 pxor mm0,[4+esi*8+ebp] 440 pxor mm1,[3+edi*8+ebp] 441 mov ebx,DWORD [108+esp] 442 lea esi,[ecx*1+ecx] 443 movzx ecx,al 444 lea edi,[edx*1+edx] 445 movzx edx,ah 446 pxor mm2,[2+esi*8+ebp] 447 pxor mm3,[1+edi*8+ebp] 448 shr eax,16 449 lea esi,[ecx*1+ecx] 450 movzx ecx,al 451 lea edi,[edx*1+edx] 452 movzx edx,ah 453 pxor mm5,[esi*8+ebp] 454 pxor mm6,[7+edi*8+ebp] 455 mov eax,DWORD [112+esp] 456 lea esi,[ecx*1+ecx] 457 movzx ecx,bl 458 lea edi,[edx*1+edx] 459 movzx edx,bh 460 pxor mm7,[6+esi*8+ebp] 461 pxor mm0,[5+edi*8+ebp] 462 shr ebx,16 463 lea esi,[ecx*1+ecx] 464 movzx ecx,bl 465 lea edi,[edx*1+edx] 466 movzx edx,bh 467 pxor mm1,[4+esi*8+ebp] 468 pxor mm2,[3+edi*8+ebp] 469 mov ebx,DWORD [116+esp] 470 lea esi,[ecx*1+ecx] 471 movzx ecx,al 472 lea edi,[edx*1+edx] 473 movzx edx,ah 474 pxor mm3,[2+esi*8+ebp] 475 pxor mm4,[1+edi*8+ebp] 476 shr eax,16 477 lea esi,[ecx*1+ecx] 478 movzx ecx,al 479 lea edi,[edx*1+edx] 480 movzx edx,ah 481 pxor mm6,[esi*8+ebp] 482 pxor mm7,[7+edi*8+ebp] 483 mov eax,DWORD [120+esp] 484 lea esi,[ecx*1+ecx] 485 movzx ecx,bl 486 lea edi,[edx*1+edx] 487 movzx edx,bh 488 pxor mm0,[6+esi*8+ebp] 489 pxor mm1,[5+edi*8+ebp] 490 shr ebx,16 491 lea esi,[ecx*1+ecx] 492 movzx ecx,bl 493 lea edi,[edx*1+edx] 494 movzx edx,bh 495 pxor mm2,[4+esi*8+ebp] 496 pxor mm3,[3+edi*8+ebp] 497 mov ebx,DWORD [124+esp] 498 lea esi,[ecx*1+ecx] 499 movzx ecx,al 500 lea edi,[edx*1+edx] 501 movzx edx,ah 502 pxor mm4,[2+esi*8+ebp] 503 pxor mm5,[1+edi*8+ebp] 504 shr eax,16 505 lea esi,[ecx*1+ecx] 506 movzx ecx,al 507 lea edi,[edx*1+edx] 508 movzx edx,ah 509 pxor mm7,[esi*8+ebp] 510 pxor mm0,[7+edi*8+ebp] 511 lea esi,[ecx*1+ecx] 512 movzx ecx,bl 513 lea edi,[edx*1+edx] 514 movzx edx,bh 515 pxor mm1,[6+esi*8+ebp] 516 pxor mm2,[5+edi*8+ebp] 517 shr ebx,16 518 lea esi,[ecx*1+ecx] 519 movzx ecx,bl 520 lea edi,[edx*1+edx] 521 movzx edx,bh 522 pxor mm3,[4+esi*8+ebp] 523 pxor mm4,[3+edi*8+ebp] 524 lea esi,[ecx*1+ecx] 525 movzx ecx,al 526 lea edi,[edx*1+edx] 527 movzx edx,ah 528 pxor mm5,[2+esi*8+ebp] 529 pxor mm6,[1+edi*8+ebp] 530 lea ebx,[128+esp] 531 mov esi,DWORD [12+ebx] 532 add esi,1 533 cmp esi,10 534 je NEAR L$004roundsdone 535 mov DWORD [12+ebx],esi 536 movq [64+esp],mm0 537 movq [72+esp],mm1 538 movq [80+esp],mm2 539 movq [88+esp],mm3 540 movq [96+esp],mm4 541 movq [104+esp],mm5 542 movq [112+esp],mm6 543 movq [120+esp],mm7 544 jmp NEAR L$003round 545align 16 546L$004roundsdone: 547 mov esi,DWORD [ebx] 548 mov edi,DWORD [4+ebx] 549 mov eax,DWORD [8+ebx] 550 pxor mm0,[edi] 551 pxor mm1,[8+edi] 552 pxor mm2,[16+edi] 553 pxor mm3,[24+edi] 554 pxor mm4,[32+edi] 555 pxor mm5,[40+edi] 556 pxor mm6,[48+edi] 557 pxor mm7,[56+edi] 558 pxor mm0,[esi] 559 pxor mm1,[8+esi] 560 pxor mm2,[16+esi] 561 pxor mm3,[24+esi] 562 pxor mm4,[32+esi] 563 pxor mm5,[40+esi] 564 pxor mm6,[48+esi] 565 pxor mm7,[56+esi] 566 movq [esi],mm0 567 movq [8+esi],mm1 568 movq [16+esi],mm2 569 movq [24+esi],mm3 570 movq [32+esi],mm4 571 movq [40+esi],mm5 572 movq [48+esi],mm6 573 movq [56+esi],mm7 574 lea edi,[64+edi] 575 sub eax,1 576 jz NEAR L$005alldone 577 mov DWORD [4+ebx],edi 578 mov DWORD [8+ebx],eax 579 jmp NEAR L$002outerloop 580L$005alldone: 581 emms 582 mov esp,DWORD [16+ebx] 583 pop edi 584 pop esi 585 pop ebx 586 pop ebp 587 ret 588align 64 589L$001table: 590db 24,24,96,24,192,120,48,216 591db 24,24,96,24,192,120,48,216 592db 35,35,140,35,5,175,70,38 593db 35,35,140,35,5,175,70,38 594db 198,198,63,198,126,249,145,184 595db 198,198,63,198,126,249,145,184 596db 232,232,135,232,19,111,205,251 597db 232,232,135,232,19,111,205,251 598db 135,135,38,135,76,161,19,203 599db 135,135,38,135,76,161,19,203 600db 184,184,218,184,169,98,109,17 601db 184,184,218,184,169,98,109,17 602db 1,1,4,1,8,5,2,9 603db 1,1,4,1,8,5,2,9 604db 79,79,33,79,66,110,158,13 605db 79,79,33,79,66,110,158,13 606db 54,54,216,54,173,238,108,155 607db 54,54,216,54,173,238,108,155 608db 166,166,162,166,89,4,81,255 609db 166,166,162,166,89,4,81,255 610db 210,210,111,210,222,189,185,12 611db 210,210,111,210,222,189,185,12 612db 245,245,243,245,251,6,247,14 613db 245,245,243,245,251,6,247,14 614db 121,121,249,121,239,128,242,150 615db 121,121,249,121,239,128,242,150 616db 111,111,161,111,95,206,222,48 617db 111,111,161,111,95,206,222,48 618db 145,145,126,145,252,239,63,109 619db 145,145,126,145,252,239,63,109 620db 82,82,85,82,170,7,164,248 621db 82,82,85,82,170,7,164,248 622db 96,96,157,96,39,253,192,71 623db 96,96,157,96,39,253,192,71 624db 188,188,202,188,137,118,101,53 625db 188,188,202,188,137,118,101,53 626db 155,155,86,155,172,205,43,55 627db 155,155,86,155,172,205,43,55 628db 142,142,2,142,4,140,1,138 629db 142,142,2,142,4,140,1,138 630db 163,163,182,163,113,21,91,210 631db 163,163,182,163,113,21,91,210 632db 12,12,48,12,96,60,24,108 633db 12,12,48,12,96,60,24,108 634db 123,123,241,123,255,138,246,132 635db 123,123,241,123,255,138,246,132 636db 53,53,212,53,181,225,106,128 637db 53,53,212,53,181,225,106,128 638db 29,29,116,29,232,105,58,245 639db 29,29,116,29,232,105,58,245 640db 224,224,167,224,83,71,221,179 641db 224,224,167,224,83,71,221,179 642db 215,215,123,215,246,172,179,33 643db 215,215,123,215,246,172,179,33 644db 194,194,47,194,94,237,153,156 645db 194,194,47,194,94,237,153,156 646db 46,46,184,46,109,150,92,67 647db 46,46,184,46,109,150,92,67 648db 75,75,49,75,98,122,150,41 649db 75,75,49,75,98,122,150,41 650db 254,254,223,254,163,33,225,93 651db 254,254,223,254,163,33,225,93 652db 87,87,65,87,130,22,174,213 653db 87,87,65,87,130,22,174,213 654db 21,21,84,21,168,65,42,189 655db 21,21,84,21,168,65,42,189 656db 119,119,193,119,159,182,238,232 657db 119,119,193,119,159,182,238,232 658db 55,55,220,55,165,235,110,146 659db 55,55,220,55,165,235,110,146 660db 229,229,179,229,123,86,215,158 661db 229,229,179,229,123,86,215,158 662db 159,159,70,159,140,217,35,19 663db 159,159,70,159,140,217,35,19 664db 240,240,231,240,211,23,253,35 665db 240,240,231,240,211,23,253,35 666db 74,74,53,74,106,127,148,32 667db 74,74,53,74,106,127,148,32 668db 218,218,79,218,158,149,169,68 669db 218,218,79,218,158,149,169,68 670db 88,88,125,88,250,37,176,162 671db 88,88,125,88,250,37,176,162 672db 201,201,3,201,6,202,143,207 673db 201,201,3,201,6,202,143,207 674db 41,41,164,41,85,141,82,124 675db 41,41,164,41,85,141,82,124 676db 10,10,40,10,80,34,20,90 677db 10,10,40,10,80,34,20,90 678db 177,177,254,177,225,79,127,80 679db 177,177,254,177,225,79,127,80 680db 160,160,186,160,105,26,93,201 681db 160,160,186,160,105,26,93,201 682db 107,107,177,107,127,218,214,20 683db 107,107,177,107,127,218,214,20 684db 133,133,46,133,92,171,23,217 685db 133,133,46,133,92,171,23,217 686db 189,189,206,189,129,115,103,60 687db 189,189,206,189,129,115,103,60 688db 93,93,105,93,210,52,186,143 689db 93,93,105,93,210,52,186,143 690db 16,16,64,16,128,80,32,144 691db 16,16,64,16,128,80,32,144 692db 244,244,247,244,243,3,245,7 693db 244,244,247,244,243,3,245,7 694db 203,203,11,203,22,192,139,221 695db 203,203,11,203,22,192,139,221 696db 62,62,248,62,237,198,124,211 697db 62,62,248,62,237,198,124,211 698db 5,5,20,5,40,17,10,45 699db 5,5,20,5,40,17,10,45 700db 103,103,129,103,31,230,206,120 701db 103,103,129,103,31,230,206,120 702db 228,228,183,228,115,83,213,151 703db 228,228,183,228,115,83,213,151 704db 39,39,156,39,37,187,78,2 705db 39,39,156,39,37,187,78,2 706db 65,65,25,65,50,88,130,115 707db 65,65,25,65,50,88,130,115 708db 139,139,22,139,44,157,11,167 709db 139,139,22,139,44,157,11,167 710db 167,167,166,167,81,1,83,246 711db 167,167,166,167,81,1,83,246 712db 125,125,233,125,207,148,250,178 713db 125,125,233,125,207,148,250,178 714db 149,149,110,149,220,251,55,73 715db 149,149,110,149,220,251,55,73 716db 216,216,71,216,142,159,173,86 717db 216,216,71,216,142,159,173,86 718db 251,251,203,251,139,48,235,112 719db 251,251,203,251,139,48,235,112 720db 238,238,159,238,35,113,193,205 721db 238,238,159,238,35,113,193,205 722db 124,124,237,124,199,145,248,187 723db 124,124,237,124,199,145,248,187 724db 102,102,133,102,23,227,204,113 725db 102,102,133,102,23,227,204,113 726db 221,221,83,221,166,142,167,123 727db 221,221,83,221,166,142,167,123 728db 23,23,92,23,184,75,46,175 729db 23,23,92,23,184,75,46,175 730db 71,71,1,71,2,70,142,69 731db 71,71,1,71,2,70,142,69 732db 158,158,66,158,132,220,33,26 733db 158,158,66,158,132,220,33,26 734db 202,202,15,202,30,197,137,212 735db 202,202,15,202,30,197,137,212 736db 45,45,180,45,117,153,90,88 737db 45,45,180,45,117,153,90,88 738db 191,191,198,191,145,121,99,46 739db 191,191,198,191,145,121,99,46 740db 7,7,28,7,56,27,14,63 741db 7,7,28,7,56,27,14,63 742db 173,173,142,173,1,35,71,172 743db 173,173,142,173,1,35,71,172 744db 90,90,117,90,234,47,180,176 745db 90,90,117,90,234,47,180,176 746db 131,131,54,131,108,181,27,239 747db 131,131,54,131,108,181,27,239 748db 51,51,204,51,133,255,102,182 749db 51,51,204,51,133,255,102,182 750db 99,99,145,99,63,242,198,92 751db 99,99,145,99,63,242,198,92 752db 2,2,8,2,16,10,4,18 753db 2,2,8,2,16,10,4,18 754db 170,170,146,170,57,56,73,147 755db 170,170,146,170,57,56,73,147 756db 113,113,217,113,175,168,226,222 757db 113,113,217,113,175,168,226,222 758db 200,200,7,200,14,207,141,198 759db 200,200,7,200,14,207,141,198 760db 25,25,100,25,200,125,50,209 761db 25,25,100,25,200,125,50,209 762db 73,73,57,73,114,112,146,59 763db 73,73,57,73,114,112,146,59 764db 217,217,67,217,134,154,175,95 765db 217,217,67,217,134,154,175,95 766db 242,242,239,242,195,29,249,49 767db 242,242,239,242,195,29,249,49 768db 227,227,171,227,75,72,219,168 769db 227,227,171,227,75,72,219,168 770db 91,91,113,91,226,42,182,185 771db 91,91,113,91,226,42,182,185 772db 136,136,26,136,52,146,13,188 773db 136,136,26,136,52,146,13,188 774db 154,154,82,154,164,200,41,62 775db 154,154,82,154,164,200,41,62 776db 38,38,152,38,45,190,76,11 777db 38,38,152,38,45,190,76,11 778db 50,50,200,50,141,250,100,191 779db 50,50,200,50,141,250,100,191 780db 176,176,250,176,233,74,125,89 781db 176,176,250,176,233,74,125,89 782db 233,233,131,233,27,106,207,242 783db 233,233,131,233,27,106,207,242 784db 15,15,60,15,120,51,30,119 785db 15,15,60,15,120,51,30,119 786db 213,213,115,213,230,166,183,51 787db 213,213,115,213,230,166,183,51 788db 128,128,58,128,116,186,29,244 789db 128,128,58,128,116,186,29,244 790db 190,190,194,190,153,124,97,39 791db 190,190,194,190,153,124,97,39 792db 205,205,19,205,38,222,135,235 793db 205,205,19,205,38,222,135,235 794db 52,52,208,52,189,228,104,137 795db 52,52,208,52,189,228,104,137 796db 72,72,61,72,122,117,144,50 797db 72,72,61,72,122,117,144,50 798db 255,255,219,255,171,36,227,84 799db 255,255,219,255,171,36,227,84 800db 122,122,245,122,247,143,244,141 801db 122,122,245,122,247,143,244,141 802db 144,144,122,144,244,234,61,100 803db 144,144,122,144,244,234,61,100 804db 95,95,97,95,194,62,190,157 805db 95,95,97,95,194,62,190,157 806db 32,32,128,32,29,160,64,61 807db 32,32,128,32,29,160,64,61 808db 104,104,189,104,103,213,208,15 809db 104,104,189,104,103,213,208,15 810db 26,26,104,26,208,114,52,202 811db 26,26,104,26,208,114,52,202 812db 174,174,130,174,25,44,65,183 813db 174,174,130,174,25,44,65,183 814db 180,180,234,180,201,94,117,125 815db 180,180,234,180,201,94,117,125 816db 84,84,77,84,154,25,168,206 817db 84,84,77,84,154,25,168,206 818db 147,147,118,147,236,229,59,127 819db 147,147,118,147,236,229,59,127 820db 34,34,136,34,13,170,68,47 821db 34,34,136,34,13,170,68,47 822db 100,100,141,100,7,233,200,99 823db 100,100,141,100,7,233,200,99 824db 241,241,227,241,219,18,255,42 825db 241,241,227,241,219,18,255,42 826db 115,115,209,115,191,162,230,204 827db 115,115,209,115,191,162,230,204 828db 18,18,72,18,144,90,36,130 829db 18,18,72,18,144,90,36,130 830db 64,64,29,64,58,93,128,122 831db 64,64,29,64,58,93,128,122 832db 8,8,32,8,64,40,16,72 833db 8,8,32,8,64,40,16,72 834db 195,195,43,195,86,232,155,149 835db 195,195,43,195,86,232,155,149 836db 236,236,151,236,51,123,197,223 837db 236,236,151,236,51,123,197,223 838db 219,219,75,219,150,144,171,77 839db 219,219,75,219,150,144,171,77 840db 161,161,190,161,97,31,95,192 841db 161,161,190,161,97,31,95,192 842db 141,141,14,141,28,131,7,145 843db 141,141,14,141,28,131,7,145 844db 61,61,244,61,245,201,122,200 845db 61,61,244,61,245,201,122,200 846db 151,151,102,151,204,241,51,91 847db 151,151,102,151,204,241,51,91 848db 0,0,0,0,0,0,0,0 849db 0,0,0,0,0,0,0,0 850db 207,207,27,207,54,212,131,249 851db 207,207,27,207,54,212,131,249 852db 43,43,172,43,69,135,86,110 853db 43,43,172,43,69,135,86,110 854db 118,118,197,118,151,179,236,225 855db 118,118,197,118,151,179,236,225 856db 130,130,50,130,100,176,25,230 857db 130,130,50,130,100,176,25,230 858db 214,214,127,214,254,169,177,40 859db 214,214,127,214,254,169,177,40 860db 27,27,108,27,216,119,54,195 861db 27,27,108,27,216,119,54,195 862db 181,181,238,181,193,91,119,116 863db 181,181,238,181,193,91,119,116 864db 175,175,134,175,17,41,67,190 865db 175,175,134,175,17,41,67,190 866db 106,106,181,106,119,223,212,29 867db 106,106,181,106,119,223,212,29 868db 80,80,93,80,186,13,160,234 869db 80,80,93,80,186,13,160,234 870db 69,69,9,69,18,76,138,87 871db 69,69,9,69,18,76,138,87 872db 243,243,235,243,203,24,251,56 873db 243,243,235,243,203,24,251,56 874db 48,48,192,48,157,240,96,173 875db 48,48,192,48,157,240,96,173 876db 239,239,155,239,43,116,195,196 877db 239,239,155,239,43,116,195,196 878db 63,63,252,63,229,195,126,218 879db 63,63,252,63,229,195,126,218 880db 85,85,73,85,146,28,170,199 881db 85,85,73,85,146,28,170,199 882db 162,162,178,162,121,16,89,219 883db 162,162,178,162,121,16,89,219 884db 234,234,143,234,3,101,201,233 885db 234,234,143,234,3,101,201,233 886db 101,101,137,101,15,236,202,106 887db 101,101,137,101,15,236,202,106 888db 186,186,210,186,185,104,105,3 889db 186,186,210,186,185,104,105,3 890db 47,47,188,47,101,147,94,74 891db 47,47,188,47,101,147,94,74 892db 192,192,39,192,78,231,157,142 893db 192,192,39,192,78,231,157,142 894db 222,222,95,222,190,129,161,96 895db 222,222,95,222,190,129,161,96 896db 28,28,112,28,224,108,56,252 897db 28,28,112,28,224,108,56,252 898db 253,253,211,253,187,46,231,70 899db 253,253,211,253,187,46,231,70 900db 77,77,41,77,82,100,154,31 901db 77,77,41,77,82,100,154,31 902db 146,146,114,146,228,224,57,118 903db 146,146,114,146,228,224,57,118 904db 117,117,201,117,143,188,234,250 905db 117,117,201,117,143,188,234,250 906db 6,6,24,6,48,30,12,54 907db 6,6,24,6,48,30,12,54 908db 138,138,18,138,36,152,9,174 909db 138,138,18,138,36,152,9,174 910db 178,178,242,178,249,64,121,75 911db 178,178,242,178,249,64,121,75 912db 230,230,191,230,99,89,209,133 913db 230,230,191,230,99,89,209,133 914db 14,14,56,14,112,54,28,126 915db 14,14,56,14,112,54,28,126 916db 31,31,124,31,248,99,62,231 917db 31,31,124,31,248,99,62,231 918db 98,98,149,98,55,247,196,85 919db 98,98,149,98,55,247,196,85 920db 212,212,119,212,238,163,181,58 921db 212,212,119,212,238,163,181,58 922db 168,168,154,168,41,50,77,129 923db 168,168,154,168,41,50,77,129 924db 150,150,98,150,196,244,49,82 925db 150,150,98,150,196,244,49,82 926db 249,249,195,249,155,58,239,98 927db 249,249,195,249,155,58,239,98 928db 197,197,51,197,102,246,151,163 929db 197,197,51,197,102,246,151,163 930db 37,37,148,37,53,177,74,16 931db 37,37,148,37,53,177,74,16 932db 89,89,121,89,242,32,178,171 933db 89,89,121,89,242,32,178,171 934db 132,132,42,132,84,174,21,208 935db 132,132,42,132,84,174,21,208 936db 114,114,213,114,183,167,228,197 937db 114,114,213,114,183,167,228,197 938db 57,57,228,57,213,221,114,236 939db 57,57,228,57,213,221,114,236 940db 76,76,45,76,90,97,152,22 941db 76,76,45,76,90,97,152,22 942db 94,94,101,94,202,59,188,148 943db 94,94,101,94,202,59,188,148 944db 120,120,253,120,231,133,240,159 945db 120,120,253,120,231,133,240,159 946db 56,56,224,56,221,216,112,229 947db 56,56,224,56,221,216,112,229 948db 140,140,10,140,20,134,5,152 949db 140,140,10,140,20,134,5,152 950db 209,209,99,209,198,178,191,23 951db 209,209,99,209,198,178,191,23 952db 165,165,174,165,65,11,87,228 953db 165,165,174,165,65,11,87,228 954db 226,226,175,226,67,77,217,161 955db 226,226,175,226,67,77,217,161 956db 97,97,153,97,47,248,194,78 957db 97,97,153,97,47,248,194,78 958db 179,179,246,179,241,69,123,66 959db 179,179,246,179,241,69,123,66 960db 33,33,132,33,21,165,66,52 961db 33,33,132,33,21,165,66,52 962db 156,156,74,156,148,214,37,8 963db 156,156,74,156,148,214,37,8 964db 30,30,120,30,240,102,60,238 965db 30,30,120,30,240,102,60,238 966db 67,67,17,67,34,82,134,97 967db 67,67,17,67,34,82,134,97 968db 199,199,59,199,118,252,147,177 969db 199,199,59,199,118,252,147,177 970db 252,252,215,252,179,43,229,79 971db 252,252,215,252,179,43,229,79 972db 4,4,16,4,32,20,8,36 973db 4,4,16,4,32,20,8,36 974db 81,81,89,81,178,8,162,227 975db 81,81,89,81,178,8,162,227 976db 153,153,94,153,188,199,47,37 977db 153,153,94,153,188,199,47,37 978db 109,109,169,109,79,196,218,34 979db 109,109,169,109,79,196,218,34 980db 13,13,52,13,104,57,26,101 981db 13,13,52,13,104,57,26,101 982db 250,250,207,250,131,53,233,121 983db 250,250,207,250,131,53,233,121 984db 223,223,91,223,182,132,163,105 985db 223,223,91,223,182,132,163,105 986db 126,126,229,126,215,155,252,169 987db 126,126,229,126,215,155,252,169 988db 36,36,144,36,61,180,72,25 989db 36,36,144,36,61,180,72,25 990db 59,59,236,59,197,215,118,254 991db 59,59,236,59,197,215,118,254 992db 171,171,150,171,49,61,75,154 993db 171,171,150,171,49,61,75,154 994db 206,206,31,206,62,209,129,240 995db 206,206,31,206,62,209,129,240 996db 17,17,68,17,136,85,34,153 997db 17,17,68,17,136,85,34,153 998db 143,143,6,143,12,137,3,131 999db 143,143,6,143,12,137,3,131 1000db 78,78,37,78,74,107,156,4 1001db 78,78,37,78,74,107,156,4 1002db 183,183,230,183,209,81,115,102 1003db 183,183,230,183,209,81,115,102 1004db 235,235,139,235,11,96,203,224 1005db 235,235,139,235,11,96,203,224 1006db 60,60,240,60,253,204,120,193 1007db 60,60,240,60,253,204,120,193 1008db 129,129,62,129,124,191,31,253 1009db 129,129,62,129,124,191,31,253 1010db 148,148,106,148,212,254,53,64 1011db 148,148,106,148,212,254,53,64 1012db 247,247,251,247,235,12,243,28 1013db 247,247,251,247,235,12,243,28 1014db 185,185,222,185,161,103,111,24 1015db 185,185,222,185,161,103,111,24 1016db 19,19,76,19,152,95,38,139 1017db 19,19,76,19,152,95,38,139 1018db 44,44,176,44,125,156,88,81 1019db 44,44,176,44,125,156,88,81 1020db 211,211,107,211,214,184,187,5 1021db 211,211,107,211,214,184,187,5 1022db 231,231,187,231,107,92,211,140 1023db 231,231,187,231,107,92,211,140 1024db 110,110,165,110,87,203,220,57 1025db 110,110,165,110,87,203,220,57 1026db 196,196,55,196,110,243,149,170 1027db 196,196,55,196,110,243,149,170 1028db 3,3,12,3,24,15,6,27 1029db 3,3,12,3,24,15,6,27 1030db 86,86,69,86,138,19,172,220 1031db 86,86,69,86,138,19,172,220 1032db 68,68,13,68,26,73,136,94 1033db 68,68,13,68,26,73,136,94 1034db 127,127,225,127,223,158,254,160 1035db 127,127,225,127,223,158,254,160 1036db 169,169,158,169,33,55,79,136 1037db 169,169,158,169,33,55,79,136 1038db 42,42,168,42,77,130,84,103 1039db 42,42,168,42,77,130,84,103 1040db 187,187,214,187,177,109,107,10 1041db 187,187,214,187,177,109,107,10 1042db 193,193,35,193,70,226,159,135 1043db 193,193,35,193,70,226,159,135 1044db 83,83,81,83,162,2,166,241 1045db 83,83,81,83,162,2,166,241 1046db 220,220,87,220,174,139,165,114 1047db 220,220,87,220,174,139,165,114 1048db 11,11,44,11,88,39,22,83 1049db 11,11,44,11,88,39,22,83 1050db 157,157,78,157,156,211,39,1 1051db 157,157,78,157,156,211,39,1 1052db 108,108,173,108,71,193,216,43 1053db 108,108,173,108,71,193,216,43 1054db 49,49,196,49,149,245,98,164 1055db 49,49,196,49,149,245,98,164 1056db 116,116,205,116,135,185,232,243 1057db 116,116,205,116,135,185,232,243 1058db 246,246,255,246,227,9,241,21 1059db 246,246,255,246,227,9,241,21 1060db 70,70,5,70,10,67,140,76 1061db 70,70,5,70,10,67,140,76 1062db 172,172,138,172,9,38,69,165 1063db 172,172,138,172,9,38,69,165 1064db 137,137,30,137,60,151,15,181 1065db 137,137,30,137,60,151,15,181 1066db 20,20,80,20,160,68,40,180 1067db 20,20,80,20,160,68,40,180 1068db 225,225,163,225,91,66,223,186 1069db 225,225,163,225,91,66,223,186 1070db 22,22,88,22,176,78,44,166 1071db 22,22,88,22,176,78,44,166 1072db 58,58,232,58,205,210,116,247 1073db 58,58,232,58,205,210,116,247 1074db 105,105,185,105,111,208,210,6 1075db 105,105,185,105,111,208,210,6 1076db 9,9,36,9,72,45,18,65 1077db 9,9,36,9,72,45,18,65 1078db 112,112,221,112,167,173,224,215 1079db 112,112,221,112,167,173,224,215 1080db 182,182,226,182,217,84,113,111 1081db 182,182,226,182,217,84,113,111 1082db 208,208,103,208,206,183,189,30 1083db 208,208,103,208,206,183,189,30 1084db 237,237,147,237,59,126,199,214 1085db 237,237,147,237,59,126,199,214 1086db 204,204,23,204,46,219,133,226 1087db 204,204,23,204,46,219,133,226 1088db 66,66,21,66,42,87,132,104 1089db 66,66,21,66,42,87,132,104 1090db 152,152,90,152,180,194,45,44 1091db 152,152,90,152,180,194,45,44 1092db 164,164,170,164,73,14,85,237 1093db 164,164,170,164,73,14,85,237 1094db 40,40,160,40,93,136,80,117 1095db 40,40,160,40,93,136,80,117 1096db 92,92,109,92,218,49,184,134 1097db 92,92,109,92,218,49,184,134 1098db 248,248,199,248,147,63,237,107 1099db 248,248,199,248,147,63,237,107 1100db 134,134,34,134,68,164,17,194 1101db 134,134,34,134,68,164,17,194 1102db 24,35,198,232,135,184,1,79 1103db 54,166,210,245,121,111,145,82 1104db 96,188,155,142,163,12,123,53 1105db 29,224,215,194,46,75,254,87 1106db 21,119,55,229,159,240,74,218 1107db 88,201,41,10,177,160,107,133 1108db 189,93,16,244,203,62,5,103 1109db 228,39,65,139,167,125,149,216 1110db 251,238,124,102,221,23,71,158 1111db 202,45,191,7,173,90,131,51 1112