メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

md5_vc_mmx.h

#include "dkcOSIndependent.h"
#include "vc_asm_misc.h"

md5_vc_mmx.hのインクルード依存関係図

ソースコードを見る。

マクロ定義

#define MD5_VC_MMX_F1(d, x, y, z)
 define MD5_VC_MMX_F1(x, y, z) (z ^ (x & (y ^ z))) d:dest x:mm0 y:mm1 z:mm2
#define MD5_VC_MMX_F2(d, x, y, z)   MD5_VC_MMX_F1(d,z, x, y)
#define MD5_VC_MMX_F3(d, x, y, z)
 define MD5_VC_MMX_F3(x, y, z) (x ^ y ^ z)
#define MD5_VC_MMX_F4(d, x, y, z)
 define MD5_VC_MMX_F4(x, y, z) (y ^ (x | ~z))
#define MD5_VC_MMX_CORE(temp, w, f, x, y, z, data)
 out w
#define MD5_VC_MMX_ROTATE(d, w, s)
 out d w = w<<s | w>>(32-s)
#define MD5_VC_MMX_ROTATE2(d, a, s)
#define MD5_VC_MMX_STEP(f, w, x, y, z, data, s, temp)
 lastout w,temp
#define INSERT_TINPOW(mm, tempmm, tinpo, data)
 out mm6 / use mm7 :
#define tinpow   mm4
#define temp_mm   mm6

関数

DKC_INLINE uint64 MD5_VC_MMX_UINT32_TO_UINT64 (uint32 a, uint32 b)
DKC_INLINE void MD5_VC_MMX_UINT64_TO_UINT32 (uint64 s, uint32 *a, uint32 *b)
static DKC_INLINE void md5_mmx_double_update (uint32 *abcd0, uint32 *abcd1, const uint32 in0[16], const uint32 in1[16])
 mmxが使える状態かどうか各自でチェックしてください。 sizeは64にしてください。


マクロ定義

#define INSERT_TINPOW mm,
tempmm,
tinpo,
data   ) 
 

値:

_asm mov eax,data\
    MMX_REGISTER_PUSH32(mm,eax)\
    _asm movq tempmm,tinpo\
    _asm paddd mm,tempmm
out mm6 / use mm7 :

覚え書き:
MMX複雑すぎて壊れました。

md5_vc_mmx.h120 行で定義されています。

参照元 md5_mmx_double_update().

#define MD5_VC_MMX_CORE temp,
w,
f,
x,
y,
z,
data   ) 
 

値:

f(temp,x,y,z)\
    _asm paddd temp,data\
    _asm paddd w,temp
out w

md5_vc_mmx.h77 行で定義されています。

#define MD5_VC_MMX_F1 d,
x,
y,
 ) 
 

値:

_asm movq d,y\
    _asm pxor d,z\
    _asm pand d,x\
    _asm pxor d,z
define MD5_VC_MMX_F1(x, y, z) (z ^ (x & (y ^ z))) d:dest x:mm0 y:mm1 z:mm2

md5_vc_mmx.h44 行で定義されています。

参照元 md5_mmx_double_update().

#define MD5_VC_MMX_F2 d,
x,
y,
 )     MD5_VC_MMX_F1(d,z, x, y)
 

md5_vc_mmx.h50 行で定義されています。

参照元 md5_mmx_double_update().

#define MD5_VC_MMX_F3 d,
x,
y,
 ) 
 

値:

_asm movq d,y\
    _asm pxor d,z\
    _asm pxor d,x
define MD5_VC_MMX_F3(x, y, z) (x ^ y ^ z)

md5_vc_mmx.h53 行で定義されています。

参照元 md5_mmx_double_update().

#define MD5_VC_MMX_F4 d,
x,
y,
 ) 
 

値:

_asm movq d,z\
    _asm pandn d,mm5\
    _asm por        d,x\
    _asm pxor   d,y
define MD5_VC_MMX_F4(x, y, z) (y ^ (x | ~z))

md5_vc_mmx.h62 行で定義されています。

参照元 md5_mmx_double_update().

#define MD5_VC_MMX_ROTATE d,
w,
 ) 
 

値:

_asm movq   d,w\
    _asm psllq d,s\
    _asm psrlq w,32-s\
    _asm por        d,w
out d w = w<<s | w>>(32-s)

md5_vc_mmx.h85 行で定義されています。

#define MD5_VC_MMX_ROTATE2 d,
a,
 ) 
 

値:

