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 _Camellia_EncryptBlock_Rounds 10align 16 11_Camellia_EncryptBlock_Rounds: 12L$_Camellia_EncryptBlock_Rounds_begin: 13 push ebp 14 push ebx 15 push esi 16 push edi 17 mov eax,DWORD [20+esp] 18 mov esi,DWORD [24+esp] 19 mov edi,DWORD [28+esp] 20 mov ebx,esp 21 sub esp,28 22 and esp,-64 23 lea ecx,[edi-127] 24 sub ecx,esp 25 neg ecx 26 and ecx,960 27 sub esp,ecx 28 add esp,4 29 shl eax,6 30 lea eax,[eax*1+edi] 31 mov DWORD [20+esp],ebx 32 mov DWORD [16+esp],eax 33 call L$000pic_point 34L$000pic_point: 35 pop ebp 36 lea ebp,[(L$Camellia_SBOX-L$000pic_point)+ebp] 37 mov eax,DWORD [esi] 38 mov ebx,DWORD [4+esi] 39 mov ecx,DWORD [8+esi] 40 bswap eax 41 mov edx,DWORD [12+esi] 42 bswap ebx 43 bswap ecx 44 bswap edx 45 call __x86_Camellia_encrypt 46 mov esp,DWORD [20+esp] 47 bswap eax 48 mov esi,DWORD [32+esp] 49 bswap ebx 50 bswap ecx 51 bswap edx 52 mov DWORD [esi],eax 53 mov DWORD [4+esi],ebx 54 mov DWORD [8+esi],ecx 55 mov DWORD [12+esi],edx 56 pop edi 57 pop esi 58 pop ebx 59 pop ebp 60 ret 61global _Camellia_EncryptBlock 62align 16 63_Camellia_EncryptBlock: 64L$_Camellia_EncryptBlock_begin: 65 mov eax,128 66 sub eax,DWORD [4+esp] 67 mov eax,3 68 adc eax,0 69 mov DWORD [4+esp],eax 70 jmp NEAR L$_Camellia_EncryptBlock_Rounds_begin 71global _Camellia_encrypt 72align 16 73_Camellia_encrypt: 74L$_Camellia_encrypt_begin: 75 push ebp 76 push ebx 77 push esi 78 push edi 79 mov esi,DWORD [20+esp] 80 mov edi,DWORD [28+esp] 81 mov ebx,esp 82 sub esp,28 83 and esp,-64 84 mov eax,DWORD [272+edi] 85 lea ecx,[edi-127] 86 sub ecx,esp 87 neg ecx 88 and ecx,960 89 sub esp,ecx 90 add esp,4 91 shl eax,6 92 lea eax,[eax*1+edi] 93 mov DWORD [20+esp],ebx 94 mov DWORD [16+esp],eax 95 call L$001pic_point 96L$001pic_point: 97 pop ebp 98 lea ebp,[(L$Camellia_SBOX-L$001pic_point)+ebp] 99 mov eax,DWORD [esi] 100 mov ebx,DWORD [4+esi] 101 mov ecx,DWORD [8+esi] 102 bswap eax 103 mov edx,DWORD [12+esi] 104 bswap ebx 105 bswap ecx 106 bswap edx 107 call __x86_Camellia_encrypt 108 mov esp,DWORD [20+esp] 109 bswap eax 110 mov esi,DWORD [24+esp] 111 bswap ebx 112 bswap ecx 113 bswap edx 114 mov DWORD [esi],eax 115 mov DWORD [4+esi],ebx 116 mov DWORD [8+esi],ecx 117 mov DWORD [12+esi],edx 118 pop edi 119 pop esi 120 pop ebx 121 pop ebp 122 ret 123align 16 124__x86_Camellia_encrypt: 125 xor eax,DWORD [edi] 126 xor ebx,DWORD [4+edi] 127 xor ecx,DWORD [8+edi] 128 xor edx,DWORD [12+edi] 129 mov esi,DWORD [16+edi] 130 mov DWORD [4+esp],eax 131 mov DWORD [8+esp],ebx 132 mov DWORD [12+esp],ecx 133 mov DWORD [16+esp],edx 134align 16 135L$002loop: 136 xor eax,esi 137 xor ebx,DWORD [20+edi] 138 movzx esi,ah 139 mov edx,DWORD [2052+esi*8+ebp] 140 movzx esi,al 141 xor edx,DWORD [4+esi*8+ebp] 142 shr eax,16 143 movzx esi,bl 144 mov ecx,DWORD [esi*8+ebp] 145 movzx esi,ah 146 xor edx,DWORD [esi*8+ebp] 147 movzx esi,bh 148 xor ecx,DWORD [4+esi*8+ebp] 149 shr ebx,16 150 movzx eax,al 151 xor edx,DWORD [2048+eax*8+ebp] 152 movzx esi,bh 153 mov eax,DWORD [16+esp] 154 xor ecx,edx 155 ror edx,8 156 xor ecx,DWORD [2048+esi*8+ebp] 157 movzx esi,bl 158 mov ebx,DWORD [12+esp] 159 xor edx,eax 160 xor ecx,DWORD [2052+esi*8+ebp] 161 mov esi,DWORD [24+edi] 162 xor edx,ecx 163 mov DWORD [16+esp],edx 164 xor ecx,ebx 165 mov DWORD [12+esp],ecx 166 xor ecx,esi 167 xor edx,DWORD [28+edi] 168 movzx esi,ch 169 mov ebx,DWORD [2052+esi*8+ebp] 170 movzx esi,cl 171 xor ebx,DWORD [4+esi*8+ebp] 172 shr ecx,16 173 movzx esi,dl 174 mov eax,DWORD [esi*8+ebp] 175 movzx esi,ch 176 xor ebx,DWORD [esi*8+ebp] 177 movzx esi,dh 178 xor eax,DWORD [4+esi*8+ebp] 179 shr edx,16 180 movzx ecx,cl 181 xor ebx,DWORD [2048+ecx*8+ebp] 182 movzx esi,dh 183 mov ecx,DWORD [8+esp] 184 xor eax,ebx 185 ror ebx,8 186 xor eax,DWORD [2048+esi*8+ebp] 187 movzx esi,dl 188 mov edx,DWORD [4+esp] 189 xor ebx,ecx 190 xor eax,DWORD [2052+esi*8+ebp] 191 mov esi,DWORD [32+edi] 192 xor ebx,eax 193 mov DWORD [8+esp],ebx 194 xor eax,edx 195 mov DWORD [4+esp],eax 196 xor eax,esi 197 xor ebx,DWORD [36+edi] 198 movzx esi,ah 199 mov edx,DWORD [2052+esi*8+ebp] 200 movzx esi,al 201 xor edx,DWORD [4+esi*8+ebp] 202 shr eax,16 203 movzx esi,bl 204 mov ecx,DWORD [esi*8+ebp] 205 movzx esi,ah 206 xor edx,DWORD [esi*8+ebp] 207 movzx esi,bh 208 xor ecx,DWORD [4+esi*8+ebp] 209 shr ebx,16 210 movzx eax,al 211 xor edx,DWORD [2048+eax*8+ebp] 212 movzx esi,bh 213 mov eax,DWORD [16+esp] 214 xor ecx,edx 215 ror edx,8 216 xor ecx,DWORD [2048+esi*8+ebp] 217 movzx esi,bl 218 mov ebx,DWORD [12+esp] 219 xor edx,eax 220 xor ecx,DWORD [2052+esi*8+ebp] 221 mov esi,DWORD [40+edi] 222 xor edx,ecx 223 mov DWORD [16+esp],edx 224 xor ecx,ebx 225 mov DWORD [12+esp],ecx 226 xor ecx,esi 227 xor edx,DWORD [44+edi] 228 movzx esi,ch 229 mov ebx,DWORD [2052+esi*8+ebp] 230 movzx esi,cl 231 xor ebx,DWORD [4+esi*8+ebp] 232 shr ecx,16 233 movzx esi,dl 234 mov eax,DWORD [esi*8+ebp] 235 movzx esi,ch 236 xor ebx,DWORD [esi*8+ebp] 237 movzx esi,dh 238 xor eax,DWORD [4+esi*8+ebp] 239 shr edx,16 240 movzx ecx,cl 241 xor ebx,DWORD [2048+ecx*8+ebp] 242 movzx esi,dh 243 mov ecx,DWORD [8+esp] 244 xor eax,ebx 245 ror ebx,8 246 xor eax,DWORD [2048+esi*8+ebp] 247 movzx esi,dl 248 mov edx,DWORD [4+esp] 249 xor ebx,ecx 250 xor eax,DWORD [2052+esi*8+ebp] 251 mov esi,DWORD [48+edi] 252 xor ebx,eax 253 mov DWORD [8+esp],ebx 254 xor eax,edx 255 mov DWORD [4+esp],eax 256 xor eax,esi 257 xor ebx,DWORD [52+edi] 258 movzx esi,ah 259 mov edx,DWORD [2052+esi*8+ebp] 260 movzx esi,al 261 xor edx,DWORD [4+esi*8+ebp] 262 shr eax,16 263 movzx esi,bl 264 mov ecx,DWORD [esi*8+ebp] 265 movzx esi,ah 266 xor edx,DWORD [esi*8+ebp] 267 movzx esi,bh 268 xor ecx,DWORD [4+esi*8+ebp] 269 shr ebx,16 270 movzx eax,al 271 xor edx,DWORD [2048+eax*8+ebp] 272 movzx esi,bh 273 mov eax,DWORD [16+esp] 274 xor ecx,edx 275 ror edx,8 276 xor ecx,DWORD [2048+esi*8+ebp] 277 movzx esi,bl 278 mov ebx,DWORD [12+esp] 279 xor edx,eax 280 xor ecx,DWORD [2052+esi*8+ebp] 281 mov esi,DWORD [56+edi] 282 xor edx,ecx 283 mov DWORD [16+esp],edx 284 xor ecx,ebx 285 mov DWORD [12+esp],ecx 286 xor ecx,esi 287 xor edx,DWORD [60+edi] 288 movzx esi,ch 289 mov ebx,DWORD [2052+esi*8+ebp] 290 movzx esi,cl 291 xor ebx,DWORD [4+esi*8+ebp] 292 shr ecx,16 293 movzx esi,dl 294 mov eax,DWORD [esi*8+ebp] 295 movzx esi,ch 296 xor ebx,DWORD [esi*8+ebp] 297 movzx esi,dh 298 xor eax,DWORD [4+esi*8+ebp] 299 shr edx,16 300 movzx ecx,cl 301 xor ebx,DWORD [2048+ecx*8+ebp] 302 movzx esi,dh 303 mov ecx,DWORD [8+esp] 304 xor eax,ebx 305 ror ebx,8 306 xor eax,DWORD [2048+esi*8+ebp] 307 movzx esi,dl 308 mov edx,DWORD [4+esp] 309 xor ebx,ecx 310 xor eax,DWORD [2052+esi*8+ebp] 311 mov esi,DWORD [64+edi] 312 xor ebx,eax 313 mov DWORD [8+esp],ebx 314 xor eax,edx 315 mov DWORD [4+esp],eax 316 add edi,64 317 cmp edi,DWORD [20+esp] 318 je NEAR L$003done 319 and esi,eax 320 mov edx,DWORD [16+esp] 321 rol esi,1 322 mov ecx,edx 323 xor ebx,esi 324 or ecx,DWORD [12+edi] 325 mov DWORD [8+esp],ebx 326 xor ecx,DWORD [12+esp] 327 mov esi,DWORD [4+edi] 328 mov DWORD [12+esp],ecx 329 or esi,ebx 330 and ecx,DWORD [8+edi] 331 xor eax,esi 332 rol ecx,1 333 mov DWORD [4+esp],eax 334 xor edx,ecx 335 mov esi,DWORD [16+edi] 336 mov DWORD [16+esp],edx 337 jmp NEAR L$002loop 338align 8 339L$003done: 340 mov ecx,eax 341 mov edx,ebx 342 mov eax,DWORD [12+esp] 343 mov ebx,DWORD [16+esp] 344 xor eax,esi 345 xor ebx,DWORD [4+edi] 346 xor ecx,DWORD [8+edi] 347 xor edx,DWORD [12+edi] 348 ret 349global _Camellia_DecryptBlock_Rounds 350align 16 351_Camellia_DecryptBlock_Rounds: 352L$_Camellia_DecryptBlock_Rounds_begin: 353 push ebp 354 push ebx 355 push esi 356 push edi 357 mov eax,DWORD [20+esp] 358 mov esi,DWORD [24+esp] 359 mov edi,DWORD [28+esp] 360 mov ebx,esp 361 sub esp,28 362 and esp,-64 363 lea ecx,[edi-127] 364 sub ecx,esp 365 neg ecx 366 and ecx,960 367 sub esp,ecx 368 add esp,4 369 shl eax,6 370 mov DWORD [16+esp],edi 371 lea edi,[eax*1+edi] 372 mov DWORD [20+esp],ebx 373 call L$004pic_point 374L$004pic_point: 375 pop ebp 376 lea ebp,[(L$Camellia_SBOX-L$004pic_point)+ebp] 377 mov eax,DWORD [esi] 378 mov ebx,DWORD [4+esi] 379 mov ecx,DWORD [8+esi] 380 bswap eax 381 mov edx,DWORD [12+esi] 382 bswap ebx 383 bswap ecx 384 bswap edx 385 call __x86_Camellia_decrypt 386 mov esp,DWORD [20+esp] 387 bswap eax 388 mov esi,DWORD [32+esp] 389 bswap ebx 390 bswap ecx 391 bswap edx 392 mov DWORD [esi],eax 393 mov DWORD [4+esi],ebx 394 mov DWORD [8+esi],ecx 395 mov DWORD [12+esi],edx 396 pop edi 397 pop esi 398 pop ebx 399 pop ebp 400 ret 401global _Camellia_DecryptBlock 402align 16 403_Camellia_DecryptBlock: 404L$_Camellia_DecryptBlock_begin: 405 mov eax,128 406 sub eax,DWORD [4+esp] 407 mov eax,3 408 adc eax,0 409 mov DWORD [4+esp],eax 410 jmp NEAR L$_Camellia_DecryptBlock_Rounds_begin 411global _Camellia_decrypt 412align 16 413_Camellia_decrypt: 414L$_Camellia_decrypt_begin: 415 push ebp 416 push ebx 417 push esi 418 push edi 419 mov esi,DWORD [20+esp] 420 mov edi,DWORD [28+esp] 421 mov ebx,esp 422 sub esp,28 423 and esp,-64 424 mov eax,DWORD [272+edi] 425 lea ecx,[edi-127] 426 sub ecx,esp 427 neg ecx 428 and ecx,960 429 sub esp,ecx 430 add esp,4 431 shl eax,6 432 mov DWORD [16+esp],edi 433 lea edi,[eax*1+edi] 434 mov DWORD [20+esp],ebx 435 call L$005pic_point 436L$005pic_point: 437 pop ebp 438 lea ebp,[(L$Camellia_SBOX-L$005pic_point)+ebp] 439 mov eax,DWORD [esi] 440 mov ebx,DWORD [4+esi] 441 mov ecx,DWORD [8+esi] 442 bswap eax 443 mov edx,DWORD [12+esi] 444 bswap ebx 445 bswap ecx 446 bswap edx 447 call __x86_Camellia_decrypt 448 mov esp,DWORD [20+esp] 449 bswap eax 450 mov esi,DWORD [24+esp] 451 bswap ebx 452 bswap ecx 453 bswap edx 454 mov DWORD [esi],eax 455 mov DWORD [4+esi],ebx 456 mov DWORD [8+esi],ecx 457 mov DWORD [12+esi],edx 458 pop edi 459 pop esi 460 pop ebx 461 pop ebp 462 ret 463align 16 464__x86_Camellia_decrypt: 465 xor eax,DWORD [edi] 466 xor ebx,DWORD [4+edi] 467 xor ecx,DWORD [8+edi] 468 xor edx,DWORD [12+edi] 469 mov esi,DWORD [edi-8] 470 mov DWORD [4+esp],eax 471 mov DWORD [8+esp],ebx 472 mov DWORD [12+esp],ecx 473 mov DWORD [16+esp],edx 474align 16 475L$006loop: 476 xor eax,esi 477 xor ebx,DWORD [edi-4] 478 movzx esi,ah 479 mov edx,DWORD [2052+esi*8+ebp] 480 movzx esi,al 481 xor edx,DWORD [4+esi*8+ebp] 482 shr eax,16 483 movzx esi,bl 484 mov ecx,DWORD [esi*8+ebp] 485 movzx esi,ah 486 xor edx,DWORD [esi*8+ebp] 487 movzx esi,bh 488 xor ecx,DWORD [4+esi*8+ebp] 489 shr ebx,16 490 movzx eax,al 491 xor edx,DWORD [2048+eax*8+ebp] 492 movzx esi,bh 493 mov eax,DWORD [16+esp] 494 xor ecx,edx 495 ror edx,8 496 xor ecx,DWORD [2048+esi*8+ebp] 497 movzx esi,bl 498 mov ebx,DWORD [12+esp] 499 xor edx,eax 500 xor ecx,DWORD [2052+esi*8+ebp] 501 mov esi,DWORD [edi-16] 502 xor edx,ecx 503 mov DWORD [16+esp],edx 504 xor ecx,ebx 505 mov DWORD [12+esp],ecx 506 xor ecx,esi 507 xor edx,DWORD [edi-12] 508 movzx esi,ch 509 mov ebx,DWORD [2052+esi*8+ebp] 510 movzx esi,cl 511 xor ebx,DWORD [4+esi*8+ebp] 512 shr ecx,16 513 movzx esi,dl 514 mov eax,DWORD [esi*8+ebp] 515 movzx esi,ch 516 xor ebx,DWORD [esi*8+ebp] 517 movzx esi,dh 518 xor eax,DWORD [4+esi*8+ebp] 519 shr edx,16 520 movzx ecx,cl 521 xor ebx,DWORD [2048+ecx*8+ebp] 522 movzx esi,dh 523 mov ecx,DWORD [8+esp] 524 xor eax,ebx 525 ror ebx,8 526 xor eax,DWORD [2048+esi*8+ebp] 527 movzx esi,dl 528 mov edx,DWORD [4+esp] 529 xor ebx,ecx 530 xor eax,DWORD [2052+esi*8+ebp] 531 mov esi,DWORD [edi-24] 532 xor ebx,eax 533 mov DWORD [8+esp],ebx 534 xor eax,edx 535 mov DWORD [4+esp],eax 536 xor eax,esi 537 xor ebx,DWORD [edi-20] 538 movzx esi,ah 539 mov edx,DWORD [2052+esi*8+ebp] 540 movzx esi,al 541 xor edx,DWORD [4+esi*8+ebp] 542 shr eax,16 543 movzx esi,bl 544 mov ecx,DWORD [esi*8+ebp] 545 movzx esi,ah 546 xor edx,DWORD [esi*8+ebp] 547 movzx esi,bh 548 xor ecx,DWORD [4+esi*8+ebp] 549 shr ebx,16 550 movzx eax,al 551 xor edx,DWORD [2048+eax*8+ebp] 552 movzx esi,bh 553 mov eax,DWORD [16+esp] 554 xor ecx,edx 555 ror edx,8 556 xor ecx,DWORD [2048+esi*8+ebp] 557 movzx esi,bl 558 mov ebx,DWORD [12+esp] 559 xor edx,eax 560 xor ecx,DWORD [2052+esi*8+ebp] 561 mov esi,DWORD [edi-32] 562 xor edx,ecx 563 mov DWORD [16+esp],edx 564 xor ecx,ebx 565 mov DWORD [12+esp],ecx 566 xor ecx,esi 567 xor edx,DWORD [edi-28] 568 movzx esi,ch 569 mov ebx,DWORD [2052+esi*8+ebp] 570 movzx esi,cl 571 xor ebx,DWORD [4+esi*8+ebp] 572 shr ecx,16 573 movzx esi,dl 574 mov eax,DWORD [esi*8+ebp] 575 movzx esi,ch 576 xor ebx,DWORD [esi*8+ebp] 577 movzx esi,dh 578 xor eax,DWORD [4+esi*8+ebp] 579 shr edx,16 580 movzx ecx,cl 581 xor ebx,DWORD [2048+ecx*8+ebp] 582 movzx esi,dh 583 mov ecx,DWORD [8+esp] 584 xor eax,ebx 585 ror ebx,8 586 xor eax,DWORD [2048+esi*8+ebp] 587 movzx esi,dl 588 mov edx,DWORD [4+esp] 589 xor ebx,ecx 590 xor eax,DWORD [2052+esi*8+ebp] 591 mov esi,DWORD [edi-40] 592 xor ebx,eax 593 mov DWORD [8+esp],ebx 594 xor eax,edx 595 mov DWORD [4+esp],eax 596 xor eax,esi 597 xor ebx,DWORD [edi-36] 598 movzx esi,ah 599 mov edx,DWORD [2052+esi*8+ebp] 600 movzx esi,al 601 xor edx,DWORD [4+esi*8+ebp] 602 shr eax,16 603 movzx esi,bl 604 mov ecx,DWORD [esi*8+ebp] 605 movzx esi,ah 606 xor edx,DWORD [esi*8+ebp] 607 movzx esi,bh 608 xor ecx,DWORD [4+esi*8+ebp] 609 shr ebx,16 610 movzx eax,al 611 xor edx,DWORD [2048+eax*8+ebp] 612 movzx esi,bh 613 mov eax,DWORD [16+esp] 614 xor ecx,edx 615 ror edx,8 616 xor ecx,DWORD [2048+esi*8+ebp] 617 movzx esi,bl 618 mov ebx,DWORD [12+esp] 619 xor edx,eax 620 xor ecx,DWORD [2052+esi*8+ebp] 621 mov esi,DWORD [edi-48] 622 xor edx,ecx 623 mov DWORD [16+esp],edx 624 xor ecx,ebx 625 mov DWORD [12+esp],ecx 626 xor ecx,esi 627 xor edx,DWORD [edi-44] 628 movzx esi,ch 629 mov ebx,DWORD [2052+esi*8+ebp] 630 movzx esi,cl 631 xor ebx,DWORD [4+esi*8+ebp] 632 shr ecx,16 633 movzx esi,dl 634 mov eax,DWORD [esi*8+ebp] 635 movzx esi,ch 636 xor ebx,DWORD [esi*8+ebp] 637 movzx esi,dh 638 xor eax,DWORD [4+esi*8+ebp] 639 shr edx,16 640 movzx ecx,cl 641 xor ebx,DWORD [2048+ecx*8+ebp] 642 movzx esi,dh 643 mov ecx,DWORD [8+esp] 644 xor eax,ebx 645 ror ebx,8 646 xor eax,DWORD [2048+esi*8+ebp] 647 movzx esi,dl 648 mov edx,DWORD [4+esp] 649 xor ebx,ecx 650 xor eax,DWORD [2052+esi*8+ebp] 651 mov esi,DWORD [edi-56] 652 xor ebx,eax 653 mov DWORD [8+esp],ebx 654 xor eax,edx 655 mov DWORD [4+esp],eax 656 sub edi,64 657 cmp edi,DWORD [20+esp] 658 je NEAR L$007done 659 and esi,eax 660 mov edx,DWORD [16+esp] 661 rol esi,1 662 mov ecx,edx 663 xor ebx,esi 664 or ecx,DWORD [4+edi] 665 mov DWORD [8+esp],ebx 666 xor ecx,DWORD [12+esp] 667 mov esi,DWORD [12+edi] 668 mov DWORD [12+esp],ecx 669 or esi,ebx 670 and ecx,DWORD [edi] 671 xor eax,esi 672 rol ecx,1 673 mov DWORD [4+esp],eax 674 xor edx,ecx 675 mov esi,DWORD [edi-8] 676 mov DWORD [16+esp],edx 677 jmp NEAR L$006loop 678align 8 679L$007done: 680 mov ecx,eax 681 mov edx,ebx 682 mov eax,DWORD [12+esp] 683 mov ebx,DWORD [16+esp] 684 xor ecx,esi 685 xor edx,DWORD [12+edi] 686 xor eax,DWORD [edi] 687 xor ebx,DWORD [4+edi] 688 ret 689global _Camellia_Ekeygen 690align 16 691_Camellia_Ekeygen: 692L$_Camellia_Ekeygen_begin: 693 push ebp 694 push ebx 695 push esi 696 push edi 697 sub esp,16 698 mov ebp,DWORD [36+esp] 699 mov esi,DWORD [40+esp] 700 mov edi,DWORD [44+esp] 701 mov eax,DWORD [esi] 702 mov ebx,DWORD [4+esi] 703 mov ecx,DWORD [8+esi] 704 mov edx,DWORD [12+esi] 705 bswap eax 706 bswap ebx 707 bswap ecx 708 bswap edx 709 mov DWORD [edi],eax 710 mov DWORD [4+edi],ebx 711 mov DWORD [8+edi],ecx 712 mov DWORD [12+edi],edx 713 cmp ebp,128 714 je NEAR L$0081st128 715 mov eax,DWORD [16+esi] 716 mov ebx,DWORD [20+esi] 717 cmp ebp,192 718 je NEAR L$0091st192 719 mov ecx,DWORD [24+esi] 720 mov edx,DWORD [28+esi] 721 jmp NEAR L$0101st256 722align 4 723L$0091st192: 724 mov ecx,eax 725 mov edx,ebx 726 not ecx 727 not edx 728align 4 729L$0101st256: 730 bswap eax 731 bswap ebx 732 bswap ecx 733 bswap edx 734 mov DWORD [32+edi],eax 735 mov DWORD [36+edi],ebx 736 mov DWORD [40+edi],ecx 737 mov DWORD [44+edi],edx 738 xor eax,DWORD [edi] 739 xor ebx,DWORD [4+edi] 740 xor ecx,DWORD [8+edi] 741 xor edx,DWORD [12+edi] 742align 4 743L$0081st128: 744 call L$011pic_point 745L$011pic_point: 746 pop ebp 747 lea ebp,[(L$Camellia_SBOX-L$011pic_point)+ebp] 748 lea edi,[(L$Camellia_SIGMA-L$Camellia_SBOX)+ebp] 749 mov esi,DWORD [edi] 750 mov DWORD [esp],eax 751 mov DWORD [4+esp],ebx 752 mov DWORD [8+esp],ecx 753 mov DWORD [12+esp],edx 754 xor eax,esi 755 xor ebx,DWORD [4+edi] 756 movzx esi,ah 757 mov edx,DWORD [2052+esi*8+ebp] 758 movzx esi,al 759 xor edx,DWORD [4+esi*8+ebp] 760 shr eax,16 761 movzx esi,bl 762 mov ecx,DWORD [esi*8+ebp] 763 movzx esi,ah 764 xor edx,DWORD [esi*8+ebp] 765 movzx esi,bh 766 xor ecx,DWORD [4+esi*8+ebp] 767 shr ebx,16 768 movzx eax,al 769 xor edx,DWORD [2048+eax*8+ebp] 770 movzx esi,bh 771 mov eax,DWORD [12+esp] 772 xor ecx,edx 773 ror edx,8 774 xor ecx,DWORD [2048+esi*8+ebp] 775 movzx esi,bl 776 mov ebx,DWORD [8+esp] 777 xor edx,eax 778 xor ecx,DWORD [2052+esi*8+ebp] 779 mov esi,DWORD [8+edi] 780 xor edx,ecx 781 mov DWORD [12+esp],edx 782 xor ecx,ebx 783 mov DWORD [8+esp],ecx 784 xor ecx,esi 785 xor edx,DWORD [12+edi] 786 movzx esi,ch 787 mov ebx,DWORD [2052+esi*8+ebp] 788 movzx esi,cl 789 xor ebx,DWORD [4+esi*8+ebp] 790 shr ecx,16 791 movzx esi,dl 792 mov eax,DWORD [esi*8+ebp] 793 movzx esi,ch 794 xor ebx,DWORD [esi*8+ebp] 795 movzx esi,dh 796 xor eax,DWORD [4+esi*8+ebp] 797 shr edx,16 798 movzx ecx,cl 799 xor ebx,DWORD [2048+ecx*8+ebp] 800 movzx esi,dh 801 mov ecx,DWORD [4+esp] 802 xor eax,ebx 803 ror ebx,8 804 xor eax,DWORD [2048+esi*8+ebp] 805 movzx esi,dl 806 mov edx,DWORD [esp] 807 xor ebx,ecx 808 xor eax,DWORD [2052+esi*8+ebp] 809 mov esi,DWORD [16+edi] 810 xor ebx,eax 811 mov DWORD [4+esp],ebx 812 xor eax,edx 813 mov DWORD [esp],eax 814 mov ecx,DWORD [8+esp] 815 mov edx,DWORD [12+esp] 816 mov esi,DWORD [44+esp] 817 xor eax,DWORD [esi] 818 xor ebx,DWORD [4+esi] 819 xor ecx,DWORD [8+esi] 820 xor edx,DWORD [12+esi] 821 mov esi,DWORD [16+edi] 822 mov DWORD [esp],eax 823 mov DWORD [4+esp],ebx 824 mov DWORD [8+esp],ecx 825 mov DWORD [12+esp],edx 826 xor eax,esi 827 xor ebx,DWORD [20+edi] 828 movzx esi,ah 829 mov edx,DWORD [2052+esi*8+ebp] 830 movzx esi,al 831 xor edx,DWORD [4+esi*8+ebp] 832 shr eax,16 833 movzx esi,bl 834 mov ecx,DWORD [esi*8+ebp] 835 movzx esi,ah 836 xor edx,DWORD [esi*8+ebp] 837 movzx esi,bh 838 xor ecx,DWORD [4+esi*8+ebp] 839 shr ebx,16 840 movzx eax,al 841 xor edx,DWORD [2048+eax*8+ebp] 842 movzx esi,bh 843 mov eax,DWORD [12+esp] 844 xor ecx,edx 845 ror edx,8 846 xor ecx,DWORD [2048+esi*8+ebp] 847 movzx esi,bl 848 mov ebx,DWORD [8+esp] 849 xor edx,eax 850 xor ecx,DWORD [2052+esi*8+ebp] 851 mov esi,DWORD [24+edi] 852 xor edx,ecx 853 mov DWORD [12+esp],edx 854 xor ecx,ebx 855 mov DWORD [8+esp],ecx 856 xor ecx,esi 857 xor edx,DWORD [28+edi] 858 movzx esi,ch 859 mov ebx,DWORD [2052+esi*8+ebp] 860 movzx esi,cl 861 xor ebx,DWORD [4+esi*8+ebp] 862 shr ecx,16 863 movzx esi,dl 864 mov eax,DWORD [esi*8+ebp] 865 movzx esi,ch 866 xor ebx,DWORD [esi*8+ebp] 867 movzx esi,dh 868 xor eax,DWORD [4+esi*8+ebp] 869 shr edx,16 870 movzx ecx,cl 871 xor ebx,DWORD [2048+ecx*8+ebp] 872 movzx esi,dh 873 mov ecx,DWORD [4+esp] 874 xor eax,ebx 875 ror ebx,8 876 xor eax,DWORD [2048+esi*8+ebp] 877 movzx esi,dl 878 mov edx,DWORD [esp] 879 xor ebx,ecx 880 xor eax,DWORD [2052+esi*8+ebp] 881 mov esi,DWORD [32+edi] 882 xor ebx,eax 883 mov DWORD [4+esp],ebx 884 xor eax,edx 885 mov DWORD [esp],eax 886 mov ecx,DWORD [8+esp] 887 mov edx,DWORD [12+esp] 888 mov esi,DWORD [36+esp] 889 cmp esi,128 890 jne NEAR L$0122nd256 891 mov edi,DWORD [44+esp] 892 lea edi,[128+edi] 893 mov DWORD [edi-112],eax 894 mov DWORD [edi-108],ebx 895 mov DWORD [edi-104],ecx 896 mov DWORD [edi-100],edx 897 mov ebp,eax 898 shl eax,15 899 mov esi,ebx 900 shr esi,17 901 shl ebx,15 902 or eax,esi 903 mov esi,ecx 904 shl ecx,15 905 mov DWORD [edi-80],eax 906 shr esi,17 907 or ebx,esi 908 shr ebp,17 909 mov esi,edx 910 shr esi,17 911 mov DWORD [edi-76],ebx 912 shl edx,15 913 or ecx,esi 914 or edx,ebp 915 mov DWORD [edi-72],ecx 916 mov DWORD [edi-68],edx 917 mov ebp,eax 918 shl eax,15 919 mov esi,ebx 920 shr esi,17 921 shl ebx,15 922 or eax,esi 923 mov esi,ecx 924 shl ecx,15 925 mov DWORD [edi-64],eax 926 shr esi,17 927 or ebx,esi 928 shr ebp,17 929 mov esi,edx 930 shr esi,17 931 mov DWORD [edi-60],ebx 932 shl edx,15 933 or ecx,esi 934 or edx,ebp 935 mov DWORD [edi-56],ecx 936 mov DWORD [edi-52],edx 937 mov ebp,eax 938 shl eax,15 939 mov esi,ebx 940 shr esi,17 941 shl ebx,15 942 or eax,esi 943 mov esi,ecx 944 shl ecx,15 945 mov DWORD [edi-32],eax 946 shr esi,17 947 or ebx,esi 948 shr ebp,17 949 mov esi,edx 950 shr esi,17 951 mov DWORD [edi-28],ebx 952 shl edx,15 953 or ecx,esi 954 or edx,ebp 955 mov ebp,eax 956 shl eax,15 957 mov esi,ebx 958 shr esi,17 959 shl ebx,15 960 or eax,esi 961 mov esi,ecx 962 shl ecx,15 963 mov DWORD [edi-16],eax 964 shr esi,17 965 or ebx,esi 966 shr ebp,17 967 mov esi,edx 968 shr esi,17 969 mov DWORD [edi-12],ebx 970 shl edx,15 971 or ecx,esi 972 or edx,ebp 973 mov DWORD [edi-8],ecx 974 mov DWORD [edi-4],edx 975 mov ebp,ebx 976 shl ebx,2 977 mov esi,ecx 978 shr esi,30 979 shl ecx,2 980 or ebx,esi 981 mov esi,edx 982 shl edx,2 983 mov DWORD [32+edi],ebx 984 shr esi,30 985 or ecx,esi 986 shr ebp,30 987 mov esi,eax 988 shr esi,30 989 mov DWORD [36+edi],ecx 990 shl eax,2 991 or edx,esi 992 or eax,ebp 993 mov DWORD [40+edi],edx 994 mov DWORD [44+edi],eax 995 mov ebp,ebx 996 shl ebx,17 997 mov esi,ecx 998 shr esi,15 999 shl ecx,17 1000 or ebx,esi 1001 mov esi,edx 1002 shl edx,17 1003 mov DWORD [64+edi],ebx 1004 shr esi,15 1005 or ecx,esi 1006 shr ebp,15 1007 mov esi,eax 1008 shr esi,15 1009 mov DWORD [68+edi],ecx 1010 shl eax,17 1011 or edx,esi 1012 or eax,ebp 1013 mov DWORD [72+edi],edx 1014 mov DWORD [76+edi],eax 1015 mov ebx,DWORD [edi-128] 1016 mov ecx,DWORD [edi-124] 1017 mov edx,DWORD [edi-120] 1018 mov eax,DWORD [edi-116] 1019 mov ebp,ebx 1020 shl ebx,15 1021 mov esi,ecx 1022 shr esi,17 1023 shl ecx,15 1024 or ebx,esi 1025 mov esi,edx 1026 shl edx,15 1027 mov DWORD [edi-96],ebx 1028 shr esi,17 1029 or ecx,esi 1030 shr ebp,17 1031 mov esi,eax 1032 shr esi,17 1033 mov DWORD [edi-92],ecx 1034 shl eax,15 1035 or edx,esi 1036 or eax,ebp 1037 mov DWORD [edi-88],edx 1038 mov DWORD [edi-84],eax 1039 mov ebp,ebx 1040 shl ebx,30 1041 mov esi,ecx 1042 shr esi,2 1043 shl ecx,30 1044 or ebx,esi 1045 mov esi,edx 1046 shl edx,30 1047 mov DWORD [edi-48],ebx 1048 shr esi,2 1049 or ecx,esi 1050 shr ebp,2 1051 mov esi,eax 1052 shr esi,2 1053 mov DWORD [edi-44],ecx 1054 shl eax,30 1055 or edx,esi 1056 or eax,ebp 1057 mov DWORD [edi-40],edx 1058 mov DWORD [edi-36],eax 1059 mov ebp,ebx 1060 shl ebx,15 1061 mov esi,ecx 1062 shr esi,17 1063 shl ecx,15 1064 or ebx,esi 1065 mov esi,edx 1066 shl edx,15 1067 shr esi,17 1068 or ecx,esi 1069 shr ebp,17 1070 mov esi,eax 1071 shr esi,17 1072 shl eax,15 1073 or edx,esi 1074 or eax,ebp 1075 mov DWORD [edi-24],edx 1076 mov DWORD [edi-20],eax 1077 mov ebp,ebx 1078 shl ebx,17 1079 mov esi,ecx 1080 shr esi,15 1081 shl ecx,17 1082 or ebx,esi 1083 mov esi,edx 1084 shl edx,17 1085 mov DWORD [edi],ebx 1086 shr esi,15 1087 or ecx,esi 1088 shr ebp,15 1089 mov esi,eax 1090 shr esi,15 1091 mov DWORD [4+edi],ecx 1092 shl eax,17 1093 or edx,esi 1094 or eax,ebp 1095 mov DWORD [8+edi],edx 1096 mov DWORD [12+edi],eax 1097 mov ebp,ebx 1098 shl ebx,17 1099 mov esi,ecx 1100 shr esi,15 1101 shl ecx,17 1102 or ebx,esi 1103 mov esi,edx 1104 shl edx,17 1105 mov DWORD [16+edi],ebx 1106 shr esi,15 1107 or ecx,esi 1108 shr ebp,15 1109 mov esi,eax 1110 shr esi,15 1111 mov DWORD [20+edi],ecx 1112 shl eax,17 1113 or edx,esi 1114 or eax,ebp 1115 mov DWORD [24+edi],edx 1116 mov DWORD [28+edi],eax 1117 mov ebp,ebx 1118 shl ebx,17 1119 mov esi,ecx 1120 shr esi,15 1121 shl ecx,17 1122 or ebx,esi 1123 mov esi,edx 1124 shl edx,17 1125 mov DWORD [48+edi],ebx 1126 shr esi,15 1127 or ecx,esi 1128 shr ebp,15 1129 mov esi,eax 1130 shr esi,15 1131 mov DWORD [52+edi],ecx 1132 shl eax,17 1133 or edx,esi 1134 or eax,ebp 1135 mov DWORD [56+edi],edx 1136 mov DWORD [60+edi],eax 1137 mov eax,3 1138 jmp NEAR L$013done 1139align 16 1140L$0122nd256: 1141 mov esi,DWORD [44+esp] 1142 mov DWORD [48+esi],eax 1143 mov DWORD [52+esi],ebx 1144 mov DWORD [56+esi],ecx 1145 mov DWORD [60+esi],edx 1146 xor eax,DWORD [32+esi] 1147 xor ebx,DWORD [36+esi] 1148 xor ecx,DWORD [40+esi] 1149 xor edx,DWORD [44+esi] 1150 mov esi,DWORD [32+edi] 1151 mov DWORD [esp],eax 1152 mov DWORD [4+esp],ebx 1153 mov DWORD [8+esp],ecx 1154 mov DWORD [12+esp],edx 1155 xor eax,esi 1156 xor ebx,DWORD [36+edi] 1157 movzx esi,ah 1158 mov edx,DWORD [2052+esi*8+ebp] 1159 movzx esi,al 1160 xor edx,DWORD [4+esi*8+ebp] 1161 shr eax,16 1162 movzx esi,bl 1163 mov ecx,DWORD [esi*8+ebp] 1164 movzx esi,ah 1165 xor edx,DWORD [esi*8+ebp] 1166 movzx esi,bh 1167 xor ecx,DWORD [4+esi*8+ebp] 1168 shr ebx,16 1169 movzx eax,al 1170 xor edx,DWORD [2048+eax*8+ebp] 1171 movzx esi,bh 1172 mov eax,DWORD [12+esp] 1173 xor ecx,edx 1174 ror edx,8 1175 xor ecx,DWORD [2048+esi*8+ebp] 1176 movzx esi,bl 1177 mov ebx,DWORD [8+esp] 1178 xor edx,eax 1179 xor ecx,DWORD [2052+esi*8+ebp] 1180 mov esi,DWORD [40+edi] 1181 xor edx,ecx 1182 mov DWORD [12+esp],edx 1183 xor ecx,ebx 1184 mov DWORD [8+esp],ecx 1185 xor ecx,esi 1186 xor edx,DWORD [44+edi] 1187 movzx esi,ch 1188 mov ebx,DWORD [2052+esi*8+ebp] 1189 movzx esi,cl 1190 xor ebx,DWORD [4+esi*8+ebp] 1191 shr ecx,16 1192 movzx esi,dl 1193 mov eax,DWORD [esi*8+ebp] 1194 movzx esi,ch 1195 xor ebx,DWORD [esi*8+ebp] 1196 movzx esi,dh 1197 xor eax,DWORD [4+esi*8+ebp] 1198 shr edx,16 1199 movzx ecx,cl 1200 xor ebx,DWORD [2048+ecx*8+ebp] 1201 movzx esi,dh 1202 mov ecx,DWORD [4+esp] 1203 xor eax,ebx 1204 ror ebx,8 1205 xor eax,DWORD [2048+esi*8+ebp] 1206 movzx esi,dl 1207 mov edx,DWORD [esp] 1208 xor ebx,ecx 1209 xor eax,DWORD [2052+esi*8+ebp] 1210 mov esi,DWORD [48+edi] 1211 xor ebx,eax 1212 mov DWORD [4+esp],ebx 1213 xor eax,edx 1214 mov DWORD [esp],eax 1215 mov ecx,DWORD [8+esp] 1216 mov edx,DWORD [12+esp] 1217 mov edi,DWORD [44+esp] 1218 lea edi,[128+edi] 1219 mov DWORD [edi-112],eax 1220 mov DWORD [edi-108],ebx 1221 mov DWORD [edi-104],ecx 1222 mov DWORD [edi-100],edx 1223 mov ebp,eax 1224 shl eax,30 1225 mov esi,ebx 1226 shr esi,2 1227 shl ebx,30 1228 or eax,esi 1229 mov esi,ecx 1230 shl ecx,30 1231 mov DWORD [edi-48],eax 1232 shr esi,2 1233 or ebx,esi 1234 shr ebp,2 1235 mov esi,edx 1236 shr esi,2 1237 mov DWORD [edi-44],ebx 1238 shl edx,30 1239 or ecx,esi 1240 or edx,ebp 1241 mov DWORD [edi-40],ecx 1242 mov DWORD [edi-36],edx 1243 mov ebp,eax 1244 shl eax,30 1245 mov esi,ebx 1246 shr esi,2 1247 shl ebx,30 1248 or eax,esi 1249 mov esi,ecx 1250 shl ecx,30 1251 mov DWORD [32+edi],eax 1252 shr esi,2 1253 or ebx,esi 1254 shr ebp,2 1255 mov esi,edx 1256 shr esi,2 1257 mov DWORD [36+edi],ebx 1258 shl edx,30 1259 or ecx,esi 1260 or edx,ebp 1261 mov DWORD [40+edi],ecx 1262 mov DWORD [44+edi],edx 1263 mov ebp,ebx 1264 shl ebx,19 1265 mov esi,ecx 1266 shr esi,13 1267 shl ecx,19 1268 or ebx,esi 1269 mov esi,edx 1270 shl edx,19 1271 mov DWORD [128+edi],ebx 1272 shr esi,13 1273 or ecx,esi 1274 shr ebp,13 1275 mov esi,eax 1276 shr esi,13 1277 mov DWORD [132+edi],ecx 1278 shl eax,19 1279 or edx,esi 1280 or eax,ebp 1281 mov DWORD [136+edi],edx 1282 mov DWORD [140+edi],eax 1283 mov ebx,DWORD [edi-96] 1284 mov ecx,DWORD [edi-92] 1285 mov edx,DWORD [edi-88] 1286 mov eax,DWORD [edi-84] 1287 mov ebp,ebx 1288 shl ebx,15 1289 mov esi,ecx 1290 shr esi,17 1291 shl ecx,15 1292 or ebx,esi 1293 mov esi,edx 1294 shl edx,15 1295 mov DWORD [edi-96],ebx 1296 shr esi,17 1297 or ecx,esi 1298 shr ebp,17 1299 mov esi,eax 1300 shr esi,17 1301 mov DWORD [edi-92],ecx 1302 shl eax,15 1303 or edx,esi 1304 or eax,ebp 1305 mov DWORD [edi-88],edx 1306 mov DWORD [edi-84],eax 1307 mov ebp,ebx 1308 shl ebx,15 1309 mov esi,ecx 1310 shr esi,17 1311 shl ecx,15 1312 or ebx,esi 1313 mov esi,edx 1314 shl edx,15 1315 mov DWORD [edi-64],ebx 1316 shr esi,17 1317 or ecx,esi 1318 shr ebp,17 1319 mov esi,eax 1320 shr esi,17 1321 mov DWORD [edi-60],ecx 1322 shl eax,15 1323 or edx,esi 1324 or eax,ebp 1325 mov DWORD [edi-56],edx 1326 mov DWORD [edi-52],eax 1327 mov ebp,ebx 1328 shl ebx,30 1329 mov esi,ecx 1330 shr esi,2 1331 shl ecx,30 1332 or ebx,esi 1333 mov esi,edx 1334 shl edx,30 1335 mov DWORD [16+edi],ebx 1336 shr esi,2 1337 or ecx,esi 1338 shr ebp,2 1339 mov esi,eax 1340 shr esi,2 1341 mov DWORD [20+edi],ecx 1342 shl eax,30 1343 or edx,esi 1344 or eax,ebp 1345 mov DWORD [24+edi],edx 1346 mov DWORD [28+edi],eax 1347 mov ebp,ecx 1348 shl ecx,2 1349 mov esi,edx 1350 shr esi,30 1351 shl edx,2 1352 or ecx,esi 1353 mov esi,eax 1354 shl eax,2 1355 mov DWORD [80+edi],ecx 1356 shr esi,30 1357 or edx,esi 1358 shr ebp,30 1359 mov esi,ebx 1360 shr esi,30 1361 mov DWORD [84+edi],edx 1362 shl ebx,2 1363 or eax,esi 1364 or ebx,ebp 1365 mov DWORD [88+edi],eax 1366 mov DWORD [92+edi],ebx 1367 mov ecx,DWORD [edi-80] 1368 mov edx,DWORD [edi-76] 1369 mov eax,DWORD [edi-72] 1370 mov ebx,DWORD [edi-68] 1371 mov ebp,ecx 1372 shl ecx,15 1373 mov esi,edx 1374 shr esi,17 1375 shl edx,15 1376 or ecx,esi 1377 mov esi,eax 1378 shl eax,15 1379 mov DWORD [edi-80],ecx 1380 shr esi,17 1381 or edx,esi 1382 shr ebp,17 1383 mov esi,ebx 1384 shr esi,17 1385 mov DWORD [edi-76],edx 1386 shl ebx,15 1387 or eax,esi 1388 or ebx,ebp 1389 mov DWORD [edi-72],eax 1390 mov DWORD [edi-68],ebx 1391 mov ebp,ecx 1392 shl ecx,30 1393 mov esi,edx 1394 shr esi,2 1395 shl edx,30 1396 or ecx,esi 1397 mov esi,eax 1398 shl eax,30 1399 mov DWORD [edi-16],ecx 1400 shr esi,2 1401 or edx,esi 1402 shr ebp,2 1403 mov esi,ebx 1404 shr esi,2 1405 mov DWORD [edi-12],edx 1406 shl ebx,30 1407 or eax,esi 1408 or ebx,ebp 1409 mov DWORD [edi-8],eax 1410 mov DWORD [edi-4],ebx 1411 mov DWORD [64+edi],edx 1412 mov DWORD [68+edi],eax 1413 mov DWORD [72+edi],ebx 1414 mov DWORD [76+edi],ecx 1415 mov ebp,edx 1416 shl edx,17 1417 mov esi,eax 1418 shr esi,15 1419 shl eax,17 1420 or edx,esi 1421 mov esi,ebx 1422 shl ebx,17 1423 mov DWORD [96+edi],edx 1424 shr esi,15 1425 or eax,esi 1426 shr ebp,15 1427 mov esi,ecx 1428 shr esi,15 1429 mov DWORD [100+edi],eax 1430 shl ecx,17 1431 or ebx,esi 1432 or ecx,ebp 1433 mov DWORD [104+edi],ebx 1434 mov DWORD [108+edi],ecx 1435 mov edx,DWORD [edi-128] 1436 mov eax,DWORD [edi-124] 1437 mov ebx,DWORD [edi-120] 1438 mov ecx,DWORD [edi-116] 1439 mov ebp,eax 1440 shl eax,13 1441 mov esi,ebx 1442 shr esi,19 1443 shl ebx,13 1444 or eax,esi 1445 mov esi,ecx 1446 shl ecx,13 1447 mov DWORD [edi-32],eax 1448 shr esi,19 1449 or ebx,esi 1450 shr ebp,19 1451 mov esi,edx 1452 shr esi,19 1453 mov DWORD [edi-28],ebx 1454 shl edx,13 1455 or ecx,esi 1456 or edx,ebp 1457 mov DWORD [edi-24],ecx 1458 mov DWORD [edi-20],edx 1459 mov ebp,eax 1460 shl eax,15 1461 mov esi,ebx 1462 shr esi,17 1463 shl ebx,15 1464 or eax,esi 1465 mov esi,ecx 1466 shl ecx,15 1467 mov DWORD [edi],eax 1468 shr esi,17 1469 or ebx,esi 1470 shr ebp,17 1471 mov esi,edx 1472 shr esi,17 1473 mov DWORD [4+edi],ebx 1474 shl edx,15 1475 or ecx,esi 1476 or edx,ebp 1477 mov DWORD [8+edi],ecx 1478 mov DWORD [12+edi],edx 1479 mov ebp,eax 1480 shl eax,17 1481 mov esi,ebx 1482 shr esi,15 1483 shl ebx,17 1484 or eax,esi 1485 mov esi,ecx 1486 shl ecx,17 1487 mov DWORD [48+edi],eax 1488 shr esi,15 1489 or ebx,esi 1490 shr ebp,15 1491 mov esi,edx 1492 shr esi,15 1493 mov DWORD [52+edi],ebx 1494 shl edx,17 1495 or ecx,esi 1496 or edx,ebp 1497 mov DWORD [56+edi],ecx 1498 mov DWORD [60+edi],edx 1499 mov ebp,ebx 1500 shl ebx,2 1501 mov esi,ecx 1502 shr esi,30 1503 shl ecx,2 1504 or ebx,esi 1505 mov esi,edx 1506 shl edx,2 1507 mov DWORD [112+edi],ebx 1508 shr esi,30 1509 or ecx,esi 1510 shr ebp,30 1511 mov esi,eax 1512 shr esi,30 1513 mov DWORD [116+edi],ecx 1514 shl eax,2 1515 or edx,esi 1516 or eax,ebp 1517 mov DWORD [120+edi],edx 1518 mov DWORD [124+edi],eax 1519 mov eax,4 1520L$013done: 1521 lea edx,[144+edi] 1522 add esp,16 1523 pop edi 1524 pop esi 1525 pop ebx 1526 pop ebp 1527 ret 1528global _Camellia_set_key 1529align 16 1530_Camellia_set_key: 1531L$_Camellia_set_key_begin: 1532 push ebx 1533 mov ecx,DWORD [8+esp] 1534 mov ebx,DWORD [12+esp] 1535 mov edx,DWORD [16+esp] 1536 mov eax,-1 1537 test ecx,ecx 1538 jz NEAR L$014done 1539 test edx,edx 1540 jz NEAR L$014done 1541 mov eax,-2 1542 cmp ebx,256 1543 je NEAR L$015arg_ok 1544 cmp ebx,192 1545 je NEAR L$015arg_ok 1546 cmp ebx,128 1547 jne NEAR L$014done 1548align 4 1549L$015arg_ok: 1550 push edx 1551 push ecx 1552 push ebx 1553 call L$_Camellia_Ekeygen_begin 1554 add esp,12 1555 mov DWORD [edx],eax 1556 xor eax,eax 1557align 4 1558L$014done: 1559 pop ebx 1560 ret 1561align 64 1562L$Camellia_SIGMA: 1563dd 2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0 1564align 64 1565L$Camellia_SBOX: 1566dd 1886416896,1886388336 1567dd 2189591040,741081132 1568dd 741092352,3014852787 1569dd 3974949888,3233808576 1570dd 3014898432,3840147684 1571dd 656877312,1465319511 1572dd 3233857536,3941204202 1573dd 3857048832,2930639022 1574dd 3840205824,589496355 1575dd 2240120064,1802174571 1576dd 1465341696,1162149957 1577dd 892679424,2779054245 1578dd 3941263872,3991732461 1579dd 202116096,1330577487 1580dd 2930683392,488439837 1581dd 1094795520,2459041938 1582dd 589505280,2256928902 1583dd 4025478912,2947481775 1584dd 1802201856,2088501372 1585dd 2475922176,522125343 1586dd 1162167552,1044250686 1587dd 421075200,3705405660 1588dd 2779096320,1583218782 1589dd 555819264,185270283 1590dd 3991792896,2795896998 1591dd 235802112,960036921 1592dd 1330597632,3587506389 1593dd 1313754624,1566376029 1594dd 488447232,3654877401 1595dd 1701143808,1515847770 1596dd 2459079168,1364262993 1597dd 3183328512,1819017324 1598dd 2256963072,2341142667 1599dd 3099113472,2593783962 1600dd 2947526400,4227531003 1601dd 2408550144,2964324528 1602dd 2088532992,1953759348 1603dd 3958106880,724238379 1604dd 522133248,4042260720 1605dd 3469659648,2223243396 1606dd 1044266496,3755933919 1607dd 808464384,3419078859 1608dd 3705461760,875823156 1609dd 1600085760,1987444854 1610dd 1583242752,1835860077 1611dd 3318072576,2846425257 1612dd 185273088,3520135377 1613dd 437918208,67371012 1614dd 2795939328,336855060 1615dd 3789676800,976879674 1616dd 960051456,3739091166 1617dd 3402287616,286326801 1618dd 3587560704,842137650 1619dd 1195853568,2627469468 1620dd 1566399744,1397948499 1621dd 1027423488,4075946226 1622dd 3654932736,4278059262 1623dd 16843008,3486449871 1624dd 1515870720,3284336835 1625dd 3604403712,2054815866 1626dd 1364283648,606339108 1627dd 1448498688,3907518696 1628dd 1819044864,1616904288 1629dd 1296911616,1768489065 1630dd 2341178112,2863268010 1631dd 218959104,2694840480 1632dd 2593823232,2711683233 1633dd 1717986816,1650589794 1634dd 4227595008,1414791252 1635dd 3435973632,505282590 1636dd 2964369408,3772776672 1637dd 757935360,1684275300 1638dd 1953788928,269484048 1639dd 303174144,0 1640dd 724249344,2745368739 1641dd 538976256,1970602101 1642dd 4042321920,2324299914 1643dd 2981212416,3873833190 1644dd 2223277056,151584777 1645dd 2576980224,3722248413 1646dd 3755990784,2273771655 1647dd 1280068608,2206400643 1648dd 3419130624,3452764365 1649dd 3267543552,2425356432 1650dd 875836416,1936916595 1651dd 2122219008,4143317238 1652dd 1987474944,2644312221 1653dd 84215040,3216965823 1654dd 1835887872,1381105746 1655dd 3082270464,3638034648 1656dd 2846468352,3368550600 1657dd 825307392,3334865094 1658dd 3520188672,2172715137 1659dd 387389184,1869545583 1660dd 67372032,320012307 1661dd 3621246720,1667432547 1662dd 336860160,3924361449 1663dd 1482184704,2812739751 1664dd 976894464,2677997727 1665dd 1633771776,3166437564 1666dd 3739147776,690552873 1667dd 454761216,4193845497 1668dd 286331136,791609391 1669dd 471604224,3031695540 1670dd 842150400,2021130360 1671dd 252645120,101056518 1672dd 2627509248,3890675943 1673dd 370546176,1903231089 1674dd 1397969664,3570663636 1675dd 404232192,2880110763 1676dd 4076007936,2290614408 1677dd 572662272,2374828173 1678dd 4278124032,1920073842 1679dd 1145324544,3115909305 1680dd 3486502656,4177002744 1681dd 2998055424,2896953516 1682dd 3284386560,909508662 1683dd 3048584448,707395626 1684dd 2054846976,1010565180 1685dd 2442236160,4059103473 1686dd 606348288,1077936192 1687dd 134744064,3553820883 1688dd 3907577856,3149594811 1689dd 2829625344,1128464451 1690dd 1616928768,353697813 1691dd 4244438016,2913796269 1692dd 1768515840,2004287607 1693dd 1347440640,2155872384 1694dd 2863311360,2189557890 1695dd 3503345664,3974889708 1696dd 2694881280,656867367 1697dd 2105376000,3856990437 1698dd 2711724288,2240086149 1699dd 2307492096,892665909 1700dd 1650614784,202113036 1701dd 2543294208,1094778945 1702dd 1414812672,4025417967 1703dd 1532713728,2475884691 1704dd 505290240,421068825 1705dd 2509608192,555810849 1706dd 3772833792,235798542 1707dd 4294967040,1313734734 1708dd 1684300800,1701118053 1709dd 3537031680,3183280317 1710dd 269488128,3099066552 1711dd 3301229568,2408513679 1712dd 0,3958046955 1713dd 1212696576,3469607118 1714dd 2745410304,808452144 1715dd 4160222976,1600061535 1716dd 1970631936,3318022341 1717dd 3688618752,437911578 1718dd 2324335104,3789619425 1719dd 50529024,3402236106 1720dd 3873891840,1195835463 1721dd 3671775744,1027407933 1722dd 151587072,16842753 1723dd 1061109504,3604349142 1724dd 3722304768,1448476758 1725dd 2492765184,1296891981 1726dd 2273806080,218955789 1727dd 1549556736,1717960806 1728dd 2206434048,3435921612 1729dd 33686016,757923885 1730dd 3452816640,303169554 1731dd 1246382592,538968096 1732dd 2425393152,2981167281 1733dd 858993408,2576941209 1734dd 1936945920,1280049228 1735dd 1734829824,3267494082 1736dd 4143379968,2122186878 1737dd 4092850944,84213765 1738dd 2644352256,3082223799 1739dd 2139062016,825294897 1740dd 3217014528,387383319 1741dd 3806519808,3621191895 1742dd 1381126656,1482162264 1743dd 2610666240,1633747041 1744dd 3638089728,454754331 1745dd 640034304,471597084 1746dd 3368601600,252641295 1747dd 926365440,370540566 1748dd 3334915584,404226072 1749dd 993737472,572653602 1750dd 2172748032,1145307204 1751dd 2526451200,2998010034 1752dd 1869573888,3048538293 1753dd 1263225600,2442199185 1754dd 320017152,134742024 1755dd 3200171520,2829582504 1756dd 1667457792,4244373756 1757dd 774778368,1347420240 1758dd 3924420864,3503292624 1759dd 2038003968,2105344125 1760dd 2812782336,2307457161 1761dd 2358021120,2543255703 1762dd 2678038272,1532690523 1763dd 1852730880,2509570197 1764dd 3166485504,4294902015 1765dd 2391707136,3536978130 1766dd 690563328,3301179588 1767dd 4126536960,1212678216 1768dd 4193908992,4160159991 1769dd 3065427456,3688562907 1770dd 791621376,50528259 1771dd 4261281024,3671720154 1772dd 3031741440,1061093439 1773dd 1499027712,2492727444 1774dd 2021160960,1549533276 1775dd 2560137216,33685506 1776dd 101058048,1246363722 1777dd 1785358848,858980403 1778dd 3890734848,1734803559 1779dd 1179010560,4092788979 1780dd 1903259904,2139029631 1781dd 3132799488,3806462178 1782dd 3570717696,2610626715 1783dd 623191296,640024614 1784dd 2880154368,926351415 1785dd 1111638528,993722427 1786dd 2290649088,2526412950 1787dd 2728567296,1263206475 1788dd 2374864128,3200123070 1789dd 4210752000,774766638 1790dd 1920102912,2037973113 1791dd 117901056,2357985420 1792dd 3115956480,1852702830 1793dd 1431655680,2391670926 1794dd 4177065984,4126474485 1795dd 4008635904,3065381046 1796dd 2896997376,4261216509 1797dd 168430080,1499005017 1798dd 909522432,2560098456 1799dd 1229539584,1785331818 1800dd 707406336,1178992710 1801dd 1751672832,3132752058 1802dd 1010580480,623181861 1803dd 943208448,1111621698 1804dd 4059164928,2728525986 1805dd 2762253312,4210688250 1806dd 1077952512,117899271 1807dd 673720320,1431634005 1808dd 3553874688,4008575214 1809dd 2071689984,168427530 1810dd 3149642496,1229520969 1811dd 3385444608,1751646312 1812dd 1128481536,943194168 1813dd 3250700544,2762211492 1814dd 353703168,673710120 1815dd 3823362816,2071658619 1816dd 2913840384,3385393353 1817dd 4109693952,3250651329 1818dd 2004317952,3823304931 1819dd 3351758592,4109631732 1820dd 2155905024,3351707847 1821dd 2661195264,2661154974 1822dd 14737632,939538488 1823dd 328965,1090535745 1824dd 5789784,369104406 1825dd 14277081,1979741814 1826dd 6776679,3640711641 1827dd 5131854,2466288531 1828dd 8487297,1610637408 1829dd 13355979,4060148466 1830dd 13224393,1912631922 1831dd 723723,3254829762 1832dd 11447982,2868947883 1833dd 6974058,2583730842 1834dd 14013909,1962964341 1835dd 1579032,100664838 1836dd 6118749,1459640151 1837dd 8553090,2684395680 1838dd 4605510,2432733585 1839dd 14671839,4144035831 1840dd 14079702,3036722613 1841dd 2565927,3372272073 1842dd 9079434,2717950626 1843dd 3289650,2348846220 1844dd 4934475,3523269330 1845dd 4342338,2415956112 1846dd 14408667,4127258358 1847dd 1842204,117442311 1848dd 10395294,2801837991 1849dd 10263708,654321447 1850dd 3815994,2382401166 1851dd 13290186,2986390194 1852dd 2434341,1224755529 1853dd 8092539,3724599006 1854dd 855309,1124090691 1855dd 7434609,1543527516 1856dd 6250335,3607156695 1857dd 2039583,3338717127 1858dd 16316664,1040203326 1859dd 14145495,4110480885 1860dd 4079166,2399178639 1861dd 10329501,1728079719 1862dd 8158332,520101663 1863dd 6316128,402659352 1864dd 12171705,1845522030 1865dd 12500670,2936057775 1866dd 12369084,788541231 1867dd 9145227,3791708898 1868dd 1447446,2231403909 1869dd 3421236,218107149 1870dd 5066061,1392530259 1871dd 12829635,4026593520 1872dd 7500402,2617285788 1873dd 9803157,1694524773 1874dd 11250603,3925928682 1875dd 9342606,2734728099 1876dd 12237498,2919280302 1877dd 8026746,2650840734 1878dd 11776947,3959483628 1879dd 131586,2147516544 1880dd 11842740,754986285 1881dd 11382189,1795189611 1882dd 10658466,2818615464 1883dd 11316396,721431339 1884dd 14211288,905983542 1885dd 10132122,2785060518 1886dd 1513239,3305162181 1887dd 1710618,2248181382 1888dd 3487029,1291865421 1889dd 13421772,855651123 1890dd 16250871,4244700669 1891dd 10066329,1711302246 1892dd 6381921,1476417624 1893dd 5921370,2516620950 1894dd 15263976,973093434 1895dd 2368548,150997257 1896dd 5658198,2499843477 1897dd 4210752,268439568 1898dd 14803425,2013296760 1899dd 6513507,3623934168 1900dd 592137,1107313218 1901dd 3355443,3422604492 1902dd 12566463,4009816047 1903dd 10000536,637543974 1904dd 9934743,3842041317 1905dd 8750469,1627414881 1906dd 6842472,436214298 1907dd 16579836,1056980799 1908dd 15527148,989870907 1909dd 657930,2181071490 1910dd 14342874,3053500086 1911dd 7303023,3674266587 1912dd 5460819,3556824276 1913dd 6447714,2550175896 1914dd 10724259,3892373736 1915dd 3026478,2332068747 1916dd 526344,33554946 1917dd 11513775,3942706155 1918dd 2631720,167774730 1919dd 11579568,738208812 1920dd 7631988,486546717 1921dd 12763842,2952835248 1922dd 12434877,1862299503 1923dd 3552822,2365623693 1924dd 2236962,2281736328 1925dd 3684408,234884622 1926dd 6579300,419436825 1927dd 1973790,2264958855 1928dd 3750201,1308642894 1929dd 2894892,184552203 1930dd 10921638,2835392937 1931dd 3158064,201329676 1932dd 15066597,2030074233 1933dd 4473924,285217041 1934dd 16645629,2130739071 1935dd 8947848,570434082 1936dd 10461087,3875596263 1937dd 6645093,1493195097 1938dd 8882055,3774931425 1939dd 7039851,3657489114 1940dd 16053492,1023425853 1941dd 2302755,3355494600 1942dd 4737096,301994514 1943dd 1052688,67109892 1944dd 13750737,1946186868 1945dd 5329233,1409307732 1946dd 12632256,805318704 1947dd 16382457,2113961598 1948dd 13816530,3019945140 1949dd 10526880,671098920 1950dd 5592405,1426085205 1951dd 10592673,1744857192 1952dd 4276545,1342197840 1953dd 16448250,3187719870 1954dd 4408131,3489714384 1955dd 1250067,3288384708 1956dd 12895428,822096177 1957dd 3092271,3405827019 1958dd 11053224,704653866 1959dd 11974326,2902502829 1960dd 3947580,251662095 1961dd 2829099,3389049546 1962dd 12698049,1879076976 1963dd 16777215,4278255615 1964dd 13158600,838873650 1965dd 10855845,1761634665 1966dd 2105376,134219784 1967dd 9013641,1644192354 1968dd 0,0 1969dd 9474192,603989028 1970dd 4671303,3506491857 1971dd 15724527,4211145723 1972dd 15395562,3120609978 1973dd 12040119,3976261101 1974dd 1381653,1157645637 1975dd 394758,2164294017 1976dd 13487565,1929409395 1977dd 11908533,1828744557 1978dd 1184274,2214626436 1979dd 8289918,2667618207 1980dd 12303291,3993038574 1981dd 2697513,1241533002 1982dd 986895,3271607235 1983dd 12105912,771763758 1984dd 460551,3238052289 1985dd 263172,16777473 1986dd 10197915,3858818790 1987dd 9737364,620766501 1988dd 2171169,1207978056 1989dd 6710886,2566953369 1990dd 15132390,3103832505 1991dd 13553358,3003167667 1992dd 15592941,2063629179 1993dd 15198183,4177590777 1994dd 3881787,3456159438 1995dd 16711422,3204497343 1996dd 8355711,3741376479 1997dd 12961221,1895854449 1998dd 10790052,687876393 1999dd 3618615,3439381965 2000dd 11645361,1811967084 2001dd 5000268,318771987 2002dd 9539985,1677747300 2003dd 7237230,2600508315 2004dd 9276813,1660969827 2005dd 7763574,2634063261 2006dd 197379,3221274816 2007dd 2960685,1258310475 2008dd 14606046,3070277559 2009dd 9868950,2768283045 2010dd 2500134,2298513801 2011dd 8224125,1593859935 2012dd 13027014,2969612721 2013dd 6052956,385881879 2014dd 13882323,4093703412 2015dd 15921906,3154164924 2016dd 5197647,3540046803 2017dd 1644825,1174423110 2018dd 4144959,3472936911 2019dd 14474460,922761015 2020dd 7960953,1577082462 2021dd 1907997,1191200583 2022dd 5395026,2483066004 2023dd 15461355,4194368250 2024dd 15987699,4227923196 2025dd 7171437,1526750043 2026dd 6184542,2533398423 2027dd 16514043,4261478142 2028dd 6908265,1509972570 2029dd 11711154,2885725356 2030dd 15790320,1006648380 2031dd 3223857,1275087948 2032dd 789516,50332419 2033dd 13948116,889206069 2034dd 13619151,4076925939 2035dd 9211020,587211555 2036dd 14869218,3087055032 2037dd 7697781,1560304989 2038dd 11119017,1778412138 2039dd 4868682,2449511058 2040dd 5723991,3573601749 2041dd 8684676,553656609 2042dd 1118481,1140868164 2043dd 4539717,1358975313 2044dd 1776411,3321939654 2045dd 16119285,2097184125 2046dd 15000804,956315961 2047dd 921102,2197848963 2048dd 7566195,3691044060 2049dd 11184810,2852170410 2050dd 15856113,2080406652 2051dd 14540253,1996519287 2052dd 5855577,1442862678 2053dd 1315860,83887365 2054dd 7105644,452991771 2055dd 9605778,2751505572 2056dd 5526612,352326933 2057dd 13684944,872428596 2058dd 7895160,503324190 2059dd 7368816,469769244 2060dd 14935011,4160813304 2061dd 4802889,1375752786 2062dd 8421504,536879136 2063dd 5263440,335549460 2064dd 10987431,3909151209 2065dd 16185078,3170942397 2066dd 7829367,3707821533 2067dd 9671571,3825263844 2068dd 8816262,2701173153 2069dd 8618883,3758153952 2070dd 2763306,2315291274 2071dd 13092807,4043370993 2072dd 5987163,3590379222 2073dd 15329769,2046851706 2074dd 15658734,3137387451 2075dd 9408399,3808486371 2076dd 65793,1073758272 2077dd 4013373,1325420367 2078global _Camellia_cbc_encrypt 2079align 16 2080_Camellia_cbc_encrypt: 2081L$_Camellia_cbc_encrypt_begin: 2082 push ebp 2083 push ebx 2084 push esi 2085 push edi 2086 mov ecx,DWORD [28+esp] 2087 cmp ecx,0 2088 je NEAR L$016enc_out 2089 pushfd 2090 cld 2091 mov eax,DWORD [24+esp] 2092 mov ebx,DWORD [28+esp] 2093 mov edx,DWORD [36+esp] 2094 mov ebp,DWORD [40+esp] 2095 lea esi,[esp-64] 2096 and esi,-64 2097 lea edi,[edx-127] 2098 sub edi,esi 2099 neg edi 2100 and edi,960 2101 sub esi,edi 2102 mov edi,DWORD [44+esp] 2103 xchg esp,esi 2104 add esp,4 2105 mov DWORD [20+esp],esi 2106 mov DWORD [24+esp],eax 2107 mov DWORD [28+esp],ebx 2108 mov DWORD [32+esp],ecx 2109 mov DWORD [36+esp],edx 2110 mov DWORD [40+esp],ebp 2111 call L$017pic_point 2112L$017pic_point: 2113 pop ebp 2114 lea ebp,[(L$Camellia_SBOX-L$017pic_point)+ebp] 2115 mov esi,32 2116align 4 2117L$018prefetch_sbox: 2118 mov eax,DWORD [ebp] 2119 mov ebx,DWORD [32+ebp] 2120 mov ecx,DWORD [64+ebp] 2121 mov edx,DWORD [96+ebp] 2122 lea ebp,[128+ebp] 2123 dec esi 2124 jnz NEAR L$018prefetch_sbox 2125 mov eax,DWORD [36+esp] 2126 sub ebp,4096 2127 mov esi,DWORD [24+esp] 2128 mov edx,DWORD [272+eax] 2129 cmp edi,0 2130 je NEAR L$019DECRYPT 2131 mov ecx,DWORD [32+esp] 2132 mov edi,DWORD [40+esp] 2133 shl edx,6 2134 lea edx,[edx*1+eax] 2135 mov DWORD [16+esp],edx 2136 test ecx,4294967280 2137 jz NEAR L$020enc_tail 2138 mov eax,DWORD [edi] 2139 mov ebx,DWORD [4+edi] 2140align 4 2141L$021enc_loop: 2142 mov ecx,DWORD [8+edi] 2143 mov edx,DWORD [12+edi] 2144 xor eax,DWORD [esi] 2145 xor ebx,DWORD [4+esi] 2146 xor ecx,DWORD [8+esi] 2147 bswap eax 2148 xor edx,DWORD [12+esi] 2149 bswap ebx 2150 mov edi,DWORD [36+esp] 2151 bswap ecx 2152 bswap edx 2153 call __x86_Camellia_encrypt 2154 mov esi,DWORD [24+esp] 2155 mov edi,DWORD [28+esp] 2156 bswap eax 2157 bswap ebx 2158 bswap ecx 2159 mov DWORD [edi],eax 2160 bswap edx 2161 mov DWORD [4+edi],ebx 2162 mov DWORD [8+edi],ecx 2163 mov DWORD [12+edi],edx 2164 mov ecx,DWORD [32+esp] 2165 lea esi,[16+esi] 2166 mov DWORD [24+esp],esi 2167 lea edx,[16+edi] 2168 mov DWORD [28+esp],edx 2169 sub ecx,16 2170 test ecx,4294967280 2171 mov DWORD [32+esp],ecx 2172 jnz NEAR L$021enc_loop 2173 test ecx,15 2174 jnz NEAR L$020enc_tail 2175 mov esi,DWORD [40+esp] 2176 mov ecx,DWORD [8+edi] 2177 mov edx,DWORD [12+edi] 2178 mov DWORD [esi],eax 2179 mov DWORD [4+esi],ebx 2180 mov DWORD [8+esi],ecx 2181 mov DWORD [12+esi],edx 2182 mov esp,DWORD [20+esp] 2183 popfd 2184L$016enc_out: 2185 pop edi 2186 pop esi 2187 pop ebx 2188 pop ebp 2189 ret 2190 pushfd 2191align 4 2192L$020enc_tail: 2193 mov eax,edi 2194 mov edi,DWORD [28+esp] 2195 push eax 2196 mov ebx,16 2197 sub ebx,ecx 2198 cmp edi,esi 2199 je NEAR L$022enc_in_place 2200align 4 2201dd 2767451785 2202 jmp NEAR L$023enc_skip_in_place 2203L$022enc_in_place: 2204 lea edi,[ecx*1+edi] 2205L$023enc_skip_in_place: 2206 mov ecx,ebx 2207 xor eax,eax 2208align 4 2209dd 2868115081 2210 pop edi 2211 mov esi,DWORD [28+esp] 2212 mov eax,DWORD [edi] 2213 mov ebx,DWORD [4+edi] 2214 mov DWORD [32+esp],16 2215 jmp NEAR L$021enc_loop 2216align 16 2217L$019DECRYPT: 2218 shl edx,6 2219 lea edx,[edx*1+eax] 2220 mov DWORD [16+esp],eax 2221 mov DWORD [36+esp],edx 2222 cmp esi,DWORD [28+esp] 2223 je NEAR L$024dec_in_place 2224 mov edi,DWORD [40+esp] 2225 mov DWORD [44+esp],edi 2226align 4 2227L$025dec_loop: 2228 mov eax,DWORD [esi] 2229 mov ebx,DWORD [4+esi] 2230 mov ecx,DWORD [8+esi] 2231 bswap eax 2232 mov edx,DWORD [12+esi] 2233 bswap ebx 2234 mov edi,DWORD [36+esp] 2235 bswap ecx 2236 bswap edx 2237 call __x86_Camellia_decrypt 2238 mov edi,DWORD [44+esp] 2239 mov esi,DWORD [32+esp] 2240 bswap eax 2241 bswap ebx 2242 bswap ecx 2243 xor eax,DWORD [edi] 2244 bswap edx 2245 xor ebx,DWORD [4+edi] 2246 xor ecx,DWORD [8+edi] 2247 xor edx,DWORD [12+edi] 2248 sub esi,16 2249 jc NEAR L$026dec_partial 2250 mov DWORD [32+esp],esi 2251 mov esi,DWORD [24+esp] 2252 mov edi,DWORD [28+esp] 2253 mov DWORD [edi],eax 2254 mov DWORD [4+edi],ebx 2255 mov DWORD [8+edi],ecx 2256 mov DWORD [12+edi],edx 2257 mov DWORD [44+esp],esi 2258 lea esi,[16+esi] 2259 mov DWORD [24+esp],esi 2260 lea edi,[16+edi] 2261 mov DWORD [28+esp],edi 2262 jnz NEAR L$025dec_loop 2263 mov edi,DWORD [44+esp] 2264L$027dec_end: 2265 mov esi,DWORD [40+esp] 2266 mov eax,DWORD [edi] 2267 mov ebx,DWORD [4+edi] 2268 mov ecx,DWORD [8+edi] 2269 mov edx,DWORD [12+edi] 2270 mov DWORD [esi],eax 2271 mov DWORD [4+esi],ebx 2272 mov DWORD [8+esi],ecx 2273 mov DWORD [12+esi],edx 2274 jmp NEAR L$028dec_out 2275align 4 2276L$026dec_partial: 2277 lea edi,[44+esp] 2278 mov DWORD [edi],eax 2279 mov DWORD [4+edi],ebx 2280 mov DWORD [8+edi],ecx 2281 mov DWORD [12+edi],edx 2282 lea ecx,[16+esi] 2283 mov esi,edi 2284 mov edi,DWORD [28+esp] 2285dd 2767451785 2286 mov edi,DWORD [24+esp] 2287 jmp NEAR L$027dec_end 2288align 4 2289L$024dec_in_place: 2290L$029dec_in_place_loop: 2291 lea edi,[44+esp] 2292 mov eax,DWORD [esi] 2293 mov ebx,DWORD [4+esi] 2294 mov ecx,DWORD [8+esi] 2295 mov edx,DWORD [12+esi] 2296 mov DWORD [edi],eax 2297 mov DWORD [4+edi],ebx 2298 mov DWORD [8+edi],ecx 2299 bswap eax 2300 mov DWORD [12+edi],edx 2301 bswap ebx 2302 mov edi,DWORD [36+esp] 2303 bswap ecx 2304 bswap edx 2305 call __x86_Camellia_decrypt 2306 mov edi,DWORD [40+esp] 2307 mov esi,DWORD [28+esp] 2308 bswap eax 2309 bswap ebx 2310 bswap ecx 2311 xor eax,DWORD [edi] 2312 bswap edx 2313 xor ebx,DWORD [4+edi] 2314 xor ecx,DWORD [8+edi] 2315 xor edx,DWORD [12+edi] 2316 mov DWORD [esi],eax 2317 mov DWORD [4+esi],ebx 2318 mov DWORD [8+esi],ecx 2319 mov DWORD [12+esi],edx 2320 lea esi,[16+esi] 2321 mov DWORD [28+esp],esi 2322 lea esi,[44+esp] 2323 mov eax,DWORD [esi] 2324 mov ebx,DWORD [4+esi] 2325 mov ecx,DWORD [8+esi] 2326 mov edx,DWORD [12+esi] 2327 mov DWORD [edi],eax 2328 mov DWORD [4+edi],ebx 2329 mov DWORD [8+edi],ecx 2330 mov DWORD [12+edi],edx 2331 mov esi,DWORD [24+esp] 2332 lea esi,[16+esi] 2333 mov DWORD [24+esp],esi 2334 mov ecx,DWORD [32+esp] 2335 sub ecx,16 2336 jc NEAR L$030dec_in_place_partial 2337 mov DWORD [32+esp],ecx 2338 jnz NEAR L$029dec_in_place_loop 2339 jmp NEAR L$028dec_out 2340align 4 2341L$030dec_in_place_partial: 2342 mov edi,DWORD [28+esp] 2343 lea esi,[44+esp] 2344 lea edi,[ecx*1+edi] 2345 lea esi,[16+ecx*1+esi] 2346 neg ecx 2347dd 2767451785 2348align 4 2349L$028dec_out: 2350 mov esp,DWORD [20+esp] 2351 popfd 2352 pop edi 2353 pop esi 2354 pop ebx 2355 pop ebp 2356 ret 2357db 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54 2358db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2359db 115,108,46,111,114,103,62,0 2360