bf-686.s revision 95967
156293Sjkh # $FreeBSD: head/secure/lib/libcrypto/i386/bf-686.s 95967 2002-05-03 00:14:39Z peter $ 256293Sjkh # Dont even think of reading this code 356293Sjkh # It was automatically generated by bf-686.pl 456293Sjkh # Which is a perl program used to generate the x86 assember for 556293Sjkh # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris 656293Sjkh # eric <eay@cryptsoft.com> 756293Sjkh 856293Sjkh .file "bf-686.s" 956293Sjkh .version "01.01" 1056293Sjkhgcc2_compiled.: 1156293Sjkh.text 1256293Sjkh .align 16 1356293Sjkh.globl BF_encrypt 1456293Sjkh .type BF_encrypt,@function 1556293SjkhBF_encrypt: 1677837Sphk pushl %ebp 1756293Sjkh pushl %ebx 1856293Sjkh pushl %esi 1956293Sjkh pushl %edi 2056293Sjkh 2156293Sjkh 2256293Sjkh # Load the 2 words 2356293Sjkh movl 20(%esp), %eax 2456293Sjkh movl (%eax), %ecx 2556293Sjkh movl 4(%eax), %edx 2656293Sjkh 27119418Sobrien # P pointer, s and enc flag 28119418Sobrien movl 24(%esp), %edi 29119418Sobrien xorl %eax, %eax 3056293Sjkh xorl %ebx, %ebx 3156293Sjkh xorl (%edi), %ecx 3256293Sjkh 3356293Sjkh # Round 0 3456293Sjkh rorl $16, %ecx 3556293Sjkh movl 4(%edi), %esi 3656293Sjkh movb %ch, %al 3756293Sjkh movb %cl, %bl 38129879Sphk rorl $16, %ecx 3956293Sjkh xorl %esi, %edx 4056293Sjkh movl 72(%edi,%eax,4),%esi 4156293Sjkh movl 1096(%edi,%ebx,4),%ebp 4256293Sjkh movb %ch, %al 4356293Sjkh movb %cl, %bl 4456293Sjkh addl %ebp, %esi 4556293Sjkh movl 2120(%edi,%eax,4),%eax 4656293Sjkh xorl %eax, %esi 4756293Sjkh movl 3144(%edi,%ebx,4),%ebp 4856293Sjkh addl %ebp, %esi 4956293Sjkh xorl %eax, %eax 5056293Sjkh xorl %esi, %edx 5156293Sjkh 5256293Sjkh # Round 1 5356293Sjkh rorl $16, %edx 5456293Sjkh movl 8(%edi), %esi 5556293Sjkh movb %dh, %al 5656293Sjkh movb %dl, %bl 5756293Sjkh rorl $16, %edx 5856293Sjkh xorl %esi, %ecx 5956293Sjkh movl 72(%edi,%eax,4),%esi 6056293Sjkh movl 1096(%edi,%ebx,4),%ebp 6156293Sjkh movb %dh, %al 6256293Sjkh movb %dl, %bl 6356293Sjkh addl %ebp, %esi 6456293Sjkh movl 2120(%edi,%eax,4),%eax 6556293Sjkh xorl %eax, %esi 6656293Sjkh movl 3144(%edi,%ebx,4),%ebp 6756293Sjkh addl %ebp, %esi 6856293Sjkh xorl %eax, %eax 6956293Sjkh xorl %esi, %ecx 7056293Sjkh 7156293Sjkh # Round 2 72126080Sphk rorl $16, %ecx 73126080Sphk movl 12(%edi), %esi 74111815Sphk movb %ch, %al 75111815Sphk movb %cl, %bl 76111815Sphk rorl $16, %ecx 77111815Sphk xorl %esi, %edx 7856293Sjkh movl 72(%edi,%eax,4),%esi 7956293Sjkh movl 1096(%edi,%ebx,4),%ebp 8056293Sjkh movb %ch, %al 8156293Sjkh movb %cl, %bl 8256293Sjkh addl %ebp, %esi 8356293Sjkh movl 2120(%edi,%eax,4),%eax 8456293Sjkh xorl %eax, %esi 8556293Sjkh movl 3144(%edi,%ebx,4),%ebp 8656293Sjkh addl %ebp, %esi 8756293Sjkh xorl %eax, %eax 8856293Sjkh xorl %esi, %edx 8956293Sjkh 9056293Sjkh # Round 3 9156293Sjkh rorl $16, %edx 9256293Sjkh movl 16(%edi), %esi 9356293Sjkh movb %dh, %al 9456293Sjkh movb %dl, %bl 9556293Sjkh rorl $16, %edx 9656293Sjkh xorl %esi, %ecx 9756293Sjkh movl 72(%edi,%eax,4),%esi 9856293Sjkh movl 1096(%edi,%ebx,4),%ebp 9956293Sjkh movb %dh, %al 10056293Sjkh movb %dl, %bl 10156293Sjkh addl %ebp, %esi 10256293Sjkh movl 2120(%edi,%eax,4),%eax 10356293Sjkh xorl %eax, %esi 10456293Sjkh movl 3144(%edi,%ebx,4),%ebp 10556293Sjkh addl %ebp, %esi 10656293Sjkh xorl %eax, %eax 10756293Sjkh xorl %esi, %ecx 10856293Sjkh 10956293Sjkh # Round 4 11056293Sjkh rorl $16, %ecx 11156293Sjkh movl 20(%edi), %esi 11256293Sjkh movb %ch, %al 11356293Sjkh movb %cl, %bl 11456293Sjkh rorl $16, %ecx 11556293Sjkh xorl %esi, %edx 11656293Sjkh movl 72(%edi,%eax,4),%esi 11756455Speter movl 1096(%edi,%ebx,4),%ebp 11856455Speter movb %ch, %al 11956455Speter movb %cl, %bl 12056455Speter addl %ebp, %esi 121127189Sguido movl 2120(%edi,%eax,4),%eax 122127189Sguido xorl %eax, %esi 123127189Sguido movl 3144(%edi,%ebx,4),%ebp 124127189Sguido addl %ebp, %esi 125127189Sguido xorl %eax, %eax 12656455Speter xorl %esi, %edx 12756455Speter 12856293Sjkh # Round 5 12956293Sjkh rorl $16, %edx 13056293Sjkh movl 24(%edi), %esi 13156293Sjkh movb %dh, %al 13256293Sjkh movb %dl, %bl 13356293Sjkh rorl $16, %edx 13456293Sjkh xorl %esi, %ecx 13556293Sjkh movl 72(%edi,%eax,4),%esi 13656293Sjkh movl 1096(%edi,%ebx,4),%ebp 13756293Sjkh movb %dh, %al 13856293Sjkh movb %dl, %bl 13956293Sjkh addl %ebp, %esi 14056293Sjkh movl 2120(%edi,%eax,4),%eax 14156293Sjkh xorl %eax, %esi 14256293Sjkh movl 3144(%edi,%ebx,4),%ebp 14356293Sjkh addl %ebp, %esi 14456293Sjkh xorl %eax, %eax 14556293Sjkh xorl %esi, %ecx 14656293Sjkh 14756293Sjkh # Round 6 14856293Sjkh rorl $16, %ecx 149108321Srwatson movl 28(%edi), %esi 15056293Sjkh movb %ch, %al 15156293Sjkh movb %cl, %bl 15256293Sjkh rorl $16, %ecx 15356293Sjkh xorl %esi, %edx 15456293Sjkh movl 72(%edi,%eax,4),%esi 155130585Sphk movl 1096(%edi,%ebx,4),%ebp 15656293Sjkh movb %ch, %al 15756293Sjkh movb %cl, %bl 15856293Sjkh addl %ebp, %esi 15956293Sjkh movl 2120(%edi,%eax,4),%eax 16056293Sjkh xorl %eax, %esi 16156293Sjkh movl 3144(%edi,%ebx,4),%ebp 16256293Sjkh addl %ebp, %esi 16356293Sjkh xorl %eax, %eax 16456293Sjkh xorl %esi, %edx 16556293Sjkh 16656293Sjkh # Round 7 16756293Sjkh rorl $16, %edx 16856293Sjkh movl 32(%edi), %esi 16956293Sjkh movb %dh, %al 17056293Sjkh movb %dl, %bl 17156293Sjkh rorl $16, %edx 17256293Sjkh xorl %esi, %ecx 17356293Sjkh movl 72(%edi,%eax,4),%esi 17456293Sjkh movl 1096(%edi,%ebx,4),%ebp 17556293Sjkh movb %dh, %al 176130585Sphk movb %dl, %bl 17756293Sjkh addl %ebp, %esi 17856293Sjkh movl 2120(%edi,%eax,4),%eax 17956293Sjkh xorl %eax, %esi 18056293Sjkh movl 3144(%edi,%ebx,4),%ebp 18156293Sjkh addl %ebp, %esi 18256293Sjkh xorl %eax, %eax 18356293Sjkh xorl %esi, %ecx 18477837Sphk 18556293Sjkh # Round 8 18656293Sjkh rorl $16, %ecx 18756293Sjkh movl 36(%edi), %esi 18856293Sjkh movb %ch, %al 18956293Sjkh movb %cl, %bl 19056293Sjkh rorl $16, %ecx 191130585Sphk xorl %esi, %edx 19256293Sjkh movl 72(%edi,%eax,4),%esi 19356293Sjkh movl 1096(%edi,%ebx,4),%ebp 19456293Sjkh movb %ch, %al 19556293Sjkh movb %cl, %bl 19656293Sjkh addl %ebp, %esi 19756293Sjkh movl 2120(%edi,%eax,4),%eax 19856293Sjkh xorl %eax, %esi 19956293Sjkh movl 3144(%edi,%ebx,4),%ebp 20056293Sjkh addl %ebp, %esi 20156293Sjkh xorl %eax, %eax 20256293Sjkh xorl %esi, %edx 20356293Sjkh 20456293Sjkh # Round 9 20556293Sjkh rorl $16, %edx 20656293Sjkh movl 40(%edi), %esi 20756293Sjkh movb %dh, %al 20856293Sjkh movb %dl, %bl 20956293Sjkh rorl $16, %edx 21056293Sjkh xorl %esi, %ecx 211130585Sphk movl 72(%edi,%eax,4),%esi 21256293Sjkh movl 1096(%edi,%ebx,4),%ebp 21356293Sjkh movb %dh, %al 21456293Sjkh movb %dl, %bl 21556293Sjkh addl %ebp, %esi 21656293Sjkh movl 2120(%edi,%eax,4),%eax 21756293Sjkh xorl %eax, %esi 21856293Sjkh movl 3144(%edi,%ebx,4),%ebp 21956293Sjkh addl %ebp, %esi 22077837Sphk xorl %eax, %eax 22156293Sjkh xorl %esi, %ecx 22256293Sjkh 22356293Sjkh # Round 10 22456293Sjkh rorl $16, %ecx 22556293Sjkh movl 44(%edi), %esi 22656293Sjkh movb %ch, %al 22756293Sjkh movb %cl, %bl 22856293Sjkh rorl $16, %ecx 22956293Sjkh xorl %esi, %edx 23056293Sjkh movl 72(%edi,%eax,4),%esi 23156293Sjkh movl 1096(%edi,%ebx,4),%ebp 23256293Sjkh movb %ch, %al 23356293Sjkh movb %cl, %bl 23456293Sjkh addl %ebp, %esi 235130585Sphk movl 2120(%edi,%eax,4),%eax 23656293Sjkh xorl %eax, %esi 23756293Sjkh movl 3144(%edi,%ebx,4),%ebp 23856293Sjkh addl %ebp, %esi 23956293Sjkh xorl %eax, %eax 24056293Sjkh xorl %esi, %edx 24156293Sjkh 24256293Sjkh # Round 11 24356293Sjkh rorl $16, %edx 24456293Sjkh movl 48(%edi), %esi 24556293Sjkh movb %dh, %al 24656293Sjkh movb %dl, %bl 24756293Sjkh rorl $16, %edx 24856293Sjkh xorl %esi, %ecx 24956293Sjkh movl 72(%edi,%eax,4),%esi 25056293Sjkh movl 1096(%edi,%ebx,4),%ebp 25156293Sjkh movb %dh, %al 25256293Sjkh movb %dl, %bl 25356293Sjkh addl %ebp, %esi 25456293Sjkh movl 2120(%edi,%eax,4),%eax 25556293Sjkh xorl %eax, %esi 25656293Sjkh movl 3144(%edi,%ebx,4),%ebp 25756293Sjkh addl %ebp, %esi 25856293Sjkh xorl %eax, %eax 25956293Sjkh xorl %esi, %ecx 26056293Sjkh 26156293Sjkh # Round 12 26256293Sjkh rorl $16, %ecx 26356293Sjkh movl 52(%edi), %esi 26456293Sjkh movb %ch, %al 26556293Sjkh movb %cl, %bl 26656293Sjkh rorl $16, %ecx 26756293Sjkh xorl %esi, %edx 26856293Sjkh movl 72(%edi,%eax,4),%esi 26956293Sjkh movl 1096(%edi,%ebx,4),%ebp 27056293Sjkh movb %ch, %al 27156293Sjkh movb %cl, %bl 27256293Sjkh addl %ebp, %esi 27356293Sjkh movl 2120(%edi,%eax,4),%eax 274130585Sphk xorl %eax, %esi 27556293Sjkh movl 3144(%edi,%ebx,4),%ebp 27656293Sjkh addl %ebp, %esi 27756293Sjkh xorl %eax, %eax 27856293Sjkh xorl %esi, %edx 27956293Sjkh 28056293Sjkh # Round 13 28156293Sjkh rorl $16, %edx 28256293Sjkh movl 56(%edi), %esi 28356293Sjkh movb %dh, %al 28456293Sjkh movb %dl, %bl 28556293Sjkh rorl $16, %edx 28656293Sjkh xorl %esi, %ecx 28756293Sjkh movl 72(%edi,%eax,4),%esi 28856293Sjkh movl 1096(%edi,%ebx,4),%ebp 28956293Sjkh movb %dh, %al 29056293Sjkh movb %dl, %bl 29156293Sjkh addl %ebp, %esi 29256293Sjkh movl 2120(%edi,%eax,4),%eax 29356293Sjkh xorl %eax, %esi 29456293Sjkh movl 3144(%edi,%ebx,4),%ebp 29556293Sjkh addl %ebp, %esi 29656293Sjkh xorl %eax, %eax 29756293Sjkh xorl %esi, %ecx 29856293Sjkh 29956293Sjkh # Round 14 30056293Sjkh rorl $16, %ecx 30156293Sjkh movl 60(%edi), %esi 30256293Sjkh movb %ch, %al 303106564Sjhb movb %cl, %bl 304130585Sphk rorl $16, %ecx 30556293Sjkh xorl %esi, %edx 30656293Sjkh movl 72(%edi,%eax,4),%esi 30756293Sjkh movl 1096(%edi,%ebx,4),%ebp 30856293Sjkh movb %ch, %al 30956293Sjkh movb %cl, %bl 31057352Ssheldonh addl %ebp, %esi 31157352Ssheldonh movl 2120(%edi,%eax,4),%eax 31257352Ssheldonh xorl %eax, %esi 31356293Sjkh movl 3144(%edi,%ebx,4),%ebp 31456293Sjkh addl %ebp, %esi 31556293Sjkh xorl %eax, %eax 31656293Sjkh xorl %esi, %edx 31756293Sjkh 31856293Sjkh # Round 15 31956293Sjkh rorl $16, %edx 32056293Sjkh movl 64(%edi), %esi 32156293Sjkh movb %dh, %al 32256293Sjkh movb %dl, %bl 32356293Sjkh rorl $16, %edx 32456293Sjkh xorl %esi, %ecx 32556293Sjkh movl 72(%edi,%eax,4),%esi 32656455Speter movl 1096(%edi,%ebx,4),%ebp 32756455Speter movb %dh, %al 32856455Speter movb %dl, %bl 32956455Speter addl %ebp, %esi 33056455Speter movl 2120(%edi,%eax,4),%eax 33156455Speter xorl %eax, %esi 33256455Speter movl 3144(%edi,%ebx,4),%ebp 33356455Speter addl %ebp, %esi 33456455Speter xorl %eax, %eax 33556455Speter xorl %esi, %ecx 33656455Speter xorl 68(%edi), %edx 33756455Speter movl 20(%esp), %eax 33856455Speter movl %edx, (%eax) 33956455Speter movl %ecx, 4(%eax) 34056455Speter popl %edi 34156293Sjkh popl %esi 342 popl %ebx 343 popl %ebp 344 ret 345.L_BF_encrypt_end: 346 .size BF_encrypt,.L_BF_encrypt_end-BF_encrypt 347.ident "desasm.pl" 348.text 349 .align 16 350.globl BF_decrypt 351 .type BF_decrypt,@function 352BF_decrypt: 353 pushl %ebp 354 pushl %ebx 355 pushl %esi 356 pushl %edi 357 358 359 # Load the 2 words 360 movl 20(%esp), %eax 361 movl (%eax), %ecx 362 movl 4(%eax), %edx 363 364 # P pointer, s and enc flag 365 movl 24(%esp), %edi 366 xorl %eax, %eax 367 xorl %ebx, %ebx 368 xorl 68(%edi), %ecx 369 370 # Round 16 371 rorl $16, %ecx 372 movl 64(%edi), %esi 373 movb %ch, %al 374 movb %cl, %bl 375 rorl $16, %ecx 376 xorl %esi, %edx 377 movl 72(%edi,%eax,4),%esi 378 movl 1096(%edi,%ebx,4),%ebp 379 movb %ch, %al 380 movb %cl, %bl 381 addl %ebp, %esi 382 movl 2120(%edi,%eax,4),%eax 383 xorl %eax, %esi 384 movl 3144(%edi,%ebx,4),%ebp 385 addl %ebp, %esi 386 xorl %eax, %eax 387 xorl %esi, %edx 388 389 # Round 15 390 rorl $16, %edx 391 movl 60(%edi), %esi 392 movb %dh, %al 393 movb %dl, %bl 394 rorl $16, %edx 395 xorl %esi, %ecx 396 movl 72(%edi,%eax,4),%esi 397 movl 1096(%edi,%ebx,4),%ebp 398 movb %dh, %al 399 movb %dl, %bl 400 addl %ebp, %esi 401 movl 2120(%edi,%eax,4),%eax 402 xorl %eax, %esi 403 movl 3144(%edi,%ebx,4),%ebp 404 addl %ebp, %esi 405 xorl %eax, %eax 406 xorl %esi, %ecx 407 408 # Round 14 409 rorl $16, %ecx 410 movl 56(%edi), %esi 411 movb %ch, %al 412 movb %cl, %bl 413 rorl $16, %ecx 414 xorl %esi, %edx 415 movl 72(%edi,%eax,4),%esi 416 movl 1096(%edi,%ebx,4),%ebp 417 movb %ch, %al 418 movb %cl, %bl 419 addl %ebp, %esi 420 movl 2120(%edi,%eax,4),%eax 421 xorl %eax, %esi 422 movl 3144(%edi,%ebx,4),%ebp 423 addl %ebp, %esi 424 xorl %eax, %eax 425 xorl %esi, %edx 426 427 # Round 13 428 rorl $16, %edx 429 movl 52(%edi), %esi 430 movb %dh, %al 431 movb %dl, %bl 432 rorl $16, %edx 433 xorl %esi, %ecx 434 movl 72(%edi,%eax,4),%esi 435 movl 1096(%edi,%ebx,4),%ebp 436 movb %dh, %al 437 movb %dl, %bl 438 addl %ebp, %esi 439 movl 2120(%edi,%eax,4),%eax 440 xorl %eax, %esi 441 movl 3144(%edi,%ebx,4),%ebp 442 addl %ebp, %esi 443 xorl %eax, %eax 444 xorl %esi, %ecx 445 446 # Round 12 447 rorl $16, %ecx 448 movl 48(%edi), %esi 449 movb %ch, %al 450 movb %cl, %bl 451 rorl $16, %ecx 452 xorl %esi, %edx 453 movl 72(%edi,%eax,4),%esi 454 movl 1096(%edi,%ebx,4),%ebp 455 movb %ch, %al 456 movb %cl, %bl 457 addl %ebp, %esi 458 movl 2120(%edi,%eax,4),%eax 459 xorl %eax, %esi 460 movl 3144(%edi,%ebx,4),%ebp 461 addl %ebp, %esi 462 xorl %eax, %eax 463 xorl %esi, %edx 464 465 # Round 11 466 rorl $16, %edx 467 movl 44(%edi), %esi 468 movb %dh, %al 469 movb %dl, %bl 470 rorl $16, %edx 471 xorl %esi, %ecx 472 movl 72(%edi,%eax,4),%esi 473 movl 1096(%edi,%ebx,4),%ebp 474 movb %dh, %al 475 movb %dl, %bl 476 addl %ebp, %esi 477 movl 2120(%edi,%eax,4),%eax 478 xorl %eax, %esi 479 movl 3144(%edi,%ebx,4),%ebp 480 addl %ebp, %esi 481 xorl %eax, %eax 482 xorl %esi, %ecx 483 484 # Round 10 485 rorl $16, %ecx 486 movl 40(%edi), %esi 487 movb %ch, %al 488 movb %cl, %bl 489 rorl $16, %ecx 490 xorl %esi, %edx 491 movl 72(%edi,%eax,4),%esi 492 movl 1096(%edi,%ebx,4),%ebp 493 movb %ch, %al 494 movb %cl, %bl 495 addl %ebp, %esi 496 movl 2120(%edi,%eax,4),%eax 497 xorl %eax, %esi 498 movl 3144(%edi,%ebx,4),%ebp 499 addl %ebp, %esi 500 xorl %eax, %eax 501 xorl %esi, %edx 502 503 # Round 9 504 rorl $16, %edx 505 movl 36(%edi), %esi 506 movb %dh, %al 507 movb %dl, %bl 508 rorl $16, %edx 509 xorl %esi, %ecx 510 movl 72(%edi,%eax,4),%esi 511 movl 1096(%edi,%ebx,4),%ebp 512 movb %dh, %al 513 movb %dl, %bl 514 addl %ebp, %esi 515 movl 2120(%edi,%eax,4),%eax 516 xorl %eax, %esi 517 movl 3144(%edi,%ebx,4),%ebp 518 addl %ebp, %esi 519 xorl %eax, %eax 520 xorl %esi, %ecx 521 522 # Round 8 523 rorl $16, %ecx 524 movl 32(%edi), %esi 525 movb %ch, %al 526 movb %cl, %bl 527 rorl $16, %ecx 528 xorl %esi, %edx 529 movl 72(%edi,%eax,4),%esi 530 movl 1096(%edi,%ebx,4),%ebp 531 movb %ch, %al 532 movb %cl, %bl 533 addl %ebp, %esi 534 movl 2120(%edi,%eax,4),%eax 535 xorl %eax, %esi 536 movl 3144(%edi,%ebx,4),%ebp 537 addl %ebp, %esi 538 xorl %eax, %eax 539 xorl %esi, %edx 540 541 # Round 7 542 rorl $16, %edx 543 movl 28(%edi), %esi 544 movb %dh, %al 545 movb %dl, %bl 546 rorl $16, %edx 547 xorl %esi, %ecx 548 movl 72(%edi,%eax,4),%esi 549 movl 1096(%edi,%ebx,4),%ebp 550 movb %dh, %al 551 movb %dl, %bl 552 addl %ebp, %esi 553 movl 2120(%edi,%eax,4),%eax 554 xorl %eax, %esi 555 movl 3144(%edi,%ebx,4),%ebp 556 addl %ebp, %esi 557 xorl %eax, %eax 558 xorl %esi, %ecx 559 560 # Round 6 561 rorl $16, %ecx 562 movl 24(%edi), %esi 563 movb %ch, %al 564 movb %cl, %bl 565 rorl $16, %ecx 566 xorl %esi, %edx 567 movl 72(%edi,%eax,4),%esi 568 movl 1096(%edi,%ebx,4),%ebp 569 movb %ch, %al 570 movb %cl, %bl 571 addl %ebp, %esi 572 movl 2120(%edi,%eax,4),%eax 573 xorl %eax, %esi 574 movl 3144(%edi,%ebx,4),%ebp 575 addl %ebp, %esi 576 xorl %eax, %eax 577 xorl %esi, %edx 578 579 # Round 5 580 rorl $16, %edx 581 movl 20(%edi), %esi 582 movb %dh, %al 583 movb %dl, %bl 584 rorl $16, %edx 585 xorl %esi, %ecx 586 movl 72(%edi,%eax,4),%esi 587 movl 1096(%edi,%ebx,4),%ebp 588 movb %dh, %al 589 movb %dl, %bl 590 addl %ebp, %esi 591 movl 2120(%edi,%eax,4),%eax 592 xorl %eax, %esi 593 movl 3144(%edi,%ebx,4),%ebp 594 addl %ebp, %esi 595 xorl %eax, %eax 596 xorl %esi, %ecx 597 598 # Round 4 599 rorl $16, %ecx 600 movl 16(%edi), %esi 601 movb %ch, %al 602 movb %cl, %bl 603 rorl $16, %ecx 604 xorl %esi, %edx 605 movl 72(%edi,%eax,4),%esi 606 movl 1096(%edi,%ebx,4),%ebp 607 movb %ch, %al 608 movb %cl, %bl 609 addl %ebp, %esi 610 movl 2120(%edi,%eax,4),%eax 611 xorl %eax, %esi 612 movl 3144(%edi,%ebx,4),%ebp 613 addl %ebp, %esi 614 xorl %eax, %eax 615 xorl %esi, %edx 616 617 # Round 3 618 rorl $16, %edx 619 movl 12(%edi), %esi 620 movb %dh, %al 621 movb %dl, %bl 622 rorl $16, %edx 623 xorl %esi, %ecx 624 movl 72(%edi,%eax,4),%esi 625 movl 1096(%edi,%ebx,4),%ebp 626 movb %dh, %al 627 movb %dl, %bl 628 addl %ebp, %esi 629 movl 2120(%edi,%eax,4),%eax 630 xorl %eax, %esi 631 movl 3144(%edi,%ebx,4),%ebp 632 addl %ebp, %esi 633 xorl %eax, %eax 634 xorl %esi, %ecx 635 636 # Round 2 637 rorl $16, %ecx 638 movl 8(%edi), %esi 639 movb %ch, %al 640 movb %cl, %bl 641 rorl $16, %ecx 642 xorl %esi, %edx 643 movl 72(%edi,%eax,4),%esi 644 movl 1096(%edi,%ebx,4),%ebp 645 movb %ch, %al 646 movb %cl, %bl 647 addl %ebp, %esi 648 movl 2120(%edi,%eax,4),%eax 649 xorl %eax, %esi 650 movl 3144(%edi,%ebx,4),%ebp 651 addl %ebp, %esi 652 xorl %eax, %eax 653 xorl %esi, %edx 654 655 # Round 1 656 rorl $16, %edx 657 movl 4(%edi), %esi 658 movb %dh, %al 659 movb %dl, %bl 660 rorl $16, %edx 661 xorl %esi, %ecx 662 movl 72(%edi,%eax,4),%esi 663 movl 1096(%edi,%ebx,4),%ebp 664 movb %dh, %al 665 movb %dl, %bl 666 addl %ebp, %esi 667 movl 2120(%edi,%eax,4),%eax 668 xorl %eax, %esi 669 movl 3144(%edi,%ebx,4),%ebp 670 addl %ebp, %esi 671 xorl %eax, %eax 672 xorl %esi, %ecx 673 xorl (%edi), %edx 674 movl 20(%esp), %eax 675 movl %edx, (%eax) 676 movl %ecx, 4(%eax) 677 popl %edi 678 popl %esi 679 popl %ebx 680 popl %ebp 681 ret 682.L_BF_decrypt_end: 683 .size BF_decrypt,.L_BF_decrypt_end-BF_decrypt 684.ident "desasm.pl" 685.text 686 .align 16 687.globl BF_cbc_encrypt 688 .type BF_cbc_encrypt,@function 689BF_cbc_encrypt: 690 691 pushl %ebp 692 pushl %ebx 693 pushl %esi 694 pushl %edi 695 movl 28(%esp), %ebp 696 # getting iv ptr from parameter 4 697 movl 36(%esp), %ebx 698 movl (%ebx), %esi 699 movl 4(%ebx), %edi 700 pushl %edi 701 pushl %esi 702 pushl %edi 703 pushl %esi 704 movl %esp, %ebx 705 movl 36(%esp), %esi 706 movl 40(%esp), %edi 707 # getting encrypt flag from parameter 5 708 movl 56(%esp), %ecx 709 # get and push parameter 3 710 movl 48(%esp), %eax 711 pushl %eax 712 pushl %ebx 713 cmpl $0, %ecx 714 jz .L000decrypt 715 andl $4294967288, %ebp 716 movl 8(%esp), %eax 717 movl 12(%esp), %ebx 718 jz .L001encrypt_finish 719.L002encrypt_loop: 720 movl (%esi), %ecx 721 movl 4(%esi), %edx 722 xorl %ecx, %eax 723 xorl %edx, %ebx 724.byte 15 725.byte 200 # bswapl %eax 726.byte 15 727.byte 203 # bswapl %ebx 728 movl %eax, 8(%esp) 729 movl %ebx, 12(%esp) 730 call BF_encrypt 731 movl 8(%esp), %eax 732 movl 12(%esp), %ebx 733.byte 15 734.byte 200 # bswapl %eax 735.byte 15 736.byte 203 # bswapl %ebx 737 movl %eax, (%edi) 738 movl %ebx, 4(%edi) 739 addl $8, %esi 740 addl $8, %edi 741 subl $8, %ebp 742 jnz .L002encrypt_loop 743.L001encrypt_finish: 744 movl 52(%esp), %ebp 745 andl $7, %ebp 746 jz .L003finish 747 xorl %ecx, %ecx 748 xorl %edx, %edx 749 movl .L004cbc_enc_jmp_table(,%ebp,4),%ebp 750 jmp *%ebp 751.L005ej7: 752 movb 6(%esi), %dh 753 sall $8, %edx 754.L006ej6: 755 movb 5(%esi), %dh 756.L007ej5: 757 movb 4(%esi), %dl 758.L008ej4: 759 movl (%esi), %ecx 760 jmp .L009ejend 761.L010ej3: 762 movb 2(%esi), %ch 763 sall $8, %ecx 764.L011ej2: 765 movb 1(%esi), %ch 766.L012ej1: 767 movb (%esi), %cl 768.L009ejend: 769 xorl %ecx, %eax 770 xorl %edx, %ebx 771.byte 15 772.byte 200 # bswapl %eax 773.byte 15 774.byte 203 # bswapl %ebx 775 movl %eax, 8(%esp) 776 movl %ebx, 12(%esp) 777 call BF_encrypt 778 movl 8(%esp), %eax 779 movl 12(%esp), %ebx 780.byte 15 781.byte 200 # bswapl %eax 782.byte 15 783.byte 203 # bswapl %ebx 784 movl %eax, (%edi) 785 movl %ebx, 4(%edi) 786 jmp .L003finish 787.align 16 788.L000decrypt: 789 andl $4294967288, %ebp 790 movl 16(%esp), %eax 791 movl 20(%esp), %ebx 792 jz .L013decrypt_finish 793.L014decrypt_loop: 794 movl (%esi), %eax 795 movl 4(%esi), %ebx 796.byte 15 797.byte 200 # bswapl %eax 798.byte 15 799.byte 203 # bswapl %ebx 800 movl %eax, 8(%esp) 801 movl %ebx, 12(%esp) 802 call BF_decrypt 803 movl 8(%esp), %eax 804 movl 12(%esp), %ebx 805.byte 15 806.byte 200 # bswapl %eax 807.byte 15 808.byte 203 # bswapl %ebx 809 movl 16(%esp), %ecx 810 movl 20(%esp), %edx 811 xorl %eax, %ecx 812 xorl %ebx, %edx 813 movl (%esi), %eax 814 movl 4(%esi), %ebx 815 movl %ecx, (%edi) 816 movl %edx, 4(%edi) 817 movl %eax, 16(%esp) 818 movl %ebx, 20(%esp) 819 addl $8, %esi 820 addl $8, %edi 821 subl $8, %ebp 822 jnz .L014decrypt_loop 823.L013decrypt_finish: 824 movl 52(%esp), %ebp 825 andl $7, %ebp 826 jz .L003finish 827 movl (%esi), %eax 828 movl 4(%esi), %ebx 829.byte 15 830.byte 200 # bswapl %eax 831.byte 15 832.byte 203 # bswapl %ebx 833 movl %eax, 8(%esp) 834 movl %ebx, 12(%esp) 835 call BF_decrypt 836 movl 8(%esp), %eax 837 movl 12(%esp), %ebx 838.byte 15 839.byte 200 # bswapl %eax 840.byte 15 841.byte 203 # bswapl %ebx 842 movl 16(%esp), %ecx 843 movl 20(%esp), %edx 844 xorl %eax, %ecx 845 xorl %ebx, %edx 846 movl (%esi), %eax 847 movl 4(%esi), %ebx 848.L015dj7: 849 rorl $16, %edx 850 movb %dl, 6(%edi) 851 shrl $16, %edx 852.L016dj6: 853 movb %dh, 5(%edi) 854.L017dj5: 855 movb %dl, 4(%edi) 856.L018dj4: 857 movl %ecx, (%edi) 858 jmp .L019djend 859.L020dj3: 860 rorl $16, %ecx 861 movb %cl, 2(%edi) 862 sall $16, %ecx 863.L021dj2: 864 movb %ch, 1(%esi) 865.L022dj1: 866 movb %cl, (%esi) 867.L019djend: 868 jmp .L003finish 869.align 16 870.L003finish: 871 movl 60(%esp), %ecx 872 addl $24, %esp 873 movl %eax, (%ecx) 874 movl %ebx, 4(%ecx) 875 popl %edi 876 popl %esi 877 popl %ebx 878 popl %ebp 879 ret 880.align 16 881.L004cbc_enc_jmp_table: 882 .long 0 883 .long .L012ej1 884 .long .L011ej2 885 .long .L010ej3 886 .long .L008ej4 887 .long .L007ej5 888 .long .L006ej6 889 .long .L005ej7 890.align 16 891.L023cbc_dec_jmp_table: 892 .long 0 893 .long .L022dj1 894 .long .L021dj2 895 .long .L020dj3 896 .long .L018dj4 897 .long .L017dj5 898 .long .L016dj6 899 .long .L015dj7 900.L_BF_cbc_encrypt_end: 901 .size BF_cbc_encrypt,.L_BF_cbc_encrypt_end-BF_cbc_encrypt 902.ident "desasm.pl" 903