_asm movq d,a\
    _asm pslld d,s\
    _asm psrld a,32-s\
    _asm por d,a

md5_vc_mmx.h91 行で定義されています。

#define MD5_VC_MMX_STEP f,
w,
x,
y,
z,
data,
s,
temp   ) 
 

値:

MD5_VC_MMX_CORE(temp,w,f,x,y,z,(data))\
    MD5_VC_MMX_ROTATE2(temp,w,s)\
    _asm paddd temp,x\
    _asm movq w,temp
lastout w,temp

md5_vc_mmx.h98 行で定義されています。

参照元 md5_mmx_double_update().

#define temp_mm   mm6
 

参照元 md5_mmx_double_update().

#define tinpow   mm4
 

参照元 md5_mmx_double_update().


関数

static DKC_INLINE void md5_mmx_double_update uint32 *  abcd0,
uint32 *  abcd1,
const uint32  in0[16],
const uint32  in1[16]
[static]
 

mmxが使える状態かどうか各自でチェックしてください。 sizeは64にしてください。

md5_vc_mmx.h136 行で定義されています。

参照先 INSERT_TINPOW, MD5_VC_MMX_F1, MD5_VC_MMX_F2, MD5_VC_MMX_F3, MD5_VC_MMX_F4, MD5_VC_MMX_STEP, MD5_VC_MMX_UINT32_TO_UINT64(), MD5_VC_MMX_UINT64_TO_UINT32(), temp_mm, と tinpow.

参照元 dkcMD5LoadDouble().

