00001
00002 #ifndef AAAA
00003 #define AAAA
00004
00005 #include "dkcOSIndependent.h"
00006
00007
00008 static DKC_INLINE md5_mmx_double_update(
00009
00010
00011
00012
00013 uint32 abcd0[4],
00014 uint32 abcd1[4],
00015 const uint32 in0[16],
00016 const uint32 in1[16])
00017 {
00018 uint64 abcd[4];
00019 uint64 tinpo[16];
00020 const uint64 tempv = 0xFFFFFFFFFFFFFFFF;
00021 int i;
00022
00023 abcd[0] = ((abcd0[0] << 32) | abcd1[0]);
00024 abcd[1] = ((abcd0[1] << 32) | abcd1[1]);
00025 abcd[2] = ((abcd0[2] << 32) | abcd1[2]);
00026 abcd[3] = ((abcd0[3] << 32) | abcd1[3]);
00027
00028 for(i=0;i<16;i++){
00029 tinpo[i] = ((in0[i] << 32) | in1[i]);
00030 }
00031
00032
00033 _asm movq mm0,abcd[0]
00034
00035 _asm movq mm1,abcd[1]
00036
00037 _asm movq mm2,abcd[2]
00038
00039 _asm movq mm3,abcd[3]
00040
00041
00042 _asm movq mm5, tempv
00043
00044
00045 _asm pxor mm2,mm3
00046 _asm pand mm1,mm2
00047 _asm pxor mm3,mm1
00048 _asm movq mm4,mm3
00049 _asm paddd mm4,(tinpo[0] + 0xd76aa478)
00050 _asm paddd mm0,mm4
00051 _asm movq mm4,mm0
00052 _asm psllq mm4,7
00053 _asm psrlq mm0,32-7
00054 _asm por mm4,mm0
00055 _asm paddd mm4,mm1
00056 _asm movq mm0,mm4;
00057
00058 _asm pxor mm1,mm2
00059 _asm pand mm0,mm1
00060 _asm pxor mm2,mm0
00061 _asm movq mm4,mm2
00062 _asm paddd mm4,(tinpo[1] + 0xe8c7b756)
00063 _asm paddd mm3,mm4
00064 _asm movq mm4,mm3
00065 _asm psllq mm4,12
00066 _asm psrlq mm3,32-12
00067 _asm por mm4,mm3
00068 _asm paddd mm4,mm0
00069 _asm movq mm3,mm4;
00070
00071 _asm pxor mm0,mm1
00072 _asm pand mm3,mm0
00073 _asm pxor mm1,mm3
00074 _asm movq mm4,mm1
00075 _asm paddd mm4,(tinpo[2] + 0x242070db)
00076 _asm paddd mm2,mm4
00077 _asm movq mm4,mm2
00078 _asm psllq mm4,17
00079 _asm psrlq mm2,32-17
00080 _asm por mm4,mm2
00081 _asm paddd mm4,mm3
00082 _asm movq mm2,mm4;
00083
00084 _asm pxor mm3,mm0
00085 _asm pand mm2,mm3
00086 _asm pxor mm0,mm2
00087 _asm movq mm4,mm0
00088 _asm paddd mm4,(tinpo[3] + 0xc1bdceee)
00089 _asm paddd mm1,mm4
00090 _asm movq mm4,mm1
00091 _asm psllq mm4,22
00092 _asm psrlq mm1,32-22
00093 _asm por mm4,mm1
00094 _asm paddd mm4,mm2
00095 _asm movq mm1,mm4;
00096
00097 _asm pxor mm2,mm3
00098 _asm pand mm1,mm2
00099 _asm pxor mm3,mm1
00100 _asm movq mm4,mm3
00101 _asm paddd mm4,(tinpo[4] + 0xf57c0faf)
00102 _asm paddd mm0,mm4
00103 _asm movq mm4,mm0
00104 _asm psllq mm4,7
00105 _asm psrlq mm0,32-7
00106 _asm por mm4,mm0
00107 _asm paddd mm4,mm1
00108 _asm movq mm0,mm4;
00109
00110 _asm pxor mm1,mm2
00111 _asm pand mm0,mm1
00112 _asm pxor mm2,mm0
00113 _asm movq mm4,mm2
00114 _asm paddd mm4,(tinpo[5] + 0x4787c62a)
00115 _asm paddd mm3,mm4
00116 _asm movq mm4,mm3
00117 _asm psllq mm4,12
00118 _asm psrlq mm3,32-12
00119 _asm por mm4,mm3
00120 _asm paddd mm4,mm0
00121 _asm movq mm3,mm4;
00122
00123 _asm pxor mm0,mm1
00124 _asm pand mm3,mm0
00125 _asm pxor mm1,mm3
00126 _asm movq mm4,mm1
00127 _asm paddd mm4,(tinpo[6] + 0xa8304613)
00128 _asm paddd mm2,mm4
00129 _asm movq mm4,mm2
00130 _asm psllq mm4,17
00131 _asm psrlq mm2,32-17
00132 _asm por mm4,mm2
00133 _asm paddd mm4,mm3
00134 _asm movq mm2,mm4;
00135
00136 _asm pxor mm3,mm0
00137 _asm pand mm2,mm3
00138 _asm pxor mm0,mm2
00139 _asm movq mm4,mm0
00140 _asm paddd mm4,(tinpo[7] + 0xfd469501)
00141 _asm paddd mm1,mm4
00142 _asm movq mm4,mm1
00143 _asm psllq mm4,22
00144 _asm psrlq mm1,32-22
00145 _asm por mm4,mm1
00146 _asm paddd mm4,mm2
00147 _asm movq mm1,mm4;
00148
00149 _asm pxor mm2,mm3
00150 _asm pand mm1,mm2
00151 _asm pxor mm3,mm1
00152 _asm movq mm4,mm3
00153 _asm paddd mm4,(tinpo[8] + 0x698098d8)
00154 _asm paddd mm0,mm4
00155 _asm movq mm4,mm0
00156 _asm psllq mm4,7
00157 _asm psrlq mm0,32-7
00158 _asm por mm4,mm0
00159 _asm paddd mm4,mm1
00160 _asm movq mm0,mm4;
00161
00162 _asm pxor mm1,mm2
00163 _asm pand mm0,mm1
00164 _asm pxor mm2,mm0
00165 _asm movq mm4,mm2
00166 _asm paddd mm4,(tinpo[9] + 0x8b44f7af)
00167 _asm paddd mm3,mm4
00168 _asm movq mm4,mm3
00169 _asm psllq mm4,12
00170 _asm psrlq mm3,32-12
00171 _asm por mm4,mm3
00172 _asm paddd mm4,mm0
00173 _asm movq mm3,mm4;
00174
00175 _asm pxor mm0,mm1
00176 _asm pand mm3,mm0
00177 _asm pxor mm1,mm3
00178 _asm movq mm4,mm1
00179 _asm paddd mm4,(tinpo[10] + 0xffff5bb1)
00180 _asm paddd mm2,mm4
00181 _asm movq mm4,mm2
00182 _asm psllq mm4,17
00183 _asm psrlq mm2,32-17
00184 _asm por mm4,mm2
00185 _asm paddd mm4,mm3
00186 _asm movq mm2,mm4;
00187
00188 _asm pxor mm3,mm0
00189 _asm pand mm2,mm3
00190 _asm pxor mm0,mm2
00191 _asm movq mm4,mm0
00192 _asm paddd mm4,(tinpo[11] + 0x895cd7be)
00193 _asm paddd mm1,mm4
00194 _asm movq mm4,mm1
00195 _asm psllq mm4,22
00196 _asm psrlq mm1,32-22
00197 _asm por mm4,mm1
00198 _asm paddd mm4,mm2
00199 _asm movq mm1,mm4;
00200
00201 _asm pxor mm2,mm3
00202 _asm pand mm1,mm2
00203 _asm pxor mm3,mm1
00204 _asm movq mm4,mm3
00205 _asm paddd mm4,(tinpo[12] + 0x6b901122)
00206 _asm paddd mm0,mm4
00207 _asm movq mm4,mm0
00208 _asm psllq mm4,7
00209 _asm psrlq mm0,32-7
00210 _asm por mm4,mm0
00211 _asm paddd mm4,mm1
00212 _asm movq mm0,mm4;
00213
00214 _asm pxor mm1,mm2
00215 _asm pand mm0,mm1
00216 _asm pxor mm2,mm0
00217 _asm movq mm4,mm2
00218 _asm paddd mm4,(tinpo[13] + 0xfd987193)
00219 _asm paddd mm3,mm4
00220 _asm movq mm4,mm3
00221 _asm psllq mm4,12
00222 _asm psrlq mm3,32-12
00223 _asm por mm4,mm3
00224 _asm paddd mm4,mm0
00225 _asm movq mm3,mm4;
00226
00227 _asm pxor mm0,mm1
00228 _asm pand mm3,mm0
00229 _asm pxor mm1,mm3
00230 _asm movq mm4,mm1
00231 _asm paddd mm4,(tinpo[14] + 0xa679438e)
00232 _asm paddd mm2,mm4
00233 _asm movq mm4,mm2
00234 _asm psllq mm4,17
00235 _asm psrlq mm2,32-17
00236 _asm por mm4,mm2
00237 _asm paddd mm4,mm3
00238 _asm movq mm2,mm4;
00239
00240 _asm pxor mm3,mm0
00241 _asm pand mm2,mm3
00242 _asm pxor mm0,mm2
00243 _asm movq mm4,mm0
00244 _asm paddd mm4,(tinpo[15] + 0x49b40821)
00245 _asm paddd mm1,mm4
00246 _asm movq mm4,mm1
00247 _asm psllq mm4,22
00248 _asm psrlq mm1,32-22
00249 _asm por mm4,mm1
00250 _asm paddd mm4,mm2
00251 _asm movq mm1,mm4;
00252
00253
00254 _asm pxor mm1,mm2
00255 _asm pand mm3,mm1
00256 _asm pxor mm2,mm3
00257 _asm movq mm4,mm2
00258 _asm paddd mm4,(tinpo[1] + 0xf61e2562)
00259 _asm paddd mm0,mm4
00260 _asm movq mm4,mm0
00261 _asm psllq mm4,5
00262 _asm psrlq mm0,32-5
00263 _asm por mm4,mm0
00264 _asm paddd mm4,mm1
00265 _asm movq mm0,mm4;
00266
00267 _asm pxor mm0,mm1
00268 _asm pand mm2,mm0
00269 _asm pxor mm1,mm2
00270 _asm movq mm4,mm1
00271 _asm paddd mm4,(tinpo[6] + 0xc040b340)
00272 _asm paddd mm3,mm4
00273 _asm movq mm4,mm3
00274 _asm psllq mm4,9
00275 _asm psrlq mm3,32-9
00276 _asm por mm4,mm3
00277 _asm paddd mm4,mm0
00278 _asm movq mm3,mm4;
00279
00280 _asm pxor mm3,mm0
00281 _asm pand mm1,mm3
00282 _asm pxor mm0,mm1
00283 _asm movq mm4,mm0
00284 _asm paddd mm4,(tinpo[11] + 0x265e5a51)
00285 _asm paddd mm2,mm4
00286 _asm movq mm4,mm2
00287 _asm psllq mm4,14
00288 _asm psrlq mm2,32-14
00289 _asm por mm4,mm2
00290 _asm paddd mm4,mm3
00291 _asm movq mm2,mm4;
00292
00293 _asm pxor mm2,mm3
00294 _asm pand mm0,mm2
00295 _asm pxor mm3,mm0
00296 _asm movq mm4,mm3
00297 _asm paddd mm4,(tinpo[0] + 0xe9b6c7aa)
00298 _asm paddd mm1,mm4
00299 _asm movq mm4,mm1
00300 _asm psllq mm4,20
00301 _asm psrlq mm1,32-20
00302 _asm por mm4,mm1
00303 _asm paddd mm4,mm2
00304 _asm movq mm1,mm4;
00305
00306 _asm pxor mm1,mm2
00307 _asm pand mm3,mm1
00308 _asm pxor mm2,mm3
00309 _asm movq mm4,mm2
00310 _asm paddd mm4,(tinpo[5] + 0xd62f105d)
00311 _asm paddd mm0,mm4
00312 _asm movq mm4,mm0
00313 _asm psllq mm4,5
00314 _asm psrlq mm0,32-5
00315 _asm por mm4,mm0
00316 _asm paddd mm4,mm1
00317 _asm movq mm0,mm4;
00318
00319 _asm pxor mm0,mm1
00320 _asm pand mm2,mm0
00321 _asm pxor mm1,mm2
00322 _asm movq mm4,mm1
00323 _asm paddd mm4,(tinpo[10] + 0x02441453)
00324 _asm paddd mm3,mm4
00325 _asm movq mm4,mm3
00326 _asm psllq mm4,9
00327 _asm psrlq mm3,32-9
00328 _asm por mm4,mm3
00329 _asm paddd mm4,mm0
00330 _asm movq mm3,mm4;
00331
00332 _asm pxor mm3,mm0
00333 _asm pand mm1,mm3
00334 _asm pxor mm0,mm1
00335 _asm movq mm4,mm0
00336 _asm paddd mm4,(tinpo[15] + 0xd8a1e681)
00337 _asm paddd mm2,mm4
00338 _asm movq mm4,mm2
00339 _asm psllq mm4,14
00340 _asm psrlq mm2,32-14
00341 _asm por mm4,mm2
00342 _asm paddd mm4,mm3
00343 _asm movq mm2,mm4;
00344
00345 _asm pxor mm2,mm3
00346 _asm pand mm0,mm2
00347 _asm pxor mm3,mm0
00348 _asm movq mm4,mm3
00349 _asm paddd mm4,(tinpo[4] + 0xe7d3fbc8)
00350 _asm paddd mm1,mm4
00351 _asm movq mm4,mm1
00352 _asm psllq mm4,20
00353 _asm psrlq mm1,32-20
00354 _asm por mm4,mm1
00355 _asm paddd mm4,mm2
00356 _asm movq mm1,mm4;
00357
00358 _asm pxor mm1,mm2
00359 _asm pand mm3,mm1
00360 _asm pxor mm2,mm3
00361 _asm movq mm4,mm2
00362 _asm paddd mm4,(tinpo[9] + 0x21e1cde6)
00363 _asm paddd mm0,mm4
00364 _asm movq mm4,mm0
00365 _asm psllq mm4,5
00366 _asm psrlq mm0,32-5
00367 _asm por mm4,mm0
00368 _asm paddd mm4,mm1
00369 _asm movq mm0,mm4;
00370
00371 _asm pxor mm0,mm1
00372 _asm pand mm2,mm0
00373 _asm pxor mm1,mm2
00374 _asm movq mm4,mm1
00375 _asm paddd mm4,(tinpo[14] + 0xc33707d6)
00376 _asm paddd mm3,mm4
00377 _asm movq mm4,mm3
00378 _asm psllq mm4,9
00379 _asm psrlq mm3,32-9
00380 _asm por mm4,mm3
00381 _asm paddd mm4,mm0
00382 _asm movq mm3,mm4;
00383
00384 _asm pxor mm3,mm0
00385 _asm pand mm1,mm3
00386 _asm pxor mm0,mm1
00387 _asm movq mm4,mm0
00388 _asm paddd mm4,(tinpo[3] + 0xf4d50d87)
00389 _asm paddd mm2,mm4
00390 _asm movq mm4,mm2
00391 _asm psllq mm4,14
00392 _asm psrlq mm2,32-14
00393 _asm por mm4,mm2
00394 _asm paddd mm4,mm3
00395 _asm movq mm2,mm4;
00396
00397 _asm pxor mm2,mm3
00398 _asm pand mm0,mm2
00399 _asm pxor mm3,mm0
00400 _asm movq mm4,mm3
00401 _asm paddd mm4,(tinpo[8] + 0x455a14ed)
00402 _asm paddd mm1,mm4
00403 _asm movq mm4,mm1
00404 _asm psllq mm4,20
00405 _asm psrlq mm1,32-20
00406 _asm por mm4,mm1
00407 _asm paddd mm4,mm2
00408 _asm movq mm1,mm4;
00409
00410 _asm pxor mm1,mm2
00411 _asm pand mm3,mm1
00412 _asm pxor mm2,mm3
00413 _asm movq mm4,mm2
00414 _asm paddd mm4,(tinpo[13] + 0xa9e3e905)
00415 _asm paddd mm0,mm4
00416 _asm movq mm4,mm0
00417 _asm psllq mm4,5
00418 _asm psrlq mm0,32-5
00419 _asm por mm4,mm0
00420 _asm paddd mm4,mm1
00421 _asm movq mm0,mm4;
00422
00423 _asm pxor mm0,mm1
00424 _asm pand mm2,mm0
00425 _asm pxor mm1,mm2
00426 _asm movq mm4,mm1
00427 _asm paddd mm4,(tinpo[2] + 0xfcefa3f8)
00428 _asm paddd mm3,mm4
00429 _asm movq mm4,mm3
00430 _asm psllq mm4,9
00431 _asm psrlq mm3,32-9
00432 _asm por mm4,mm3
00433 _asm paddd mm4,mm0
00434 _asm movq mm3,mm4;
00435
00436 _asm pxor mm3,mm0
00437 _asm pand mm1,mm3
00438 _asm pxor mm0,mm1
00439 _asm movq mm4,mm0
00440 _asm paddd mm4,(tinpo[7] + 0x676f02d9)
00441 _asm paddd mm2,mm4
00442 _asm movq mm4,mm2
00443 _asm psllq mm4,14
00444 _asm psrlq mm2,32-14
00445 _asm por mm4,mm2
00446 _asm paddd mm4,mm3
00447 _asm movq mm2,mm4;
00448
00449 _asm pxor mm2,mm3
00450 _asm pand mm0,mm2
00451 _asm pxor mm3,mm0
00452 _asm movq mm4,mm3
00453 _asm paddd mm4,(tinpo[12] + 0x8d2a4c8a)
00454 _asm paddd mm1,mm4
00455 _asm movq mm4,mm1
00456 _asm psllq mm4,20
00457 _asm psrlq mm1,32-20
00458 _asm por mm4,mm1
00459 _asm paddd mm4,mm2
00460 _asm movq mm1,mm4;
00461
00462
00463 _asm pxor mm2,mm3
00464 _asm pxor mm1,mm2
00465 _asm movq mm4,mm1
00466 _asm paddd mm4,(tinpo[5] + 0xfffa3942)
00467 _asm paddd mm0,mm4
00468 _asm movq mm4,mm0
00469 _asm psllq mm4,4
00470 _asm psrlq mm0,32-4
00471 _asm por mm4,mm0
00472 _asm paddd mm4,mm1
00473 _asm movq mm0,mm4;
00474
00475 _asm pxor mm1,mm2
00476 _asm pxor mm0,mm1
00477 _asm movq mm4,mm0
00478 _asm paddd mm4,(tinpo[8] + 0x8771f681)
00479 _asm paddd mm3,mm4
00480 _asm movq mm4,mm3
00481 _asm psllq mm4,11
00482 _asm psrlq mm3,32-11
00483 _asm por mm4,mm3
00484 _asm paddd mm4,mm0
00485 _asm movq mm3,mm4;
00486
00487 _asm pxor mm0,mm1
00488 _asm pxor mm3,mm0
00489 _asm movq mm4,mm3
00490 _asm paddd mm4,(tinpo[11] + 0x6d9d6122)
00491 _asm paddd mm2,mm4
00492 _asm movq mm4,mm2
00493 _asm psllq mm4,16
00494 _asm psrlq mm2,32-16
00495 _asm por mm4,mm2
00496 _asm paddd mm4,mm3
00497 _asm movq mm2,mm4;
00498
00499 _asm pxor mm3,mm0
00500 _asm pxor mm2,mm3
00501 _asm movq mm4,mm2
00502 _asm paddd mm4,(tinpo[14] + 0xfde5380c)
00503 _asm paddd mm1,mm4
00504 _asm movq mm4,mm1
00505 _asm psllq mm4,23
00506 _asm psrlq mm1,32-23
00507 _asm por mm4,mm1
00508 _asm paddd mm4,mm2
00509 _asm movq mm1,mm4;
00510
00511 _asm pxor mm2,mm3
00512 _asm pxor mm1,mm2
00513 _asm movq mm4,mm1
00514 _asm paddd mm4,(tinpo[1] + 0xa4beea44)
00515 _asm paddd mm0,mm4
00516 _asm movq mm4,mm0
00517 _asm psllq mm4,4
00518 _asm psrlq mm0,32-4
00519 _asm por mm4,mm0
00520 _asm paddd mm4,mm1
00521 _asm movq mm0,mm4;
00522
00523 _asm pxor mm1,mm2
00524 _asm pxor mm0,mm1
00525 _asm movq mm4,mm0
00526 _asm paddd mm4,(tinpo[4] + 0x4bdecfa9)
00527 _asm paddd mm3,mm4
00528 _asm movq mm4,mm3
00529 _asm psllq mm4,11
00530 _asm psrlq mm3,32-11
00531 _asm por mm4,mm3
00532 _asm paddd mm4,mm0
00533 _asm movq mm3,mm4;
00534
00535 _asm pxor mm0,mm1
00536 _asm pxor mm3,mm0
00537 _asm movq mm4,mm3
00538 _asm paddd mm4,(tinpo[7] + 0xf6bb4b60)
00539 _asm paddd mm2,mm4
00540 _asm movq mm4,mm2
00541 _asm psllq mm4,16
00542 _asm psrlq mm2,32-16
00543 _asm por mm4,mm2
00544 _asm paddd mm4,mm3
00545 _asm movq mm2,mm4;
00546
00547 _asm pxor mm3,mm0
00548 _asm pxor mm2,mm3
00549 _asm movq mm4,mm2
00550 _asm paddd mm4,(tinpo[10] + 0xbebfbc70)
00551 _asm paddd mm1,mm4
00552 _asm movq mm4,mm1
00553 _asm psllq mm4,23
00554 _asm psrlq mm1,32-23
00555 _asm por mm4,mm1
00556 _asm paddd mm4,mm2
00557 _asm movq mm1,mm4;
00558
00559 _asm pxor mm2,mm3
00560 _asm pxor mm1,mm2
00561 _asm movq mm4,mm1
00562 _asm paddd mm4,(tinpo[13] + 0x289b7ec6)
00563 _asm paddd mm0,mm4
00564 _asm movq mm4,mm0
00565 _asm psllq mm4,4
00566 _asm psrlq mm0,32-4
00567 _asm por mm4,mm0
00568 _asm paddd mm4,mm1
00569 _asm movq mm0,mm4;
00570
00571 _asm pxor mm1,mm2
00572 _asm pxor mm0,mm1
00573 _asm movq mm4,mm0
00574 _asm paddd mm4,(tinpo[0] + 0xeaa127fa)
00575 _asm paddd mm3,mm4
00576 _asm movq mm4,mm3
00577 _asm psllq mm4,11
00578 _asm psrlq mm3,32-11
00579 _asm por mm4,mm3
00580 _asm paddd mm4,mm0
00581 _asm movq mm3,mm4;
00582
00583 _asm pxor mm0,mm1
00584 _asm pxor mm3,mm0
00585 _asm movq mm4,mm3
00586 _asm paddd mm4,(tinpo[3] + 0xd4ef3085)
00587 _asm paddd mm2,mm4
00588 _asm movq mm4,mm2
00589 _asm psllq mm4,16
00590 _asm psrlq mm2,32-16
00591 _asm por mm4,mm2
00592 _asm paddd mm4,mm3
00593 _asm movq mm2,mm4;
00594
00595 _asm pxor mm3,mm0
00596 _asm pxor mm2,mm3
00597 _asm movq mm4,mm2
00598 _asm paddd mm4,(tinpo[6] + 0x04881d05)
00599 _asm paddd mm1,mm4
00600 _asm movq mm4,mm1
00601 _asm psllq mm4,23
00602 _asm psrlq mm1,32-23
00603 _asm por mm4,mm1
00604 _asm paddd mm4,mm2
00605 _asm movq mm1,mm4;
00606
00607 _asm pxor mm2,mm3
00608 _asm pxor mm1,mm2
00609 _asm movq mm4,mm1
00610 _asm paddd mm4,(tinpo[9] + 0xd9d4d039)
00611 _asm paddd mm0,mm4
00612 _asm movq mm4,mm0
00613 _asm psllq mm4,4
00614 _asm psrlq mm0,32-4
00615 _asm por mm4,mm0
00616 _asm paddd mm4,mm1
00617 _asm movq mm0,mm4;
00618
00619 _asm pxor mm1,mm2
00620 _asm pxor mm0,mm1
00621 _asm movq mm4,mm0
00622 _asm paddd mm4,(tinpo[12] + 0xe6db99e5)
00623 _asm paddd mm3,mm4
00624 _asm movq mm4,mm3
00625 _asm psllq mm4,11
00626 _asm psrlq mm3,32-11
00627 _asm por mm4,mm3
00628 _asm paddd mm4,mm0
00629 _asm movq mm3,mm4;
00630
00631 _asm pxor mm0,mm1
00632 _asm pxor mm3,mm0
00633 _asm movq mm4,mm3
00634 _asm paddd mm4,(tinpo[15] + 0x1fa27cf8)
00635 _asm paddd mm2,mm4
00636 _asm movq mm4,mm2
00637 _asm psllq mm4,16
00638 _asm psrlq mm2,32-16
00639 _asm por mm4,mm2
00640 _asm paddd mm4,mm3
00641 _asm movq mm2,mm4;
00642
00643 _asm pxor mm3,mm0
00644 _asm pxor mm2,mm3
00645 _asm movq mm4,mm2
00646 _asm paddd mm4,(tinpo[2] + 0xc4ac5665)
00647 _asm paddd mm1,mm4
00648 _asm movq mm4,mm1
00649 _asm psllq mm4,23
00650 _asm psrlq mm1,32-23
00651 _asm por mm4,mm1
00652 _asm paddd mm4,mm2
00653 _asm movq mm1,mm4;
00654
00655
00656 _asm pandn mm1,mm5
00657 _asm por mm1,mm3
00658 _asm pxor mm2,mm1
00659 _asm movq mm4,mm2
00660 _asm paddd mm4,(tinpo[0] + 0xf4292244)
00661 _asm paddd mm0,mm4
00662 _asm movq mm4,mm0
00663 _asm psllq mm4,6
00664 _asm psrlq mm0,32-6
00665 _asm por mm4,mm0
00666 _asm paddd mm4,mm1
00667 _asm movq mm0,mm4;
00668
00669 _asm pandn mm0,mm5
00670 _asm por mm0,mm2
00671 _asm pxor mm1,mm0
00672 _asm movq mm4,mm1
00673 _asm paddd mm4,(tinpo[7] + 0x432aff97)
00674 _asm paddd mm3,mm4
00675 _asm movq mm4,mm3
00676 _asm psllq mm4,10
00677 _asm psrlq mm3,32-10
00678 _asm por mm4,mm3
00679 _asm paddd mm4,mm0
00680 _asm movq mm3,mm4;
00681
00682 _asm pandn mm3,mm5
00683 _asm por mm3,mm1
00684 _asm pxor mm0,mm3
00685 _asm movq mm4,mm0
00686 _asm paddd mm4,(tinpo[14] + 0xab9423a7)
00687 _asm paddd mm2,mm4
00688 _asm movq mm4,mm2
00689 _asm psllq mm4,15
00690 _asm psrlq mm2,32-15
00691 _asm por mm4,mm2
00692 _asm paddd mm4,mm3
00693 _asm movq mm2,mm4;
00694
00695 _asm pandn mm2,mm5
00696 _asm por mm2,mm0
00697 _asm pxor mm3,mm2
00698 _asm movq mm4,mm3
00699 _asm paddd mm4,(tinpo[5] + 0xfc93a039)
00700 _asm paddd mm1,mm4
00701 _asm movq mm4,mm1
00702 _asm psllq mm4,21
00703 _asm psrlq mm1,32-21
00704 _asm por mm4,mm1
00705 _asm paddd mm4,mm2
00706 _asm movq mm1,mm4;
00707
00708 _asm pandn mm1,mm5
00709 _asm por mm1,mm3
00710 _asm pxor mm2,mm1
00711 _asm movq mm4,mm2
00712 _asm paddd mm4,(tinpo[12] + 0x655b59c3)
00713 _asm paddd mm0,mm4
00714 _asm movq mm4,mm0
00715 _asm psllq mm4,6
00716 _asm psrlq mm0,32-6
00717 _asm por mm4,mm0
00718 _asm paddd mm4,mm1
00719 _asm movq mm0,mm4;
00720
00721 _asm pandn mm0,mm5
00722 _asm por mm0,mm2
00723 _asm pxor mm1,mm0
00724 _asm movq mm4,mm1
00725 _asm paddd mm4,(tinpo[3] + 0x8f0ccc92)
00726 _asm paddd mm3,mm4
00727 _asm movq mm4,mm3
00728 _asm psllq mm4,10
00729 _asm psrlq mm3,32-10
00730 _asm por mm4,mm3
00731 _asm paddd mm4,mm0
00732 _asm movq mm3,mm4;
00733
00734 _asm pandn mm3,mm5
00735 _asm por mm3,mm1
00736 _asm pxor mm0,mm3
00737 _asm movq mm4,mm0
00738 _asm paddd mm4,(tinpo[10] + 0xffeff47d)
00739 _asm paddd mm2,mm4
00740 _asm movq mm4,mm2
00741 _asm psllq mm4,15
00742 _asm psrlq mm2,32-15
00743 _asm por mm4,mm2
00744 _asm paddd mm4,mm3
00745 _asm movq mm2,mm4;
00746
00747 _asm pandn mm2,mm5
00748 _asm por mm2,mm0
00749 _asm pxor mm3,mm2
00750 _asm movq mm4,mm3
00751 _asm paddd mm4,(tinpo[1] + 0x85845dd1)
00752 _asm paddd mm1,mm4
00753 _asm movq mm4,mm1
00754 _asm psllq mm4,21
00755 _asm psrlq mm1,32-21
00756 _asm por mm4,mm1
00757 _asm paddd mm4,mm2
00758 _asm movq mm1,mm4;
00759
00760 _asm pandn mm1,mm5
00761 _asm por mm1,mm3
00762 _asm pxor mm2,mm1
00763 _asm movq mm4,mm2
00764 _asm paddd mm4,(tinpo[8] + 0x6fa87e4f)
00765 _asm paddd mm0,mm4
00766 _asm movq mm4,mm0
00767 _asm psllq mm4,6
00768 _asm psrlq mm0,32-6
00769 _asm por mm4,mm0
00770 _asm paddd mm4,mm1
00771 _asm movq mm0,mm4;
00772
00773 _asm pandn mm0,mm5
00774 _asm por mm0,mm2
00775 _asm pxor mm1,mm0
00776 _asm movq mm4,mm1
00777 _asm paddd mm4,(tinpo[15] + 0xfe2ce6e0)
00778 _asm paddd mm3,mm4
00779 _asm movq mm4,mm3
00780 _asm psllq mm4,10
00781 _asm psrlq mm3,32-10
00782 _asm por mm4,mm3
00783 _asm paddd mm4,mm0
00784 _asm movq mm3,mm4;
00785
00786 _asm pandn mm3,mm5
00787 _asm por mm3,mm1
00788 _asm pxor mm0,mm3
00789 _asm movq mm4,mm0
00790 _asm paddd mm4,(tinpo[6] + 0xa3014314)
00791 _asm paddd mm2,mm4
00792 _asm movq mm4,mm2
00793 _asm psllq mm4,15
00794 _asm psrlq mm2,32-15
00795 _asm por mm4,mm2
00796 _asm paddd mm4,mm3
00797 _asm movq mm2,mm4;
00798
00799 _asm pandn mm2,mm5
00800 _asm por mm2,mm0
00801 _asm pxor mm3,mm2
00802 _asm movq mm4,mm3
00803 _asm paddd mm4,(tinpo[13] + 0x4e0811a1)
00804 _asm paddd mm1,mm4
00805 _asm movq mm4,mm1
00806 _asm psllq mm4,21
00807 _asm psrlq mm1,32-21
00808 _asm por mm4,mm1
00809 _asm paddd mm4,mm2
00810 _asm movq mm1,mm4;
00811
00812 _asm pandn mm1,mm5
00813 _asm por mm1,mm3
00814 _asm pxor mm2,mm1
00815 _asm movq mm4,mm2
00816 _asm paddd mm4,(tinpo[4] + 0xf7537e82)
00817 _asm paddd mm0,mm4
00818 _asm movq mm4,mm0
00819 _asm psllq mm4,6
00820 _asm psrlq mm0,32-6
00821 _asm por mm4,mm0
00822 _asm paddd mm4,mm1
00823 _asm movq mm0,mm4;
00824
00825 _asm pandn mm0,mm5
00826 _asm por mm0,mm2
00827 _asm pxor mm1,mm0
00828 _asm movq mm4,mm1
00829 _asm paddd mm4,(tinpo[11] + 0xbd3af235)
00830 _asm paddd mm3,mm4
00831 _asm movq mm4,mm3
00832 _asm psllq mm4,10
00833 _asm psrlq mm3,32-10
00834 _asm por mm4,mm3
00835 _asm paddd mm4,mm0
00836 _asm movq mm3,mm4;
00837
00838 _asm pandn mm3,mm5
00839 _asm por mm3,mm1
00840 _asm pxor mm0,mm3
00841 _asm movq mm4,mm0
00842 _asm paddd mm4,(tinpo[2] + 0x2ad7d2bb)
00843 _asm paddd mm2,mm4
00844 _asm movq mm4,mm2
00845 _asm psllq mm4,15
00846 _asm psrlq mm2,32-15
00847 _asm por mm4,mm2
00848 _asm paddd mm4,mm3
00849 _asm movq mm2,mm4;
00850
00851 _asm pandn mm2,mm5
00852 _asm por mm2,mm0
00853 _asm pxor mm3,mm2
00854 _asm movq mm4,mm3
00855 _asm paddd mm4,(tinpo[9] + 0xeb86d391)
00856 _asm paddd mm1,mm4
00857 _asm movq mm4,mm1
00858 _asm psllq mm4,21
00859 _asm psrlq mm1,32-21
00860 _asm por mm4,mm1
00861 _asm paddd mm4,mm2
00862 _asm movq mm1,mm4;
00863
00864 _asm emms
00865
00866
00867
00868 }
00869 #endif