00143 {
00144     uint64 a,b,c,d;
00145     uint64 tinpo[16];
00146     
00147     const uint64 tempv = 0xFFFFFFFFFFFFFFFF;
00148     int i;
00149     uint64 *ptinpo;
00150     //abcd[0] = MD5_VC_MMX_UINT32_TO_UINT64(1,1);
00151     
00152     a = MD5_VC_MMX_UINT32_TO_UINT64(abcd0[0],abcd1[0]);
00153     b = MD5_VC_MMX_UINT32_TO_UINT64(abcd0[1],abcd1[1]);
00154     c = MD5_VC_MMX_UINT32_TO_UINT64(abcd0[2],abcd1[2]);
00155     d = MD5_VC_MMX_UINT32_TO_UINT64(abcd0[3],abcd1[3]);
00156 
00157     for(i=0;i<16;i++){
00158         tinpo[i] = MD5_VC_MMX_UINT32_TO_UINT64(in0[i],in1[i]);
00159     }
00160     ptinpo = tinpo;
00161     
00162     __asm{
00163 
00164     _asm    movq mm0,a
00165     _asm    movq mm1,b
00166     _asm    movq mm2,c
00167     _asm    movq mm3,d
00168     //_asm movq mm4,tinpo[3]
00169 
00170     
00171 #define tinpow mm4
00172 #define temp_mm mm6
00173 //mm5 = 0xFFFFFFFFFFFFFFFF
00174     _asm    movq mm5, tempv
00175 
00176 
00177     mov     esi,ptinpo
00178     //_asm movq mm4,[esi+3*8]
00179     //[esi+0*8]
00180     
00181 
00182     INSERT_TINPOW(tinpow,temp_mm,[esi+0*8],0xd76aa478);
00183   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm0, mm1, mm2, mm3, tinpow, 7,temp_mm);
00184   INSERT_TINPOW(tinpow,temp_mm,[esi+1*8] ,0xe8c7b756);
00185     MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm3, mm0, mm1, mm2, tinpow , 12,temp_mm);
00186     INSERT_TINPOW(tinpow,temp_mm,[esi+2*8] ,0x242070db);
00187   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm2, mm3, mm0, mm1, tinpow, 17,temp_mm);
00188     INSERT_TINPOW(tinpow,temp_mm,[esi+3*8] ,0xc1bdceee);
00189   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm1, mm2, mm3, mm0, tinpow, 22,temp_mm);
00190     INSERT_TINPOW(tinpow,temp_mm,[esi+4*8] , 0xf57c0faf);
00191   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm0, mm1, mm2, mm3, tinpow, 7,temp_mm);
00192     INSERT_TINPOW(tinpow,temp_mm,[esi+5*8] , 0x4787c62a);
00193   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm3, mm0, mm1, mm2, tinpow, 12,temp_mm);
00194     INSERT_TINPOW(tinpow,temp_mm,[esi+6*8] , 0xa8304613);
00195   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm2, mm3, mm0, mm1, tinpow, 17,temp_mm);
00196     INSERT_TINPOW(tinpow,temp_mm,[esi+7*8] , 0xfd469501);
00197   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm1, mm2, mm3, mm0, tinpow, 22,temp_mm);
00198     INSERT_TINPOW(tinpow,temp_mm,[esi+8*8] , 0x698098d8);
00199   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm0, mm1, mm2, mm3, tinpow, 7,temp_mm);
00200     INSERT_TINPOW(tinpow,temp_mm,[esi+9*8] , 0x8b44f7af);
00201   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm3, mm0, mm1, mm2, tinpow, 12,temp_mm);
00202     INSERT_TINPOW(tinpow,temp_mm,[esi+10*8] , 0xffff5bb1);
00203   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm2, mm3, mm0, mm1, tinpow, 17,temp_mm);
00204     INSERT_TINPOW(tinpow,temp_mm,[esi+11*8] , 0x895cd7be);
00205   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm1, mm2, mm3, mm0, tinpow, 22,temp_mm);
00206     INSERT_TINPOW(tinpow,temp_mm,[esi+12*8] , 0x6b901122);
00207   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm0, mm1, mm2, mm3, tinpow, 7,temp_mm);
00208     INSERT_TINPOW(tinpow,temp_mm,[esi+13*8] , 0xfd987193);
00209   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm3, mm0, mm1, mm2, tinpow, 12,temp_mm);
00210     INSERT_TINPOW(tinpow,temp_mm,[esi+14*8] , 0xa679438e);
00211   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm2, mm3, mm0, mm1, tinpow, 17,temp_mm);
00212     INSERT_TINPOW(tinpow,temp_mm,[esi+15*8] , 0x49b40821);
00213   MD5_VC_MMX_STEP(MD5_VC_MMX_F1, mm1, mm2, mm3, mm0, tinpow, 22,temp_mm);
00214 
00215     INSERT_TINPOW(tinpow,temp_mm,[esi+1*8] , 0xf61e2562);
00216   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm0, mm1, mm2, mm3, tinpow, 5,temp_mm);
00217   INSERT_TINPOW(tinpow,temp_mm,[esi+6*8] , 0xc040b340);
00218     MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm3, mm0, mm1, mm2, tinpow, 9,temp_mm);
00219     INSERT_TINPOW(tinpow,temp_mm,[esi+11*8] , 0x265e5a51);
00220   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm2, mm3, mm0, mm1, tinpow, 14,temp_mm);
00221     INSERT_TINPOW(tinpow,temp_mm,[esi+0*8] , 0xe9b6c7aa);
00222   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm1, mm2, mm3, mm0, tinpow, 20,temp_mm);
00223     INSERT_TINPOW(tinpow,temp_mm,[esi+5*8] , 0xd62f105d);
00224   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm0, mm1, mm2, mm3, tinpow, 5,temp_mm);
00225     INSERT_TINPOW(tinpow,temp_mm,[esi+10*8] , 0x02441453);
00226   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm3, mm0, mm1, mm2, tinpow, 9,temp_mm);
00227     INSERT_TINPOW(tinpow,temp_mm,[esi+15*8] , 0xd8a1e681);
00228   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm2, mm3, mm0, mm1, tinpow, 14,temp_mm);
00229     INSERT_TINPOW(tinpow,temp_mm,[esi+4*8] , 0xe7d3fbc8);
00230   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm1, mm2, mm3, mm0, tinpow, 20,temp_mm);
00231     INSERT_TINPOW(tinpow,temp_mm,[esi+9*8] , 0x21e1cde6);
00232   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm0, mm1, mm2, mm3, tinpow, 5,temp_mm);
00233     INSERT_TINPOW(tinpow,temp_mm,[esi+14*8] , 0xc33707d6);
00234   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm3, mm0, mm1, mm2, tinpow, 9,temp_mm);
00235     INSERT_TINPOW(tinpow,temp_mm,[esi+3*8] , 0xf4d50d87);
00236   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm2, mm3, mm0, mm1, tinpow, 14,temp_mm);
00237     INSERT_TINPOW(tinpow,temp_mm, [esi+8*8] , 0x455a14ed);
00238   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm1, mm2, mm3, mm0, tinpow, 20,temp_mm);
00239     INSERT_TINPOW(tinpow,temp_mm,[esi+13*8] , 0xa9e3e905);
00240   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm0, mm1, mm2, mm3, tinpow, 5,temp_mm);
00241     INSERT_TINPOW(tinpow,temp_mm,[esi+2*8] , 0xfcefa3f8);
00242   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm3, mm0, mm1, mm2, tinpow, 9,temp_mm);
00243     INSERT_TINPOW(tinpow,temp_mm,[esi+7*8] , 0x676f02d9);
00244   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm2, mm3, mm0, mm1, tinpow, 14,temp_mm);
00245     INSERT_TINPOW(tinpow,temp_mm,[esi+12*8] , 0x8d2a4c8a);
00246   MD5_VC_MMX_STEP(MD5_VC_MMX_F2, mm1, mm2, mm3, mm0, tinpow, 20,temp_mm);
00247 
00248     INSERT_TINPOW(tinpow,temp_mm,[esi+5*8] , 0xfffa3942);
00249   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm0, mm1, mm2, mm3, tinpow, 4,temp_mm);
00250     INSERT_TINPOW(tinpow,temp_mm,[esi+8*8] , 0x8771f681);
00251   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm3, mm0, mm1, mm2, tinpow, 11,temp_mm);
00252     INSERT_TINPOW(tinpow,temp_mm,[esi+11*8] , 0x6d9d6122);
00253   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm2, mm3, mm0, mm1, tinpow, 16,temp_mm);
00254     INSERT_TINPOW(tinpow,temp_mm,[esi+14*8] , 0xfde5380c);
00255   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm1, mm2, mm3, mm0, tinpow, 23,temp_mm);
00256     INSERT_TINPOW(tinpow,temp_mm,[esi+1*8] , 0xa4beea44);
00257   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm0, mm1, mm2, mm3, tinpow, 4,temp_mm);
00258     INSERT_TINPOW(tinpow,temp_mm,[esi+4*8] , 0x4bdecfa9);
00259   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm3, mm0, mm1, mm2, tinpow, 11,temp_mm);
00260     INSERT_TINPOW(tinpow,temp_mm,[esi+7*8] , 0xf6bb4b60);
00261   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm2, mm3, mm0, mm1, tinpow, 16,temp_mm);
00262     INSERT_TINPOW(tinpow,temp_mm,[esi+10*8] , 0xbebfbc70);
00263   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm1, mm2, mm3, mm0, tinpow, 23,temp_mm);
00264     INSERT_TINPOW(tinpow,temp_mm,[esi+13*8] , 0x289b7ec6);
00265   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm0, mm1, mm2, mm3, tinpow, 4,temp_mm);
00266     INSERT_TINPOW(tinpow,temp_mm,[esi+0*8] , 0xeaa127fa);
00267   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm3, mm0, mm1, mm2, tinpow, 11,temp_mm);
00268     INSERT_TINPOW(tinpow,temp_mm,[esi+3*8] , 0xd4ef3085);
00269   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm2, mm3, mm0, mm1, tinpow, 16,temp_mm);
00270     INSERT_TINPOW(tinpow,temp_mm,[esi+6*8] , 0x04881d05);
00271   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm1, mm2, mm3, mm0, tinpow, 23,temp_mm);
00272     INSERT_TINPOW(tinpow,temp_mm,[esi+9*8] , 0xd9d4d039);
00273   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm0, mm1, mm2, mm3, tinpow, 4,temp_mm);
00274     INSERT_TINPOW(tinpow,temp_mm,[esi+12*8] , 0xe6db99e5);
00275   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm3, mm0, mm1, mm2, tinpow, 11,temp_mm);
00276     INSERT_TINPOW(tinpow,temp_mm,[esi+15*8] , 0x1fa27cf8);
00277   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm2, mm3, mm0, mm1, tinpow, 16,temp_mm);
00278     INSERT_TINPOW(tinpow,temp_mm,[esi+2*8] , 0xc4ac5665);
00279   MD5_VC_MMX_STEP(MD5_VC_MMX_F3, mm1, mm2, mm3, mm0, tinpow, 23,temp_mm);
00280 
00281     INSERT_TINPOW(tinpow,temp_mm,[esi+0*8] , 0xf4292244);
00282   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm0, mm1, mm2, mm3, tinpow, 6,temp_mm);
00283     INSERT_TINPOW(tinpow,temp_mm,[esi+7*8] , 0x432aff97);
00284   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm3, mm0, mm1, mm2, tinpow, 10,temp_mm);
00285     INSERT_TINPOW(tinpow,temp_mm,[esi+14*8] , 0xab9423a7);
00286   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm2, mm3, mm0, mm1, tinpow, 15,temp_mm);
00287     INSERT_TINPOW(tinpow,temp_mm,[esi+5*8] , 0xfc93a039);
00288   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm1, mm2, mm3, mm0, tinpow, 21,temp_mm);
00289     INSERT_TINPOW(tinpow,temp_mm,[esi+12*8] , 0x655b59c3);
00290   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm0, mm1, mm2, mm3, tinpow, 6,temp_mm);
00291     INSERT_TINPOW(tinpow,temp_mm,[esi+3*8] , 0x8f0ccc92);
00292   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm3, mm0, mm1, mm2, tinpow, 10,temp_mm);
00293     INSERT_TINPOW(tinpow,temp_mm,[esi+10*8] , 0xffeff47d);
00294   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm2, mm3, mm0, mm1, tinpow, 15,temp_mm);
00295     INSERT_TINPOW(tinpow,temp_mm,[esi+1*8] , 0x85845dd1);
00296   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm1, mm2, mm3, mm0, tinpow, 21,temp_mm);
00297     INSERT_TINPOW(tinpow,temp_mm,[esi+8*8] , 0x6fa87e4f);
00298   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm0, mm1, mm2, mm3, tinpow, 6,temp_mm);
00299     INSERT_TINPOW(tinpow,temp_mm,[esi+15*8] , 0xfe2ce6e0);
00300   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm3, mm0, mm1, mm2, tinpow, 10,temp_mm);
00301     INSERT_TINPOW(tinpow,temp_mm,[esi+6*8] , 0xa3014314);
00302   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm2, mm3, mm0, mm1, tinpow, 15,temp_mm);
00303     INSERT_TINPOW(tinpow,temp_mm,[esi+13*8] , 0x4e0811a1);
00304   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm1, mm2, mm3, mm0, tinpow, 21,temp_mm);
00305     INSERT_TINPOW(tinpow,temp_mm,[esi+4*8] , 0xf7537e82);
00306   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm0, mm1, mm2, mm3, tinpow, 6,temp_mm);
00307     INSERT_TINPOW(tinpow,temp_mm,[esi+11*8], 0xbd3af235);
00308   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm3, mm0, mm1, mm2, tinpow, 10,temp_mm);
00309     INSERT_TINPOW(tinpow,temp_mm,[esi+2*8], 0x2ad7d2bb);
00310   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm2, mm3, mm0, mm1, tinpow, 15,temp_mm);
00311     INSERT_TINPOW(tinpow,temp_mm, [esi+9*8] , 0xeb86d391);
00312   MD5_VC_MMX_STEP(MD5_VC_MMX_F4, mm1, mm2, mm3, mm0, tinpow, 21,temp_mm);
00313 
00314 
00315     paddd mm0,a
00316     paddd mm1,b
00317     paddd mm2,c
00318     paddd mm3,d
00319     movq a,mm0
00320     movq b,mm1
00321     movq c,mm2
00322     movq d,mm3
00323 
00324 
00325     //_asm emms
00326     }
00327     MD5_VC_MMX_UINT64_TO_UINT32(a,&abcd0[0],&abcd1[0]);
00328     MD5_VC_MMX_UINT64_TO_UINT32(b,&abcd0[1],&abcd1[1]);
00329     MD5_VC_MMX_UINT64_TO_UINT32(c,&abcd0[2],&abcd1[2]);
00330     MD5_VC_MMX_UINT64_TO_UINT32(d,&abcd0[3],&abcd1[3]);
00331 
00332 #undef temp_mm
00333 #undef tinpow
00334 }

DKC_INLINE uint64 MD5_VC_MMX_UINT32_TO_UINT64 uint32  a,
uint32  b
 

md5_vc_mmx.h105 行で定義されています。

参照元 md5_mmx_double_update().

00105                                                                 {
00106     ULARGE_INTEGER inte;
00107     inte.LowPart = a;
00108     inte.HighPart = b;
00109     return inte.QuadPart;
00110 }

DKC_INLINE void MD5_VC_MMX_UINT64_TO_UINT32 uint64  s,
uint32 *  a,
uint32 *  b
 

md5_vc_mmx.h111 行で定義されています。

参照元 md5_mmx_double_update().

00112 {
00113     ULARGE_INTEGER inte;
00114     inte.QuadPart = s;
00115     *a = inte.LowPart;
00116     *b = inte.HighPart;
00117 
00118 }


dkutil_cに対してMon Jan 16 00:47:06 2006に生成されました。  doxygen 1.4.4