首页
社区
课程
招聘
[原创]WinRAR 3.62注册算法 - CRC校验 + 黑名单 + SHA1 hash算法
2006-12-19 22:24 37877

[原创]WinRAR 3.62注册算法 - CRC校验 + 黑名单 + SHA1 hash算法

2006-12-19 22:24
37877
收藏
点赞7
打赏
分享
最新回复 (64)
雪    币: 272
活跃值: (307)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
wangshq397 8 2006-12-21 11:37
26
0
等注册机出来
雪    币: 244
活跃值: (28)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
shenhaiyu 3 2006-12-21 14:31
27
0
强强强强强强强强
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
davidnash 1 2006-12-21 18:44
28
0
强人,佩服佩服!!
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xkingx 2006-12-21 21:12
29
0
好文  学习中
雪    币: 5276
活跃值: (406)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
tankaiha 29 2006-12-21 21:48
30
0
好文好文!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
我来顶也 2006-12-22 15:59
31
0
软件在40ea86~40eb93还有校验,icytear能不能再讲一下
雪    币: 280
活跃值: (433)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
icytear 11 2006-12-22 16:52
32
0
最初由 我来顶也 发布
软件在40ea86~40eb93还有校验,icytear能不能再讲一下


哪里应该是版本类型中匹配版本的, 有时间写一下, 下面还有好几处校验 ,才到注册的关键,都用到了sha1
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rufeng12 2006-12-23 18:23
33
0
受教了,学习下。
雪    币: 338
活跃值: (1663)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
sungy 1 2006-12-23 20:23
34
0
真是高人啊,没有什么不可能的!
雪    币: 309
活跃值: (15)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
网游难民 15 2006-12-24 00:07
35
0
哪里飞来的大牛~~
雪    币: 280
活跃值: (433)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
icytear 11 2006-12-24 00:54
36
0
.text:0042EB43                 mov     esi, [ebx+UI32._1] ; ***********************第2轮计算开始****
.text:0042EB43                                         ; ***********************第2.0次运算开始****
.text:0042EB46                 xor     esi, [ebx+UI32._12] ; buf[1] ^ buf[12]
.text:0042EB49                 xor     edi, [ebx+UI32._4] ; buf[1] ^ buf[12] ^ buf[6] ^ buf[4]
.text:0042EB4C                 xor     esi, [ebx+UI32._6] ; buf[1] ^ buf[12] ^ buf[6]
.text:0042EB4F                 xor     esi, [ebx+UI32._4] ; buf[1] ^ buf[12] ^ buf[6] ^ buf[4]
.text:0042EB52                 shr     edi, 1Fh        ; (buf[1] ^ buf[12] ^ buf[6] ^ buf[4])>>31
.text:0042EB55                 add     esi, esi        ; (buf[1] ^ buf[12] ^ buf[6] ^ buf[4])<<1
.text:0042EB57                 or      esi, edi        ; RL((buf[1] ^ buf[12] ^ buf[6] ^ buf[4]),1)
.text:0042EB59                 mov     edi, edx_C
.text:0042EB5B                 xor     edi, eax_B      ; (B^C)
.text:0042EB5D                 mov     [ebx+UI32._4], esi ; buf[4] = RL((buf[1] ^ buf[12] ^ buf[6] ^ buf[4]),1)
.text:0042EB5D                                         ; RXL(20)
.text:0042EB60                 xor     edi, ecx_D      ; (B^C^D)
.text:0042EB60                                         ;
.text:0042EB60                                         ; 定义一个宏RX1:
.text:0042EB60                                         ; #define RX1(w,x,y) ( w^x^y )
.text:0042EB60                                         ; 则: RX1(B,C,D) = (B^C^D)
.text:0042EB62                 mov     ebp, [esp+14h+A]
.text:0042EB66                 add     esi, edi        ; RXL(20) + RX1(B,C,D)
.text:0042EB68                 mov     edi, [esp+14h+A]
.text:0042EB6C                 shl     edi, 5          ; A<<5
.text:0042EB6F                 shr     ebp, 1Bh        ; A>>27
.text:0042EB72                 or      edi, ebp        ; RL(A,5)
.text:0042EB74                 add     esi, edi        ; RXL(20) + RX1(B,C,D) + RL(A,5)
.text:0042EB76                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EB7C                 add     [esp+14h+E], esi ; E += RXL(20) + RX1(B,C,D) + RL(A,5) + 0x6ed9eba1;
.text:0042EB80                 mov     esi, eax_B
.text:0042EB82                 shr     eax_B, 2        ; B>>2
.text:0042EB85                 mov     edi, [ebx+UI32._2]
.text:0042EB88                 shl     esi, 1Eh        ; B<<30
.text:0042EB8B                 xor     edi, [ebx+UI32._13]
.text:0042EB8E                 or      esi, eax_B      ; RL(B,30)
.text:0042EB90                 xor     edi, [ebx+UI32._7]
.text:0042EB93                 mov     eax_B, esi      ; B = RL(B,30)
.text:0042EB93                                         ;
.text:0042EB93                                         ; 定义一个宏R2:
.text:0042EB93                                         ; #define R2(a,b,c,d,e,i) ( e+=RXL(i)+RX1(b,c,d)+RL(a,5)+0x6ed9eba1; b=RL(b,30); )
.text:0042EB93                                         ;
.text:0042EB93                                         ; R2(A,B,C,D,E,20)
.text:0042EB93                                         ; ***********************第2.0次运算end****
.text:0042EB93                                         ;
.text:0042EB93                                         ;
.text:0042EB95                 mov     esi, [ebx+UI32._2] ; ***********************第2.1次运算开始****
.text:0042EB98                 xor     esi, [ebx+UI32._13] ; buf[2] ^ buf[13]
.text:0042EB9B                 xor     edi, [ebx+UI32._5]
.text:0042EB9E                 xor     esi, [ebx+UI32._7] ; buf[2] ^ buf[13] ^ buf[7]
.text:0042EBA1                 xor     esi, [ebx+UI32._5] ; buf[2] ^ buf[13] ^ buf[7] ^ buf[5]
.text:0042EBA4                 shr     edi, 1Fh        ; (buf[2] ^ buf[13] ^ buf[7] ^buf[5])>>31
.text:0042EBA7                 add     esi, esi        ; (buf[2] ^ buf[13] ^ buf[7] ^ buf[5])<<1
.text:0042EBA9                 or      esi, edi
.text:0042EBAB                 mov     [ebx+UI32._5], esi ; RXL(21)
.text:0042EBAB                                         ; buf[5] = RL((buf[2] ^ buf[13] ^ buf[7] ^buf[5]),1)
.text:0042EBAE                 mov     edi, [esp+14h+A]
.text:0042EBB2                 mov     ebp, [esp+14h+E]
.text:0042EBB6                 xor     edi, eax_B      ; A^B
.text:0042EBB8                 xor     edi, edx_C      ; RX1(A,B,C) = A^B^C
.text:0042EBBA                 add     esi, edi        ; RXL(21) + RX1(A,B,C)
.text:0042EBBC                 mov     edi, [esp+14h+E]
.text:0042EBC0                 shl     edi, 5          ; E<<5
.text:0042EBC3                 shr     ebp, 1Bh        ; E>>27
.text:0042EBC6                 or      edi, ebp        ; RL(E,30)
.text:0042EBC8                 add     esi, edi        ; RXL(21) + RX1(A,B,C) + RL(E,30)
.text:0042EBCA                 mov     edi, [esp+14h+A]
.text:0042EBCE                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EBD4                 add     ecx_D, esi      ; D += RXL(21) + RX1(A,B,C) + RL(E,30) + 0x6ed9eba1
.text:0042EBD6                 mov     esi, [esp+14h+A]
.text:0042EBDA                 shl     esi, 1Eh        ; A<<30
.text:0042EBDD                 mov     ebp, ecx_D
.text:0042EBDF                 shr     edi, 2          ; A>>2
.text:0042EBE2                 or      esi, edi        ; RL(A,30)
.text:0042EBE4                 mov     [esp+14h+A], esi ; A = RL(A,30)
.text:0042EBE4                                         ; R2(E,A,B,C,D,21)
.text:0042EBE4                                         ; ***********************第2.1次运算end****
.text:0042EBE4                                         ;
.text:0042EBE4                                         ;
.text:0042EBE8                 mov     edi, [ebx+UI32._3] ; ***********************第2.2次运算开始****
.text:0042EBEB                 mov     esi, [ebx+UI32._3]
.text:0042EBEE                 xor     edi, [ebx+UI32._14]
.text:0042EBF1                 xor     esi, [ebx+UI32._14]
.text:0042EBF4                 xor     edi, [ebx+UI32._8]
.text:0042EBF7                 xor     esi, [ebx+UI32._8]
.text:0042EBFA                 xor     edi, [ebx+UI32._6]
.text:0042EBFD                 xor     esi, [ebx+UI32._6]
.text:0042EC00                 shr     edi, 1Fh
.text:0042EC03                 add     esi, esi
.text:0042EC05                 or      esi, edi
.text:0042EC07                 mov     [ebx+UI32._6], esi
.text:0042EC0A                 mov     edi, [esp+14h+E]
.text:0042EC0E                 xor     edi, [esp+14h+A]
.text:0042EC12                 xor     edi, eax_B
.text:0042EC14                 add     esi, edi
.text:0042EC16                 mov     edi, ecx_D
.text:0042EC18                 shl     edi, 5
.text:0042EC1B                 shr     ebp, 1Bh
.text:0042EC1E                 or      edi, ebp
.text:0042EC20                 add     esi, edi
.text:0042EC22                 mov     edi, [esp+14h+E]
.text:0042EC26                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EC2C                 add     edx_C, esi
.text:0042EC2E                 mov     esi, [esp+14h+E]
.text:0042EC32                 shl     esi, 1Eh
.text:0042EC35                 mov     ebp, edx_C
.text:0042EC37                 shr     edi, 2
.text:0042EC3A                 or      esi, edi
.text:0042EC3C                 mov     [esp+14h+E], esi ; R2(D,E,A,B,C,22)
.text:0042EC3C                                         ; ***********************第2.2次运算end****
.text:0042EC3C                                         ;
.text:0042EC3C                                         ;
.text:0042EC40                 mov     edi, [ebx+UI32._4] ; ***********************第2.3次运算开始****
.text:0042EC43                 mov     esi, [ebx+UI32._4]
.text:0042EC46                 xor     edi, [ebx+UI32._15]
.text:0042EC49                 xor     esi, [ebx+3Ch]
.text:0042EC4C                 xor     edi, [ebx+24h]
.text:0042EC4F                 xor     esi, [ebx+24h]
.text:0042EC52                 xor     edi, [ebx+1Ch]
.text:0042EC55                 xor     esi, [ebx+1Ch]
.text:0042EC58                 shr     edi, 1Fh
.text:0042EC5B                 add     esi, esi
.text:0042EC5D                 or      esi, edi
.text:0042EC5F                 mov     [ebx+1Ch], esi
.text:0042EC62                 mov     edi, [esp+14h+E]
.text:0042EC66                 xor     edi, ecx_D
.text:0042EC68                 xor     edi, [esp+14h+A]
.text:0042EC6C                 add     esi, edi
.text:0042EC6E                 mov     edi, edx_C
.text:0042EC70                 shr     ebp, 1Bh
.text:0042EC73                 shl     edi, 5
.text:0042EC76                 or      edi, ebp
.text:0042EC78                 add     esi, edi
.text:0042EC7A                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EC80                 add     eax_B, esi
.text:0042EC82                 mov     esi, ecx_D
.text:0042EC84                 mov     edi, [ebx+14h]
.text:0042EC87                 shr     ecx_D, 2
.text:0042EC8A                 mov     ebp, eax_B
.text:0042EC8C                 shl     esi, 1Eh
.text:0042EC8F                 xor     edi, [ebx]
.text:0042EC91                 or      esi, ecx_D
.text:0042EC93                 xor     edi, [ebx+28h]
.text:0042EC96                 mov     ecx_D, esi      ; R2(C,D,E,A,B,23)
.text:0042EC96                                         ; ***********************第2.3次运算end****
.text:0042EC98                 mov     esi, [ebx+14h]  ; ***********************第2.4次运算开始****
.text:0042EC9B                 xor     esi, [ebx]
.text:0042EC9D                 xor     edi, [ebx+20h]
.text:0042ECA0                 xor     esi, [ebx+28h]
.text:0042ECA3                 xor     esi, [ebx+20h]
.text:0042ECA6                 shr     edi, 1Fh
.text:0042ECA9                 add     esi, esi
.text:0042ECAB                 or      esi, edi
.text:0042ECAD                 mov     edi, ecx_D
.text:0042ECAF                 mov     [ebx+20h], esi
.text:0042ECB2                 xor     edi, edx_C
.text:0042ECB4                 xor     edi, [esp+14h+E]
.text:0042ECB8                 add     esi, edi
.text:0042ECBA                 mov     edi, eax_B
.text:0042ECBC                 shl     edi, 5
.text:0042ECBF                 shr     ebp, 1Bh
.text:0042ECC2                 or      edi, ebp
.text:0042ECC4                 add     esi, edi
.text:0042ECC6                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042ECCC                 add     [esp+14h+A], esi
.text:0042ECD0                 mov     esi, edx_C
.text:0042ECD2                 shr     edx_C, 2
.text:0042ECD5                 mov     edi, [ebx+18h]
.text:0042ECD8                 shl     esi, 1Eh
.text:0042ECDB                 xor     edi, [ebx+4]
.text:0042ECDE                 or      esi, edx_C
.text:0042ECE0                 xor     edi, [ebx+2Ch]
.text:0042ECE3                 mov     edx_C, esi      ; R2(B,C,D,E,A,24)
.text:0042ECE3                                         ; ***********************第2.4次运算end****
.text:0042ECE5                 mov     esi, [ebx+18h]  ; ***********************第2.5次运算开始****
.text:0042ECE8                 xor     esi, [ebx+4]
.text:0042ECEB                 xor     edi, [ebx+24h]
.text:0042ECEE                 xor     esi, [ebx+2Ch]
.text:0042ECF1                 xor     esi, [ebx+24h]
.text:0042ECF4                 shr     edi, 1Fh
.text:0042ECF7                 add     esi, esi
.text:0042ECF9                 or      esi, edi
.text:0042ECFB                 mov     edi, edx_C
.text:0042ECFD                 xor     edi, eax_B
.text:0042ECFF                 mov     [ebx+24h], esi
.text:0042ED02                 xor     edi, ecx_D
.text:0042ED04                 mov     ebp, [esp+14h+A]
.text:0042ED08                 add     esi, edi
.text:0042ED0A                 mov     edi, [esp+14h+A]
.text:0042ED0E                 shl     edi, 5
.text:0042ED11                 shr     ebp, 1Bh
.text:0042ED14                 or      edi, ebp
.text:0042ED16                 add     esi, edi
.text:0042ED18                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042ED1E                 add     [esp+14h+E], esi
.text:0042ED22                 mov     esi, eax_B
.text:0042ED24                 shr     eax_B, 2
.text:0042ED27                 mov     edi, [ebx+1Ch]
.text:0042ED2A                 shl     esi, 1Eh
.text:0042ED2D                 xor     edi, [ebx+8]
.text:0042ED30                 or      esi, eax_B
.text:0042ED32                 xor     edi, [ebx+30h]
.text:0042ED35                 mov     eax_B, esi      ; R2(A,B,C,D,E,25)
.text:0042ED35                                         ; ***********************第2.5次运算end****
.text:0042ED37                 mov     esi, [ebx+1Ch]  ; ***********************第2.6次运算开始****
.text:0042ED3A                 xor     esi, [ebx+8]
.text:0042ED3D                 xor     edi, [ebx+28h]
.text:0042ED40                 xor     esi, [ebx+30h]
.text:0042ED43                 xor     esi, [ebx+28h]
.text:0042ED46                 shr     edi, 1Fh
.text:0042ED49                 add     esi, esi
.text:0042ED4B                 or      esi, edi
.text:0042ED4D                 mov     [ebx+28h], esi
.text:0042ED50                 mov     edi, [esp+14h+A]
.text:0042ED54                 mov     ebp, [esp+14h+E]
.text:0042ED58                 xor     edi, eax_B
.text:0042ED5A                 xor     edi, edx_C
.text:0042ED5C                 add     esi, edi
.text:0042ED5E                 mov     edi, [esp+14h+E]
.text:0042ED62                 shl     edi, 5
.text:0042ED65                 shr     ebp, 1Bh
.text:0042ED68                 or      edi, ebp
.text:0042ED6A                 add     esi, edi
.text:0042ED6C                 mov     edi, [esp+14h+A]
.text:0042ED70                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042ED76                 add     ecx_D, esi
.text:0042ED78                 mov     esi, [esp+14h+A]
.text:0042ED7C                 shl     esi, 1Eh
.text:0042ED7F                 mov     ebp, ecx_D
.text:0042ED81                 shr     edi, 2
.text:0042ED84                 or      esi, edi
.text:0042ED86                 mov     [esp+14h+A], esi ; R2(E,A,B,C,D,26)
.text:0042ED86                                         ; ***********************第2.6次运算end****
.text:0042ED8A                 mov     edi, [ebx+20h]  ; ***********************第2.7次运算开始****
.text:0042ED8D                 mov     esi, [ebx+20h]
.text:0042ED90                 xor     edi, [ebx+0Ch]
.text:0042ED93                 xor     esi, [ebx+0Ch]
.text:0042ED96                 xor     edi, [ebx+34h]
.text:0042ED99                 xor     esi, [ebx+34h]
.text:0042ED9C                 xor     edi, [ebx+2Ch]
.text:0042ED9F                 xor     esi, [ebx+2Ch]
.text:0042EDA2                 shr     edi, 1Fh
.text:0042EDA5                 add     esi, esi
.text:0042EDA7                 or      esi, edi
.text:0042EDA9                 mov     [ebx+2Ch], esi
.text:0042EDAC                 mov     edi, [esp+14h+E]
.text:0042EDB0                 xor     edi, [esp+14h+A]
.text:0042EDB4                 xor     edi, eax_B
.text:0042EDB6                 add     esi, edi
.text:0042EDB8                 mov     edi, ecx_D
.text:0042EDBA                 shl     edi, 5
.text:0042EDBD                 shr     ebp, 1Bh
.text:0042EDC0                 or      edi, ebp
.text:0042EDC2                 add     esi, edi
.text:0042EDC4                 mov     edi, [esp+14h+E]
.text:0042EDC8                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EDCE                 add     edx_C, esi
.text:0042EDD0                 mov     esi, [esp+14h+E]
.text:0042EDD4                 shl     esi, 1Eh
.text:0042EDD7                 mov     ebp, edx_C
.text:0042EDD9                 shr     edi, 2
.text:0042EDDC                 or      esi, edi
.text:0042EDDE                 mov     [esp+14h+E], esi ; R2(D,E,A,B,C,27)
.text:0042EDDE                                         ; ***********************第2.7次运算END****
.text:0042EDE2                 mov     edi, [ebx+24h]  ; ***********************第2.8次运算开始****
.text:0042EDE5                 mov     esi, [ebx+24h]
.text:0042EDE8                 xor     edi, [ebx+10h]
.text:0042EDEB                 xor     esi, [ebx+10h]
.text:0042EDEE                 xor     edi, [ebx+38h]
.text:0042EDF1                 xor     esi, [ebx+38h]
.text:0042EDF4                 xor     edi, [ebx+30h]
.text:0042EDF7                 xor     esi, [ebx+30h]
.text:0042EDFA                 shr     edi, 1Fh
.text:0042EDFD                 add     esi, esi
.text:0042EDFF                 or      esi, edi
.text:0042EE01                 mov     [ebx+30h], esi
.text:0042EE04                 mov     edi, [esp+14h+E]
.text:0042EE08                 xor     edi, ecx_D
.text:0042EE0A                 xor     edi, [esp+14h+A]
.text:0042EE0E                 add     esi, edi
.text:0042EE10                 mov     edi, edx_C
.text:0042EE12                 shl     edi, 5
.text:0042EE15                 shr     ebp, 1Bh
.text:0042EE18                 or      edi, ebp
.text:0042EE1A                 add     esi, edi
.text:0042EE1C                 mov     edi, [ebx+28h]
.text:0042EE1F                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EE25                 xor     edi, [ebx+14h]
.text:0042EE28                 add     eax_B, esi
.text:0042EE2A                 mov     esi, ecx_D
.text:0042EE2C                 shr     ecx_D, 2
.text:0042EE2F                 mov     ebp, eax_B
.text:0042EE31                 shl     esi, 1Eh
.text:0042EE34                 xor     edi, [ebx+3Ch]
.text:0042EE37                 or      esi, ecx_D
.text:0042EE39                 xor     edi, [ebx+34h]
.text:0042EE3C                 mov     ecx_D, esi      ; R2(C,D,E,A,B,28)
.text:0042EE3C                                         ; ***********************第2.8次运算END****
.text:0042EE3E                 mov     esi, [ebx+28h]  ; ***********************第2.9次运算开始****
.text:0042EE41                 xor     esi, [ebx+14h]
.text:0042EE44                 xor     esi, [ebx+3Ch]
.text:0042EE47                 xor     esi, [ebx+34h]
.text:0042EE4A                 shr     edi, 1Fh
.text:0042EE4D                 add     esi, esi
.text:0042EE4F                 or      esi, edi
.text:0042EE51                 mov     edi, ecx_D
.text:0042EE53                 mov     [ebx+34h], esi
.text:0042EE56                 xor     edi, edx_C
.text:0042EE58                 xor     edi, [esp+14h+E]
.text:0042EE5C                 add     esi, edi
.text:0042EE5E                 mov     edi, eax_B
.text:0042EE60                 shl     edi, 5
.text:0042EE63                 shr     ebp, 1Bh
.text:0042EE66                 or      edi, ebp
.text:0042EE68                 add     esi, edi
.text:0042EE6A                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EE70                 add     [esp+14h+A], esi
.text:0042EE74                 mov     esi, edx_C
.text:0042EE76                 shr     edx_C, 2
.text:0042EE79                 mov     edi, [ebx+2Ch]
.text:0042EE7C                 shl     esi, 1Eh
.text:0042EE7F                 xor     edi, [ebx+18h]
.text:0042EE82                 or      esi, edx_C
.text:0042EE84                 xor     edi, [ebx]
.text:0042EE86                 mov     edx_C, esi      ; R2(B,C,D,E,A,29)
.text:0042EE86                                         ; ***********************第2.9次运算END****
.text:0042EE88                 mov     esi, [ebx+2Ch]  ; ***********************第2.10次运算开始****
.text:0042EE8B                 xor     esi, [ebx+18h]
.text:0042EE8E                 xor     edi, [ebx+38h]
.text:0042EE91                 xor     esi, [ebx]
.text:0042EE93                 xor     esi, [ebx+38h]
.text:0042EE96                 shr     edi, 1Fh
.text:0042EE99                 add     esi, esi
.text:0042EE9B                 or      esi, edi
.text:0042EE9D                 mov     edi, edx_C
.text:0042EE9F                 xor     edi, eax_B
.text:0042EEA1                 mov     [ebx+38h], esi
.text:0042EEA4                 xor     edi, ecx_D
.text:0042EEA6                 mov     ebp, [esp+14h+A]
.text:0042EEAA                 add     esi, edi
.text:0042EEAC                 mov     edi, [esp+14h+A]
.text:0042EEB0                 shl     edi, 5
.text:0042EEB3                 shr     ebp, 1Bh
.text:0042EEB6                 or      edi, ebp
.text:0042EEB8                 add     esi, edi
.text:0042EEBA                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EEC0                 add     [esp+14h+E], esi
.text:0042EEC4                 mov     esi, eax_B
.text:0042EEC6                 shr     eax_B, 2
.text:0042EEC9                 mov     edi, [ebx+30h]
.text:0042EECC                 shl     esi, 1Eh
.text:0042EECF                 xor     edi, [ebx+1Ch]
.text:0042EED2                 or      esi, eax_B
.text:0042EED4                 xor     edi, [ebx+4]
.text:0042EED7                 mov     eax_B, esi      ; R2(A,B,C,D,E,30)
.text:0042EED7                                         ; ***********************第2.10次运算END****
.text:0042EED9                 mov     esi, [ebx+30h]  ; ***********************第2.11次运算开始****
.text:0042EEDC                 xor     esi, [ebx+1Ch]
.text:0042EEDF                 xor     edi, [ebx+3Ch]
.text:0042EEE2                 xor     esi, [ebx+4]
.text:0042EEE5                 xor     esi, [ebx+3Ch]
.text:0042EEE8                 shr     edi, 1Fh
.text:0042EEEB                 add     esi, esi
.text:0042EEED                 or      esi, edi
.text:0042EEEF                 mov     [ebx+3Ch], esi
.text:0042EEF2                 mov     edi, [esp+14h+A]
.text:0042EEF6                 mov     ebp, [esp+14h+E]
.text:0042EEFA                 xor     edi, eax_B
.text:0042EEFC                 xor     edi, edx_C
.text:0042EEFE                 add     esi, edi
.text:0042EF00                 mov     edi, [esp+14h+E]
.text:0042EF04                 shr     ebp, 1Bh
.text:0042EF07                 shl     edi, 5
.text:0042EF0A                 or      edi, ebp
.text:0042EF0C                 add     esi, edi
.text:0042EF0E                 mov     edi, [esp+14h+A]
.text:0042EF12                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EF18                 add     ecx_D, esi
.text:0042EF1A                 mov     esi, [esp+14h+A]
.text:0042EF1E                 shl     esi, 1Eh
.text:0042EF21                 shr     edi, 2
.text:0042EF24                 or      esi, edi
.text:0042EF26                 mov     [esp+14h+A], esi ; R2(E,A,B,C,D,31)
.text:0042EF26                                         ; ***********************第2.11次运算end****
.text:0042EF2A                 mov     edi, [ebx+34h]  ; ***********************第2.12次运算开始****
.text:0042EF2D                 mov     esi, [ebx+34h]
.text:0042EF30                 xor     edi, [ebx+20h]
.text:0042EF33                 xor     esi, [ebx+20h]
.text:0042EF36                 xor     edi, [ebx+8]
.text:0042EF39                 xor     esi, [ebx+8]
.text:0042EF3C                 xor     edi, [ebx]
.text:0042EF3E                 xor     esi, [ebx]
.text:0042EF40                 shr     edi, 1Fh
.text:0042EF43                 add     esi, esi
.text:0042EF45                 or      esi, edi
.text:0042EF47                 mov     [ebx], esi
.text:0042EF49                 mov     edi, [esp+14h+E]
.text:0042EF4D                 xor     edi, [esp+14h+A]
.text:0042EF51                 xor     edi, eax_B
.text:0042EF53                 add     esi, edi
.text:0042EF55                 mov     edi, ecx_D
.text:0042EF57                 mov     ebp, ecx_D
.text:0042EF59                 shr     ebp, 1Bh
.text:0042EF5C                 shl     edi, 5
.text:0042EF5F                 or      edi, ebp
.text:0042EF61                 add     esi, edi
.text:0042EF63                 mov     edi, [esp+14h+E]
.text:0042EF67                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EF6D                 add     edx_C, esi
.text:0042EF6F                 mov     esi, [esp+14h+E]
.text:0042EF73                 shl     esi, 1Eh
.text:0042EF76                 mov     ebp, edx_C
.text:0042EF78                 shr     edi, 2
.text:0042EF7B                 or      esi, edi
.text:0042EF7D                 mov     [esp+14h+E], esi ; R2(D,E,A,B,C,32)
.text:0042EF7D                                         ; ***********************第2.12次运算END****
.text:0042EF81                 mov     edi, [ebx+38h]  ; ;***********************第2.13次运算开始****
.text:0042EF84                 mov     esi, [ebx+38h]
.text:0042EF87                 xor     edi, [ebx+24h]
.text:0042EF8A                 xor     esi, [ebx+24h]
.text:0042EF8D                 xor     edi, [ebx+0Ch]
.text:0042EF90                 xor     esi, [ebx+0Ch]
.text:0042EF93                 xor     edi, [ebx+4]
.text:0042EF96                 xor     esi, [ebx+4]
.text:0042EF99                 shr     edi, 1Fh
.text:0042EF9C                 add     esi, esi
.text:0042EF9E                 or      esi, edi
.text:0042EFA0                 mov     [ebx+4], esi
.text:0042EFA3                 mov     edi, [esp+14h+E]
.text:0042EFA7                 xor     edi, ecx_D
.text:0042EFA9                 xor     edi, [esp+14h+A]
.text:0042EFAD                 add     esi, edi
.text:0042EFAF                 mov     edi, edx_C
.text:0042EFB1                 shl     edi, 5
.text:0042EFB4                 shr     ebp, 1Bh
.text:0042EFB7                 or      edi, ebp
.text:0042EFB9                 add     esi, edi
.text:0042EFBB                 mov     edi, [ebx+3Ch]
.text:0042EFBE                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042EFC4                 xor     edi, [ebx+28h]
.text:0042EFC7                 add     eax_B, esi
.text:0042EFC9                 mov     esi, ecx_D
.text:0042EFCB                 shr     ecx_D, 2
.text:0042EFCE                 mov     ebp, eax_B
.text:0042EFD0                 shl     esi, 1Eh
.text:0042EFD3                 xor     edi, [ebx+10h]
.text:0042EFD6                 or      esi, ecx_D
.text:0042EFD8                 xor     edi, [ebx+8]
.text:0042EFDB                 mov     ecx_D, esi      ; R2(C,D,E,A,B,33)
.text:0042EFDB                                         ; ***********************第2.13次运算END****
.text:0042EFDD                 mov     esi, [ebx+3Ch]  ; ***********************第2.14次运算开始****
.text:0042EFE0                 xor     esi, [ebx+28h]
.text:0042EFE3                 xor     esi, [ebx+10h]
.text:0042EFE6                 xor     esi, [ebx+8]
.text:0042EFE9                 shr     edi, 1Fh
.text:0042EFEC                 add     esi, esi
.text:0042EFEE                 or      esi, edi
.text:0042EFF0                 mov     edi, ecx_D
.text:0042EFF2                 mov     [ebx+8], esi
.text:0042EFF5                 xor     edi, edx_C
.text:0042EFF7                 xor     edi, [esp+14h+E]
.text:0042EFFB                 add     esi, edi
.text:0042EFFD                 mov     edi, eax_B
.text:0042EFFF                 shl     edi, 5
.text:0042F002                 shr     ebp, 1Bh
.text:0042F005                 or      edi, ebp
.text:0042F007                 add     esi, edi
.text:0042F009                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F00F                 add     [esp+14h+A], esi
.text:0042F013                 mov     esi, edx_C
.text:0042F015                 shr     edx_C, 2
.text:0042F018                 mov     edi, [ebx]
.text:0042F01A                 shl     esi, 1Eh
.text:0042F01D                 xor     edi, [ebx+2Ch]
.text:0042F020                 or      esi, edx_C
.text:0042F022                 xor     edi, [ebx+14h]
.text:0042F025                 mov     edx_C, esi      ; R2(B,C,D,E,A,34)
.text:0042F025                                         ; ***********************第2.14次运算END****
.text:0042F027                 mov     esi, [ebx]      ; ***********************第2.15次运算开始****
.text:0042F029                 xor     esi, [ebx+2Ch]
.text:0042F02C                 xor     edi, [ebx+0Ch]
.text:0042F02F                 xor     esi, [ebx+14h]
.text:0042F032                 xor     esi, [ebx+0Ch]
.text:0042F035                 shr     edi, 1Fh
.text:0042F038                 add     esi, esi
.text:0042F03A                 or      esi, edi
.text:0042F03C                 mov     edi, edx_C
.text:0042F03E                 xor     edi, eax_B
.text:0042F040                 mov     [ebx+0Ch], esi
.text:0042F043                 xor     edi, ecx_D
.text:0042F045                 mov     ebp, [esp+14h+A]
.text:0042F049                 add     esi, edi
.text:0042F04B                 mov     edi, [esp+14h+A]
.text:0042F04F                 shl     edi, 5
.text:0042F052                 shr     ebp, 1Bh
.text:0042F055                 or      edi, ebp
.text:0042F057                 add     esi, edi
.text:0042F059                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F05F                 add     [esp+14h+E], esi
.text:0042F063                 mov     esi, eax_B
.text:0042F065                 shr     eax_B, 2
.text:0042F068                 mov     edi, [ebx+4]
.text:0042F06B                 shl     esi, 1Eh
.text:0042F06E                 xor     edi, [ebx+30h]
.text:0042F071                 or      esi, eax_B
.text:0042F073                 xor     edi, [ebx+18h]
.text:0042F076                 mov     eax_B, esi      ; R2(A,B,C,D,E,35)
.text:0042F076                                         ; ***********************第2.15次运算END****
.text:0042F078                 mov     esi, [ebx+4]    ; ***********************第2.16次运算开始****
.text:0042F07B                 xor     esi, [ebx+30h]
.text:0042F07E                 xor     edi, [ebx+10h]
.text:0042F081                 xor     esi, [ebx+18h]
.text:0042F084                 xor     esi, [ebx+10h]
.text:0042F087                 shr     edi, 1Fh
.text:0042F08A                 add     esi, esi
.text:0042F08C                 or      esi, edi
.text:0042F08E                 mov     [ebx+10h], esi
.text:0042F091                 mov     edi, [esp+14h+A]
.text:0042F095                 mov     ebp, [esp+14h+E]
.text:0042F099                 xor     edi, eax_B
.text:0042F09B                 xor     edi, edx_C
.text:0042F09D                 add     esi, edi
.text:0042F09F                 mov     edi, [esp+14h+E]
.text:0042F0A3                 shl     edi, 5
.text:0042F0A6                 shr     ebp, 1Bh
.text:0042F0A9                 or      edi, ebp
.text:0042F0AB                 add     esi, edi
.text:0042F0AD                 mov     edi, [esp+14h+A]
.text:0042F0B1                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F0B7                 add     ecx_D, esi
.text:0042F0B9                 mov     esi, [esp+14h+A]
.text:0042F0BD                 shl     esi, 1Eh
.text:0042F0C0                 mov     ebp, ecx_D
.text:0042F0C2                 shr     edi, 2
.text:0042F0C5                 or      esi, edi
.text:0042F0C7                 mov     [esp+14h+A], esi ; R2(E,A,B,C,D,36)
.text:0042F0C7                                         ; ***********************第2.16次运算END****
.text:0042F0CB                 mov     edi, [ebx+8]    ; ***********************第2.17次运算开始****
.text:0042F0CE                 mov     esi, [ebx+8]
.text:0042F0D1                 xor     edi, [ebx+34h]
.text:0042F0D4                 xor     esi, [ebx+34h]
.text:0042F0D7                 xor     edi, [ebx+1Ch]
.text:0042F0DA                 xor     esi, [ebx+1Ch]
.text:0042F0DD                 xor     edi, [ebx+14h]
.text:0042F0E0                 xor     esi, [ebx+14h]
.text:0042F0E3                 shr     edi, 1Fh
.text:0042F0E6                 add     esi, esi
.text:0042F0E8                 or      esi, edi
.text:0042F0EA                 mov     [ebx+14h], esi
.text:0042F0ED                 mov     edi, [esp+14h+E]
.text:0042F0F1                 xor     edi, [esp+14h+A]
.text:0042F0F5                 xor     edi, eax_B
.text:0042F0F7                 add     esi, edi
.text:0042F0F9                 mov     edi, ecx_D
.text:0042F0FB                 shl     edi, 5
.text:0042F0FE                 shr     ebp, 1Bh
.text:0042F101                 or      edi, ebp
.text:0042F103                 add     esi, edi
.text:0042F105                 mov     edi, [esp+14h+E]
.text:0042F109                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F10F                 add     edx_C, esi
.text:0042F111                 mov     esi, [esp+14h+E]
.text:0042F115                 shl     esi, 1Eh
.text:0042F118                 mov     ebp, edx_C
.text:0042F11A                 shr     edi, 2
.text:0042F11D                 or      esi, edi
.text:0042F11F                 mov     [esp+14h+E], esi ; R2(D,E,A,B,C,37)
.text:0042F11F                                         ; ***********************第2.17次运算END****
.text:0042F123                 mov     edi, [ebx+0Ch]  ; ***********************第2.18次运算开始****
.text:0042F126                 mov     esi, [ebx+0Ch]
.text:0042F129                 xor     edi, [ebx+38h]
.text:0042F12C                 xor     esi, [ebx+38h]
.text:0042F12F                 xor     edi, [ebx+20h]
.text:0042F132                 xor     esi, [ebx+20h]
.text:0042F135                 xor     edi, [ebx+18h]
.text:0042F138                 xor     esi, [ebx+18h]
.text:0042F13B                 shr     edi, 1Fh
.text:0042F13E                 add     esi, esi
.text:0042F140                 or      esi, edi
.text:0042F142                 mov     [ebx+18h], esi
.text:0042F145                 mov     edi, [esp+14h+E]
.text:0042F149                 xor     edi, ecx_D
.text:0042F14B                 xor     edi, [esp+14h+A]
.text:0042F14F                 add     esi, edi
.text:0042F151                 mov     edi, edx_C
.text:0042F153                 shl     edi, 5
.text:0042F156                 shr     ebp, 1Bh
.text:0042F159                 or      edi, ebp
.text:0042F15B                 add     esi, edi
.text:0042F15D                 mov     edi, [ebx+10h]
.text:0042F160                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F166                 xor     edi, [ebx+3Ch]
.text:0042F169                 add     eax_B, esi
.text:0042F16B                 mov     esi, ecx_D
.text:0042F16D                 shr     ecx_D, 2
.text:0042F170                 mov     ebp, eax_B
.text:0042F172                 shl     esi, 1Eh
.text:0042F175                 xor     edi, [ebx+24h]
.text:0042F178                 or      esi, ecx_D
.text:0042F17A                 xor     edi, [ebx+1Ch]
.text:0042F17D                 mov     ecx_D, esi      ; R2(C,D,E,A,B,38)
.text:0042F17D                                         ; ***********************第2.18次运算END****
.text:0042F17F                 mov     esi, [ebx+10h]  ; ***********************第2.19次运算开始****
.text:0042F182                 xor     esi, [ebx+3Ch]
.text:0042F185                 xor     esi, [ebx+24h]
.text:0042F188                 xor     esi, [ebx+1Ch]
.text:0042F18B                 shr     edi, 1Fh
.text:0042F18E                 add     esi, esi
.text:0042F190                 or      esi, edi
.text:0042F192                 mov     edi, ecx_D
.text:0042F194                 mov     [ebx+1Ch], esi
.text:0042F197                 xor     edi, edx_C
.text:0042F199                 xor     edi, [esp+14h+E]
.text:0042F19D                 add     esi, edi
.text:0042F19F                 mov     edi, eax_B
.text:0042F1A1                 shl     edi, 5
.text:0042F1A4                 shr     ebp, 1Bh
.text:0042F1A7                 or      edi, ebp
.text:0042F1A9                 add     esi, edi
.text:0042F1AB                 add     esi, 6ED9EBA1h ; <suspicious>
.text:0042F1B1                 add     [esp+14h+A], esi
.text:0042F1B5                 mov     esi, edx_C
.text:0042F1B7                 shr     edx_C, 2
.text:0042F1BA                 mov     ebp, [ebx+UI32._5]
.text:0042F1BD                 shl     esi, 1Eh
.text:0042F1C0                 xor     ebp, [ebx+UI32._0]
.text:0042F1C2                 or      esi, edx_C
.text:0042F1C4                 xor     ebp, [ebx+UI32._10]
.text:0042F1C7                 mov     edx_C, esi      ; R2(B,C,D,E,A,39)
.text:0042F1C7                                         ; ***********************第2.19次运算END****
.text:0042F1C7                                         ; ***********************第2轮计算结束****
.text:0042F1C7                                         ;
.text:0042F1C7                                         ;
.text:0042F1C9                 xor     ebp, [ebx+UI32._8] ; ***********************第3轮计算开始****
.text:0042F1C9                                         ; ***********************第3.0次运算开始****
.text:0042F1CC                 mov     esi, edx_C
.text:0042F1CE                 mov     edi, edx_C
.text:0042F1D0                 or      esi, eax_B      ; C|B
.text:0042F1D2                 and     edi, eax_B      ; C&B
.text:0042F1D4                 and     esi, ecx_D      ; (C|B)&D
.text:0042F1D6                 or      esi, edi        ; ((C|B)&D) | (C&B)
.text:0042F1D6                                         ;
.text:0042F1D6                                         ; 定义宏:
.text:0042F1D6                                         ; RX2(w,x,y) ( ((w|x)&y) | (w&x))
.text:0042F1D6                                         ;
.text:0042F1D6                                         ; RX2(B,C,D) = ((C|B)&D) | (C&B)
.text:0042F1D8                 mov     edi, [ebx+UI32._5]
.text:0042F1DB                 xor     edi, [ebx+UI32._0] ; buf[5] ^ buf[0]
.text:0042F1DD                 xor     edi, [ebx+UI32._10] ; buf[5] ^ buf[0] ^ buf[10]
.text:0042F1E0                 xor     edi, [ebx+UI32._8] ; buf[5] ^ buf[0] ^ buf[10] ^ buf[8]
.text:0042F1E3                 shr     ebp, 1Fh        ; (buf[5] ^ buf[0] ^ buf[10] ^ buf[8])>>31
.text:0042F1E6                 add     edi, edi        ; (buf[5] ^ buf[0] ^ buf[10] ^ buf[8])<<1
.text:0042F1E8                 or      edi, ebp
.text:0042F1EA                 mov     [ebx+UI32._8], edi ; buf[8] =RL((buf[5] ^ buf[0] ^ buf[10] ^ buf[8]),1)
.text:0042F1EA                                         ; RXL(40)
.text:0042F1ED                 add     esi, edi        ; RXL(40) + RX2(B,C,D)
.text:0042F1EF                 mov     edi, [esp+14h+A]
.text:0042F1F3                 mov     ebp, [esp+14h+A]
.text:0042F1F7                 shr     ebp, 1Bh        ; A>>27
.text:0042F1FA                 shl     edi, 5          ; A<<5
.text:0042F1FD                 or      edi, ebp        ; RL(A,5)
.text:0042F1FF                 add     esi, edi        ; RXL(40) + RX2(B,C,D) + RL(A,5)
.text:0042F201                 add     esi, 8F1BBCDCh
.text:0042F207                 add     [esp+14h+E], esi ; E += RXL(40) + RX2(B,C,D) + RL(A,5) + 0x8f1bbcdc
.text:0042F20B                 mov     esi, eax_B
.text:0042F20D                 shr     eax_B, 2        ; B>>2
.text:0042F210                 shl     esi, 1Eh        ; B<<30
.text:0042F213                 or      esi, eax_B      ; RL(B,30)
.text:0042F215                 mov     eax_B, esi      ; B = RL(B,30)
.text:0042F215                                         ;
.text:0042F215                                         ; 定义宏R3:
.text:0042F215                                         ; #define R3(a,b,c,d,e,i) ( e+=RXL(i)+RX2(b,c,d)+RL(a,5)+0x8f1bbcdc; b=RL(b,30); )
.text:0042F215                                         ;
.text:0042F215                                         ; 此次运算为: R3(A,B,C,D,E,40)
.text:0042F215                                         ; ***********************第3.0次运算end****
.text:0042F215                                         ;
.text:0042F217                 mov     esi, [esp+14h+A] ; ***********************第3.1次运算开始****
.text:0042F21B                 or      esi, eax_B
.text:0042F21D                 and     esi, edx_C
.text:0042F21F                 mov     edi, [esp+14h+A]
.text:0042F223                 mov     ebp, [ebx+18h]
.text:0042F226                 and     edi, eax_B
.text:0042F228                 xor     ebp, [ebx+4]
.text:0042F22B                 or      esi, edi
.text:0042F22D                 mov     edi, [ebx+18h]
.text:0042F230                 xor     edi, [ebx+4]
.text:0042F233                 xor     ebp, [ebx+2Ch]
.text:0042F236                 xor     edi, [ebx+2Ch]
.text:0042F239                 xor     ebp, [ebx+24h]
.text:0042F23C                 xor     edi, [ebx+24h]
.text:0042F23F                 shr     ebp, 1Fh
.text:0042F242                 add     edi, edi
.text:0042F244                 or      edi, ebp
.text:0042F246                 mov     [ebx+24h], edi
.text:0042F249                 add     esi, edi
.text:0042F24B                 mov     edi, [esp+14h+E]
.text:0042F24F                 mov     ebp, [esp+14h+E]
.text:0042F253                 shr     ebp, 1Bh
.text:0042F256                 shl     edi, 5
.text:0042F259                 or      edi, ebp
.text:0042F25B                 add     esi, edi
.text:0042F25D                 mov     edi, [esp+14h+A]
.text:0042F261                 add     esi, 8F1BBCDCh
.text:0042F267                 add     ecx_D, esi
.text:0042F269                 mov     esi, [esp+14h+A]
.text:0042F26D                 shl     esi, 1Eh        ; A<<30
.text:0042F270                 shr     edi, 2          ; A>>2
.text:0042F273                 or      esi, edi        ; RL(A,30)
.text:0042F275                 mov     [esp+14h+A], esi ; A = RL(A,30)
.text:0042F275                                         ; R3(E,A,B,C,D,41)
.text:0042F275                                         ; ***********************第3.1次运算END****
.text:0042F279                 mov     esi, [esp+14h+E] ; ***********************第3.2次运算开始****
.text:0042F27D                 mov     edi, [esp+14h+E]
.text:0042F281                 or      esi, [esp+14h+A]
.text:0042F285                 and     edi, [esp+14h+A]
.text:0042F289                 and     esi, eax_B
.text:0042F28B                 mov     ebp, [ebx+1Ch]
.text:0042F28E                 or      esi, edi
.text:0042F290                 mov     edi, [ebx+1Ch]
.text:0042F293                 xor     ebp, [ebx+8]
.text:0042F296                 xor     edi, [ebx+8]
.text:0042F299                 xor     ebp, [ebx+30h]
.text:0042F29C                 xor     edi, [ebx+30h]
.text:0042F29F                 xor     ebp, [ebx+28h]
.text:0042F2A2                 xor     edi, [ebx+28h]
.text:0042F2A5                 shr     ebp, 1Fh
.text:0042F2A8                 add     edi, edi
.text:0042F2AA                 or      edi, ebp
.text:0042F2AC                 mov     ebp, ecx_D
.text:0042F2AE                 mov     [ebx+28h], edi
.text:0042F2B1                 add     esi, edi
.text:0042F2B3                 mov     edi, ecx_D
.text:0042F2B5                 shl     edi, 5
.text:0042F2B8                 shr     ebp, 1Bh
.text:0042F2BB                 or      edi, ebp
.text:0042F2BD                 add     esi, edi
.text:0042F2BF                 mov     edi, [esp+14h+E]
.text:0042F2C3                 add     esi, 8F1BBCDCh
.text:0042F2C9                 add     edx_C, esi
.text:0042F2CB                 mov     esi, [esp+14h+E]
.text:0042F2CF                 shl     esi, 1Eh
.text:0042F2D2                 shr     edi, 2
.text:0042F2D5                 or      esi, edi
.text:0042F2D7                 mov     [esp+14h+E], esi ; R3(D,E,A,B,C,42)
.text:0042F2D7                                         ; ***********************第3.2次运算end****
.text:0042F2DB                 mov     esi, [esp+14h+E] ; ***********************第3.3次运算开始****
.text:0042F2DF                 mov     edi, [esp+14h+E]
.text:0042F2E3                 or      esi, ecx_D
.text:0042F2E5                 and     edi, ecx_D
.text:0042F2E7                 and     esi, [esp+14h+A]
.text:0042F2EB                 mov     ebp, [ebx+20h]
.text:0042F2EE                 or      esi, edi
.text:0042F2F0                 mov     edi, [ebx+20h]
.text:0042F2F3                 xor     ebp, [ebx+0Ch]
.text:0042F2F6                 xor     edi, [ebx+0Ch]
.text:0042F2F9                 xor     ebp, [ebx+34h]
.text:0042F2FC                 xor     edi, [ebx+34h]
.text:0042F2FF                 xor     ebp, [ebx+2Ch]
.text:0042F302                 xor     edi, [ebx+2Ch]
.text:0042F305                 shr     ebp, 1Fh
.text:0042F308                 add     edi, edi
.text:0042F30A                 or      edi, ebp
.text:0042F30C                 mov     ebp, edx_C
.text:0042F30E                 mov     [ebx+2Ch], edi
.text:0042F311                 add     esi, edi
.text:0042F313                 mov     edi, edx_C
.text:0042F315                 shl     edi, 5
.text:0042F318                 shr     ebp, 1Bh
.text:0042F31B                 or      edi, ebp
.text:0042F31D                 mov     ebp, [ebx+24h]
.text:0042F320                 add     esi, edi
.text:0042F322                 xor     ebp, [ebx+10h]
.text:0042F325                 add     esi, 8F1BBCDCh
.text:0042F32B                 xor     ebp, [ebx+38h]
.text:0042F32E                 add     eax_B, esi
.text:0042F330                 mov     esi, ecx_D
.text:0042F332                 shr     ecx_D, 2
.text:0042F335                 xor     ebp, [ebx+30h]
.text:0042F338                 shl     esi, 1Eh
.text:0042F33B                 or      esi, ecx_D
.text:0042F33D                 mov     ecx_D, esi      ; R3(C,D,E,A,B,43)
.text:0042F33D                                         ; ***********************第3.3次运算END****
.text:0042F33F                 mov     esi, ecx_D      ; ***********************第3.4次运算开始****
.text:0042F341                 mov     edi, ecx_D
.text:0042F343                 or      esi, edx_C
.text:0042F345                 and     edi, edx_C
.text:0042F347                 and     esi, [esp+14h+E]
.text:0042F34B                 or      esi, edi
.text:0042F34D                 mov     edi, [ebx+24h]
.text:0042F350                 xor     edi, [ebx+10h]
.text:0042F353                 xor     edi, [ebx+38h]
.text:0042F356                 xor     edi, [ebx+30h]
.text:0042F359                 shr     ebp, 1Fh
.text:0042F35C                 add     edi, edi
.text:0042F35E                 or      edi, ebp
.text:0042F360                 mov     ebp, eax_B
.text:0042F362                 mov     [ebx+30h], edi
.text:0042F365                 add     esi, edi
.text:0042F367                 mov     edi, eax_B
.text:0042F369                 shl     edi, 5
.text:0042F36C                 shr     ebp, 1Bh
.text:0042F36F                 or      edi, ebp
.text:0042F371                 add     esi, edi
.text:0042F373                 add     esi, 8F1BBCDCh
.text:0042F379                 add     [esp+14h+A], esi
.text:0042F37D                 mov     esi, edx_C
.text:0042F37F                 shr     edx_C, 2
.text:0042F382                 mov     ebp, [ebx+28h]
.text:0042F385                 shl     esi, 1Eh
.text:0042F388                 xor     ebp, [ebx+14h]
.text:0042F38B                 or      esi, edx_C
.text:0042F38D                 xor     ebp, [ebx+3Ch]
.text:0042F390                 mov     edx_C, esi      ; R3(B,C,D,E,A,44)
.text:0042F390                                         ; ***********************第3.4次运算END****
.text:0042F392                 xor     ebp, [ebx+34h]  ; ***********************第3.5次运算开始****
.text:0042F395                 mov     esi, edx_C
.text:0042F397                 mov     edi, edx_C
.text:0042F399                 or      esi, eax_B
.text:0042F39B                 and     edi, eax_B
.text:0042F39D                 and     esi, ecx_D
.text:0042F39F                 or      esi, edi
.text:0042F3A1                 mov     edi, [ebx+28h]
.text:0042F3A4                 xor     edi, [ebx+14h]
.text:0042F3A7                 xor     edi, [ebx+3Ch]
.text:0042F3AA                 xor     edi, [ebx+34h]
.text:0042F3AD                 shr     ebp, 1Fh
.text:0042F3B0                 add     edi, edi
.text:0042F3B2                 or      edi, ebp
.text:0042F3B4                 mov     [ebx+34h], edi
.text:0042F3B7                 add     esi, edi
.text:0042F3B9                 mov     edi, [esp+14h+A]
.text:0042F3BD                 mov     ebp, [esp+14h+A]
.text:0042F3C1                 shr     ebp, 1Bh
.text:0042F3C4                 shl     edi, 5
.text:0042F3C7                 or      edi, ebp
.text:0042F3C9                 add     esi, edi
.text:0042F3CB                 add     esi, 8F1BBCDCh
.text:0042F3D1                 add     [esp+14h+E], esi
.text:0042F3D5                 mov     esi, eax_B
.text:0042F3D7                 shr     eax_B, 2
.text:0042F3DA                 mov     edi, [esp+14h+A]
.text:0042F3DE                 shl     esi, 1Eh
.text:0042F3E1                 mov     ebp, [ebx+2Ch]
.text:0042F3E4                 or      esi, eax_B
.text:0042F3E6                 xor     ebp, [ebx+18h]
.text:0042F3E9                 mov     eax_B, esi      ; R3(A,B,C,D,E,45)
.text:0042F3E9                                         ; ***********************第3.5次运算END****
.text:0042F3EB                 mov     esi, [esp+14h+A] ; ***********************第3.6次运算开始****
.text:0042F3EF                 or      esi, eax_B
.text:0042F3F1                 and     edi, eax_B
.text:0042F3F3                 and     esi, edx_C
.text:0042F3F5                 xor     ebp, [ebx]
.text:0042F3F7                 or      esi, edi
.text:0042F3F9                 mov     edi, [ebx+2Ch]
.text:0042F3FC                 xor     edi, [ebx+18h]
.text:0042F3FF                 xor     ebp, [ebx+38h]
.text:0042F402                 xor     edi, [ebx]
.text:0042F404                 xor     edi, [ebx+38h]
.text:0042F407                 shr     ebp, 1Fh
.text:0042F40A                 add     edi, edi
.text:0042F40C                 or      edi, ebp
.text:0042F40E                 mov     [ebx+38h], edi
.text:0042F411                 add     esi, edi
.text:0042F413                 mov     edi, [esp+14h+E]
.text:0042F417                 mov     ebp, [esp+14h+E]
.text:0042F41B                 shr     ebp, 1Bh
.text:0042F41E                 shl     edi, 5
.text:0042F421                 or      edi, ebp
.text:0042F423                 add     esi, edi
.text:0042F425                 mov     edi, [esp+14h+A]
.text:0042F429                 add     esi, 8F1BBCDCh
.text:0042F42F                 add     ecx_D, esi
.text:0042F431                 mov     esi, [esp+14h+A]
.text:0042F435                 shl     esi, 1Eh
.text:0042F438                 shr     edi, 2
.text:0042F43B                 or      esi, edi
.text:0042F43D                 mov     [esp+14h+A], esi ; R3(E,A,B,C,D,46)
.text:0042F43D                                         ; ***********************第3.6次运算END****
.text:0042F441                 mov     esi, [esp+14h+E] ; ***********************第3.7次运算开始****
.text:0042F445                 mov     edi, [esp+14h+E]
.text:0042F449                 or      esi, [esp+14h+A]
.text:0042F44D                 and     edi, [esp+14h+A]
.text:0042F451                 and     esi, eax_B
.text:0042F453                 mov     ebp, [ebx+30h]
.text:0042F456                 or      esi, edi
.text:0042F458                 mov     edi, [ebx+30h]
.text:0042F45B                 xor     ebp, [ebx+1Ch]
.text:0042F45E                 xor     edi, [ebx+1Ch]
.text:0042F461                 xor     ebp, [ebx+4]
.text:0042F464                 xor     edi, [ebx+4]
.text:0042F467                 xor     ebp, [ebx+3Ch]
.text:0042F46A                 xor     edi, [ebx+3Ch]
.text:0042F46D                 shr     ebp, 1Fh
.text:0042F470                 add     edi, edi
.text:0042F472                 or      edi, ebp
.text:0042F474                 mov     ebp, ecx_D
.text:0042F476                 mov     [ebx+3Ch], edi
.text:0042F479                 add     esi, edi
.text:0042F47B                 mov     edi, ecx_D
.text:0042F47D                 shl     edi, 5
.text:0042F480                 shr     ebp, 1Bh
.text:0042F483                 or      edi, ebp
.text:0042F485                 add     esi, edi
.text:0042F487                 mov     edi, [esp+14h+E]
.text:0042F48B                 add     esi, 8F1BBCDCh
.text:0042F491                 add     edx_C, esi
.text:0042F493                 mov     esi, [esp+14h+E]
.text:0042F497                 shl     esi, 1Eh
.text:0042F49A                 shr     edi, 2
.text:0042F49D                 or      esi, edi
.text:0042F49F                 mov     [esp+14h+E], esi ; R3(D,E,A,B,C,47)
.text:0042F49F                                         ; ***********************第3.7次运算END****
.text:0042F4A3                 mov     esi, [esp+14h+E] ; ***********************第3.8次运算开始****
.text:0042F4A7                 mov     edi, [esp+14h+E]
.text:0042F4AB                 or      esi, ecx_D
.text:0042F4AD                 and     edi, ecx_D
.text:0042F4AF                 and     esi, [esp+14h+A]
.text:0042F4B3                 mov     ebp, [ebx+34h]
.text:0042F4B6                 or      esi, edi
.text:0042F4B8                 mov     edi, [ebx+34h]
.text:0042F4BB                 xor     ebp, [ebx+20h]
.text:0042F4BE                 xor     edi, [ebx+20h]
.text:0042F4C1                 xor     ebp, [ebx+8]
.text:0042F4C4                 xor     edi, [ebx+8]
.text:0042F4C7                 xor     ebp, [ebx]
.text:0042F4C9                 xor     edi, [ebx]
.text:0042F4CB                 shr     ebp, 1Fh
.text:0042F4CE                 add     edi, edi
.text:0042F4D0                 or      edi, ebp
.text:0042F4D2                 mov     ebp, edx_C
.text:0042F4D4                 add     esi, edi
.text:0042F4D6                 mov     [ebx], edi
.text:0042F4D8                 mov     edi, edx_C
.text:0042F4DA                 shr     ebp, 1Bh
.text:0042F4DD                 shl     edi, 5
.text:0042F4E0                 or      edi, ebp
.text:0042F4E2                 add     esi, edi
.text:0042F4E4                 add     esi, 8F1BBCDCh
.text:0042F4EA                 add     eax_B, esi
.text:0042F4EC                 mov     esi, ecx_D
.text:0042F4EE                 shl     esi, 1Eh
.text:0042F4F1                 shr     ecx_D, 2
.text:0042F4F4                 or      esi, ecx_D
.text:0042F4F6                 mov     ebp, [ebx+38h]
.text:0042F4F9                 mov     ecx_D, esi      ; R3(C,D,E,A,B,48)
.text:0042F4F9                                         ; ***********************第3.8次运算END****
.text:0042F4FB                 xor     ebp, [ebx+24h]  ; ***********************第3.9次运算开始****
.text:0042F4FE                 mov     esi, ecx_D
.text:0042F500                 mov     edi, ecx_D
.text:0042F502                 or      esi, edx_C
.text:0042F504                 and     edi, edx_C
.text:0042F506                 and     esi, [esp+14h+E]
.text:0042F50A                 xor     ebp, [ebx+0Ch]
.text:0042F50D                 or      esi, edi
.text:0042F50F                 mov     edi, [ebx+38h]
.text:0042F512                 xor     edi, [ebx+24h]
.text:0042F515                 xor     ebp, [ebx+4]
.text:0042F518                 xor     edi, [ebx+0Ch]
.text:0042F51B                 xor     edi, [ebx+4]
.text:0042F51E                 shr     ebp, 1Fh
.text:0042F521                 add     edi, edi
.text:0042F523                 or      edi, ebp
.text:0042F525                 mov     ebp, eax_B
.text:0042F527                 mov     [ebx+4], edi
.text:0042F52A                 add     esi, edi
.text:0042F52C                 mov     edi, eax_B
.text:0042F52E                 shl     edi, 5
.text:0042F531                 shr     ebp, 1Bh
.text:0042F534                 or      edi, ebp
.text:0042F536                 add     esi, edi
.text:0042F538                 add     esi, 8F1BBCDCh
.text:0042F53E                 add     [esp+14h+A], esi
.text:0042F542                 mov     esi, edx_C
.text:0042F544                 shr     edx_C, 2
.text:0042F547                 mov     ebp, [ebx+3Ch]
.text:0042F54A                 shl     esi, 1Eh
.text:0042F54D                 xor     ebp, [ebx+28h]
.text:0042F550                 or      esi, edx_C
.text:0042F552                 xor     ebp, [ebx+10h]
.text:0042F555                 mov     edx_C, esi      ; R3(B,C,D,E,A,49)
.text:0042F555                                         ; ***********************第3.9次运算END****
.text:0042F557                 xor     ebp, [ebx+8]    ; ***********************第3.10次运算开始****
.text:0042F55A                 mov     esi, edx_C
.text:0042F55C                 mov     edi, edx_C
.text:0042F55E                 or      esi, eax_B
.text:0042F560                 and     edi, eax_B
.text:0042F562                 and     esi, ecx_D
.text:0042F564                 or      esi, edi
.text:0042F566                 mov     edi, [ebx+3Ch]
.text:0042F569                 xor     edi, [ebx+28h]
.text:0042F56C                 xor     edi, [ebx+10h]
.text:0042F56F                 xor     edi, [ebx+8]
.text:0042F572                 shr     ebp, 1Fh
.text:0042F575                 add     edi, edi
.text:0042F577                 or      edi, ebp
.text:0042F579                 mov     [ebx+8], edi
.text:0042F57C                 add     esi, edi
.text:0042F57E                 mov     edi, [esp+14h+A]
.text:0042F582                 mov     ebp, [esp+14h+A]
.text:0042F586                 shr     ebp, 1Bh
.text:0042F589                 shl     edi, 5
.text:0042F58C                 or      edi, ebp
.text:0042F58E                 add     esi, edi
.text:0042F590                 add     esi, 8F1BBCDCh
.text:0042F596                 add     [esp+14h+E], esi
.text:0042F59A                 mov     esi, eax_B
.text:0042F59C                 shr     eax_B, 2
.text:0042F59F                 mov     edi, [esp+14h+A]
.text:0042F5A3                 shl     esi, 1Eh
.text:0042F5A6                 mov     ebp, [ebx]
.text:0042F5A8                 or      esi, eax_B
.text:0042F5AA                 xor     ebp, [ebx+2Ch]
.text:0042F5AD                 mov     eax_B, esi      ; R3(A,B,C,D,E,50)
.text:0042F5AD                                         ; ***********************第3.10次运算END****
.text:0042F5AF                 mov     esi, [esp+14h+A] ; ***********************第3.11次运算开始****
.text:0042F5B3                 or      esi, eax_B
.text:0042F5B5                 and     edi, eax_B
.text:0042F5B7                 and     esi, edx_C
.text:0042F5B9                 xor     ebp, [ebx+14h]
.text:0042F5BC                 or      esi, edi
.text:0042F5BE                 mov     edi, [ebx]
.text:0042F5C0                 xor     edi, [ebx+2Ch]
.text:0042F5C3                 xor     ebp, [ebx+0Ch]
.text:0042F5C6                 xor     edi, [ebx+14h]
.text:0042F5C9                 xor     edi, [ebx+0Ch]
.text:0042F5CC                 shr     ebp, 1Fh
.text:0042F5CF                 add     edi, edi
.text:0042F5D1                 or      edi, ebp
.text:0042F5D3                 mov     [ebx+0Ch], edi
.text:0042F5D6                 add     esi, edi
.text:0042F5D8                 mov     edi, [esp+14h+E]
.text:0042F5DC                 mov     ebp, [esp+14h+E]
.text:0042F5E0                 shr     ebp, 1Bh
.text:0042F5E3                 shl     edi, 5
.text:0042F5E6                 or      edi, ebp
.text:0042F5E8                 add     esi, edi
.text:0042F5EA                 mov     edi, [esp+14h+A]
.text:0042F5EE                 add     esi, 8F1BBCDCh
.text:0042F5F4                 add     ecx_D, esi
.text:0042F5F6                 mov     esi, [esp+14h+A]
.text:0042F5FA                 shl     esi, 1Eh
.text:0042F5FD                 shr     edi, 2
.text:0042F600                 or      esi, edi
.text:0042F602                 mov     [esp+14h+A], esi ; R3(E,A,B,C,D,51)
.text:0042F602                                         ; ***********************第3.11次运算END****
.text:0042F606                 mov     esi, [esp+14h+E] ; ***********************第3.12次运算开始****
.text:0042F60A                 mov     edi, [esp+14h+E]
.text:0042F60E                 or      esi, [esp+14h+A]
.text:0042F612                 and     edi, [esp+14h+A]
.text:0042F616                 and     esi, eax_B
.text:0042F618                 mov     ebp, [ebx+4]
.text:0042F61B                 or      esi, edi
.text:0042F61D                 mov     edi, [ebx+4]
.text:0042F620                 xor     ebp, [ebx+30h]
.text:0042F623                 xor     edi, [ebx+30h]
.text:0042F626                 xor     ebp, [ebx+18h]
.text:0042F629                 xor     edi, [ebx+18h]
.text:0042F62C                 xor     ebp, [ebx+10h]
.text:0042F62F                 xor     edi, [ebx+10h]
.text:0042F632                 shr     ebp, 1Fh
.text:0042F635                 add     edi, edi
.text:0042F637                 or      edi, ebp
.text:0042F639                 mov     ebp, ecx_D
.text:0042F63B                 mov     [ebx+10h], edi
.text:0042F63E                 add     esi, edi
.text:0042F640                 mov     edi, ecx_D
.text:0042F642                 shl     edi, 5
.text:0042F645                 shr     ebp, 1Bh
.text:0042F648                 or      edi, ebp
.text:0042F64A                 add     esi, edi
.text:0042F64C                 mov     edi, [esp+14h+E]
.text:0042F650                 add     esi, 8F1BBCDCh
.text:0042F656                 add     edx_C, esi
.text:0042F658                 mov     esi, [esp+14h+E]
.text:0042F65C                 shl     esi, 1Eh
.text:0042F65F                 shr     edi, 2
.text:0042F662                 or      esi, edi
.text:0042F664                 mov     [esp+14h+E], esi ; R3(D,E,A,B,C,D,52)
.text:0042F664                                         ; ***********************第3.12次运算END****
.text:0042F668                 mov     esi, [esp+14h+E] ; ***********************第3.13次运算开始****
.text:0042F66C                 mov     edi, [esp+14h+E]
.text:0042F670                 or      esi, ecx_D
.text:0042F672                 and     edi, ecx_D
.text:0042F674                 and     esi, [esp+14h+A]
.text:0042F678                 mov     ebp, [ebx+8]
.text:0042F67B                 or      esi, edi
.text:0042F67D                 mov     edi, [ebx+8]
.text:0042F680                 xor     ebp, [ebx+34h]
.text:0042F683                 xor     edi, [ebx+34h]
.text:0042F686                 xor     ebp, [ebx+1Ch]
.text:0042F689                 xor     edi, [ebx+1Ch]
.text:0042F68C                 xor     ebp, [ebx+14h]
.text:0042F68F                 xor     edi, [ebx+14h]
.text:0042F692                 shr     ebp, 1Fh
.text:0042F695                 add     edi, edi
.text:0042F697                 or      edi, ebp
.text:0042F699                 mov     ebp, edx_C
.text:0042F69B                 mov     [ebx+14h], edi
.text:0042F69E                 add     esi, edi
.text:0042F6A0                 mov     edi, edx_C
.text:0042F6A2                 shl     edi, 5
.text:0042F6A5                 shr     ebp, 1Bh
.text:0042F6A8                 or      edi, ebp
.text:0042F6AA                 mov     ebp, [ebx+0Ch]
.text:0042F6AD                 add     esi, edi
.text:0042F6AF                 xor     ebp, [ebx+38h]
.text:0042F6B2                 add     esi, 8F1BBCDCh
.text:0042F6B8                 xor     ebp, [ebx+20h]
.text:0042F6BB                 add     eax_B, esi
.text:0042F6BD                 mov     esi, ecx_D
.text:0042F6BF                 shr     ecx_D, 2
.text:0042F6C2                 xor     ebp, [ebx+18h]
.text:0042F6C5                 shl     esi, 1Eh
.text:0042F6C8                 or      esi, ecx_D
.text:0042F6CA                 mov     ecx_D, esi      ; R3(C,D,E,A,B,53)
.text:0042F6CA                                         ; ***********************第3.13次运算END****
.text:0042F6CC                 mov     esi, ecx_D      ; ***********************第3.14次运算开始****
.text:0042F6CE                 mov     edi, ecx_D
.text:0042F6D0                 or      esi, edx_C
.text:0042F6D2                 and     edi, edx_C
.text:0042F6D4                 and     esi, [esp+14h+E]
.text:0042F6D8                 or      esi, edi
.text:0042F6DA                 mov     edi, [ebx+0Ch]
.text:0042F6DD                 xor     edi, [ebx+38h]
.text:0042F6E0                 xor     edi, [ebx+20h]
.text:0042F6E3                 xor     edi, [ebx+18h]
.text:0042F6E6                 shr     ebp, 1Fh
.text:0042F6E9                 add     edi, edi
.text:0042F6EB                 or      edi, ebp
.text:0042F6ED                 mov     ebp, eax_B
.text:0042F6EF                 mov     [ebx+18h], edi
.text:0042F6F2                 add     esi, edi
.text:0042F6F4                 mov     edi, eax_B
.text:0042F6F6                 shl     edi, 5
.text:0042F6F9                 shr     ebp, 1Bh
.text:0042F6FC                 or      edi, ebp
.text:0042F6FE                 add     esi, edi
.text:0042F700                 add     esi, 8F1BBCDCh
.text:0042F706                 add     [esp+14h+A], esi
.text:0042F70A                 mov     esi, edx_C
.text:0042F70C                 shr     edx_C, 2
.text:0042F70F                 mov     ebp, [ebx+10h]
.text:0042F712                 shl     esi, 1Eh
.text:0042F715                 xor     ebp, [ebx+3Ch]
.text:0042F718                 or      esi, edx_C
.text:0042F71A                 xor     ebp, [ebx+24h]
.text:0042F71D                 mov     edx_C, esi      ; R3(B,C,D,E,A,54)
.text:0042F71D                                         ; ***********************第3.14次运算END****
.text:0042F71F                 xor     ebp, [ebx+1Ch]  ; ***********************第3.15次运算开始****
.text:0042F722                 mov     esi, edx_C
.text:0042F724                 mov     edi, edx_C
.text:0042F726                 or      esi, eax_B
.text:0042F728                 and     edi, eax_B
.text:0042F72A                 and     esi, ecx_D
.text:0042F72C                 or      esi, edi
.text:0042F72E                 mov     edi, [ebx+10h]
.text:0042F731                 xor     edi, [ebx+3Ch]
.text:0042F734                 xor     edi, [ebx+24h]
.text:0042F737                 xor     edi, [ebx+1Ch]
.text:0042F73A                 shr     ebp, 1Fh
.text:0042F73D                 add     edi, edi
.text:0042F73F                 or      edi, ebp
.text:0042F741                 mov     [ebx+1Ch], edi
.text:0042F744                 add     esi, edi
.text:0042F746                 mov     edi, [esp+14h+A]
.text:0042F74A                 mov     ebp, [esp+14h+A]
.text:0042F74E                 shr     ebp, 1Bh
.text:0042F751                 shl     edi, 5
.text:0042F754                 or      edi, ebp
.text:0042F756                 add     esi, edi
.text:0042F758                 add     esi, 8F1BBCDCh
.text:0042F75E                 add     [esp+14h+E], esi
.text:0042F762                 mov     esi, eax_B
.text:0042F764                 shr     eax_B, 2
.text:0042F767                 mov     edi, [esp+14h+A]
.text:0042F76B                 shl     esi, 1Eh
.text:0042F76E                 mov     ebp, [ebx+14h]
.text:0042F771                 or      esi, eax_B
.text:0042F773                 xor     ebp, [ebx]
.text:0042F775                 mov     eax_B, esi      ; R3(A,B,C,D,E,55)
.text:0042F775                                         ; ***********************第3.15次运算END****
.text:0042F777                 mov     esi, [esp+14h+A] ; ***********************第3.16次运算开始****
.text:0042F77B                 or      esi, eax_B
.text:0042F77D                 and     edi, eax_B
.text:0042F77F                 and     esi, edx_C
.text:0042F781                 xor     ebp, [ebx+28h]
.text:0042F784                 or      esi, edi
.text:0042F786                 mov     edi, [ebx+14h]
.text:0042F789                 xor     edi, [ebx]
.text:0042F78B                 xor     ebp, [ebx+20h]
.text:0042F78E                 xor     edi, [ebx+28h]
.text:0042F791                 xor     edi, [ebx+20h]
.text:0042F794                 shr     ebp, 1Fh
.text:0042F797                 add     edi, edi
.text:0042F799                 or      edi, ebp
.text:0042F79B                 mov     [ebx+20h], edi
.text:0042F79E                 add     esi, edi
.text:0042F7A0                 mov     edi, [esp+14h+E]
.text:0042F7A4                 mov     ebp, [esp+14h+E]
.text:0042F7A8                 shr     ebp, 1Bh
.text:0042F7AB                 shl     edi, 5
.text:0042F7AE                 or      edi, ebp
.text:0042F7B0                 add     esi, edi
.text:0042F7B2                 add     esi, 8F1BBCDCh
.text:0042F7B8                 add     ecx_D, esi
.text:0042F7BA                 mov     esi, [esp+14h+A]
.text:0042F7BE                 mov     edi, [esp+14h+A]
.text:0042F7C2                 shr     edi, 2
.text:0042F7C5                 shl     esi, 1Eh
.text:0042F7C8                 or      esi, edi
.text:0042F7CA                 mov     [esp+14h+A], esi ; R3(E,A,B,C,D,56)
.text:0042F7CA                                         ; ***********************第3.16次运算END****
.text:0042F7CE                 mov     esi, [esp+14h+E] ; ***********************第3.17次运算开始****
.text:0042F7D2                 mov     edi, [esp+14h+E]
.text:0042F7D6                 or      esi, [esp+14h+A]
.text:0042F7DA                 and     edi, [esp+14h+A]
.text:0042F7DE                 and     esi, eax_B
.text:0042F7E0                 mov     ebp, [ebx+18h]
.text:0042F7E3                 or      esi, edi
.text:0042F7E5                 mov     edi, [ebx+18h]
.text:0042F7E8                 xor     ebp, [ebx+4]
.text:0042F7EB                 xor     edi, [ebx+4]
.text:0042F7EE                 xor     ebp, [ebx+2Ch]
.text:0042F7F1                 xor     edi, [ebx+2Ch]
.text:0042F7F4                 xor     ebp, [ebx+24h]
.text:0042F7F7                 xor     edi, [ebx+24h]
.text:0042F7FA                 shr     ebp, 1Fh
.text:0042F7FD                 add     edi, edi
.text:0042F7FF                 or      edi, ebp
.text:0042F801                 mov     ebp, ecx_D
.text:0042F803                 mov     [ebx+24h], edi
.text:0042F806                 add     esi, edi
.text:0042F808                 mov     edi, ecx_D
.text:0042F80A                 shl     edi, 5
.text:0042F80D                 shr     ebp, 1Bh
.text:0042F810                 or      edi, ebp
.text:0042F812                 add     esi, edi
.text:0042F814                 mov     edi, [esp+14h+E]
.text:0042F818                 add     esi, 8F1BBCDCh
.text:0042F81E                 add     edx_C, esi
.text:0042F820                 mov     esi, [esp+14h+E]
.text:0042F824                 shl     esi, 1Eh
.text:0042F827                 shr     edi, 2
.text:0042F82A                 or      esi, edi
.text:0042F82C                 mov     [esp+14h+E], esi ; R3(D,E,A,B,C,57)
.text:0042F82C                                         ; ***********************第3.17次运算END****
.text:0042F830                 mov     esi, [esp+14h+E] ; ***********************第3.18次运算开始****
.text:0042F834                 mov     edi, [esp+14h+E]
.text:0042F838                 or      esi, ecx_D
.text:0042F83A                 and     edi, ecx_D
.text:0042F83C                 and     esi, [esp+14h+A]
.text:0042F840                 mov     ebp, [ebx+1Ch]
.text:0042F843                 or      esi, edi
.text:0042F845                 mov     edi, [ebx+1Ch]
.text:0042F848                 xor     ebp, [ebx+8]
.text:0042F84B                 xor     edi, [ebx+8]
.text:0042F84E                 xor     ebp, [ebx+30h]
.text:0042F851                 xor     edi, [ebx+30h]
.text:0042F854                 xor     ebp, [ebx+28h]
.text:0042F857                 xor     edi, [ebx+28h]
.text:0042F85A                 shr     ebp, 1Fh
.text:0042F85D                 add     edi, edi
.text:0042F85F                 or      edi, ebp
.text:0042F861                 mov     ebp, edx_C
.text:0042F863                 mov     [ebx+28h], edi
.text:0042F866                 add     esi, edi
.text:0042F868                 mov     edi, edx_C
.text:0042F86A                 shl     edi, 5
.text:0042F86D                 shr     ebp, 1Bh
.text:0042F870                 or      edi, ebp
.text:0042F872                 mov     ebp, [ebx+20h]
.text:0042F875                 add     esi, edi
.text:0042F877                 xor     ebp, [ebx+0Ch]
.text:0042F87A                 add     esi, 8F1BBCDCh
.text:0042F880                 xor     ebp, [ebx+34h]
.text:0042F883                 add     eax_B, esi
.text:0042F885                 mov     esi, ecx_D
.text:0042F887                 shr     ecx_D, 2
.text:0042F88A                 xor     ebp, [ebx+2Ch]
.text:0042F88D                 shl     esi, 1Eh
.text:0042F890                 or      esi, ecx_D
.text:0042F892                 mov     ecx_D, esi      ; R3(C,D,E,A,B,58)
.text:0042F892                                         ; ***********************第3.18次运算END****
.text:0042F894                 mov     esi, ecx_D      ; ***********************第3.19次运算开始****
.text:0042F896                 mov     edi, ecx_D
.text:0042F898                 or      esi, edx_C
.text:0042F89A                 and     edi, edx_C
.text:0042F89C                 and     esi, [esp+14h+E]
.text:0042F8A0                 or      esi, edi
.text:0042F8A2                 mov     edi, [ebx+20h]
.text:0042F8A5                 xor     edi, [ebx+0Ch]
.text:0042F8A8                 xor     edi, [ebx+34h]
.text:0042F8AB                 xor     edi, [ebx+2Ch]
.text:0042F8AE                 shr     ebp, 1Fh
.text:0042F8B1                 add     edi, edi
.text:0042F8B3                 or      edi, ebp
.text:0042F8B5                 mov     ebp, eax_B
.text:0042F8B7                 mov     [ebx+2Ch], edi
.text:0042F8BA                 add     esi, edi
.text:0042F8BC                 mov     edi, eax_B
.text:0042F8BE                 shl     edi, 5
.text:0042F8C1                 shr     ebp, 1Bh
.text:0042F8C4                 or      edi, ebp
.text:0042F8C6                 add     esi, edi
.text:0042F8C8                 add     esi, 8F1BBCDCh
.text:0042F8CE                 add     [esp+14h+A], esi
.text:0042F8D2                 mov     esi, edx_C
.text:0042F8D4                 shr     edx_C, 2
.text:0042F8D7                 mov     edi, [ebx+UI32._9]
.text:0042F8DA                 shl     esi, 1Eh
.text:0042F8DD                 xor     edi, [ebx+UI32._4]
.text:0042F8E0                 or      esi, edx_C
.text:0042F8E2                 xor     edi, [ebx+UI32._14]
.text:0042F8E5                 mov     edx_C, esi      ; R3(B,C,D,E,A,59)
.text:0042F8E5                                         ; ***********************第3.19次运算END****
.text:0042F8E5                                         ; ***********************第3轮计算END****
.text:0042F8E7                 mov     esi, [ebx+UI32._9] ; ***********************第4轮计算开始****
.text:0042F8E7                                         ; ***********************第4.0次运算开始****
.text:0042F8EA                 xor     esi, [ebx+UI32._4] ; buf[9] ^ buf[4]
.text:0042F8ED                 xor     edi, [ebx+UI32._12]
.text:0042F8F0                 xor     esi, [ebx+UI32._14] ; buf[9] ^ buf[4] ^ buf[14]
.text:0042F8F3                 xor     esi, [ebx+UI32._12] ; buf[9] ^ buf[4] ^ buf[14] ^ buf[12]
.text:0042F8F6                 shr     edi, 1Fh        ; (buf[9] ^ buf[4] ^ buf[14] ^ buf[12])>>31
.text:0042F8F9                 add     esi, esi        ; (buf[9] ^ buf[4] ^ buf[14] ^ buf[12])<<1
.text:0042F8FB                 or      esi, edi        ; RL((buf[9] ^ buf[4] ^ buf[14] ^ buf[12]),1)
.text:0042F8FD                 mov     edi, edx_C
.text:0042F8FF                 xor     edi, eax_B      ; B^C
.text:0042F901                 mov     [ebx+UI32._12], esi ; RXL[60]
.text:0042F904                 xor     edi, ecx_D      ; RX1(B,C,D) = B^C^D
.text:0042F906                 mov     ebp, [esp+14h+A]
.text:0042F90A                 add     esi, edi        ; RXL[60] + RX1(B,C,D)
.text:0042F90C                 mov     edi, [esp+14h+A]
.text:0042F910                 shl     edi, 5          ; A<<5
.text:0042F913                 shr     ebp, 1Bh        ; A>>27
.text:0042F916                 or      edi, ebp        ; RL(A,5)
.text:0042F918                 add     esi, edi        ; RXL[60] + RX1(B,C,D) + RL(A,5)
.text:0042F91A                 add     esi, 0CA62C1D6h
.text:0042F920                 add     [esp+14h+E], esi ; E += RXL[60] + RX1(B,C,D) + RL(A,5) + 0xca62c1d6
.text:0042F924                 mov     esi, eax_B
.text:0042F926                 shr     eax_B, 2        ; B>>2
.text:0042F929                 mov     edi, [ebx+UI32._10]
.text:0042F92C                 shl     esi, 1Eh        ; B<<30
.text:0042F92F                 xor     edi, [ebx+UI32._5]
.text:0042F932                 or      esi, eax_B      ; RL(B,30)
.text:0042F934                 xor     edi, [ebx+UI32._15]
.text:0042F937                 mov     eax_B, esi      ; B = RL(B,30)
.text:0042F937                                         ;
.text:0042F937                                         ; 定义宏R4:
.text:0042F937                                         ; #define R4(a,b,c,d,e,i) ( e+=RXL(i)+RX1(b,c,d)+RL(a,5)+0xca62c1d6; b=RL(b,30); )
.text:0042F937                                         ;
.text:0042F937                                         ; 那么这里用R4表示为: R4(A,B,C,D,E,60)
.text:0042F937                                         ;
.text:0042F937                                         ; ***********************第4.0次运算END****
.text:0042F939                 mov     esi, [ebx+28h]  ; ***********************第4.1次运算开始****
.text:0042F93C                 xor     esi, [ebx+14h]
.text:0042F93F                 xor     edi, [ebx+34h]
.text:0042F942                 xor     esi, [ebx+3Ch]
.text:0042F945                 xor     esi, [ebx+34h]
.text:0042F948                 shr     edi, 1Fh
.text:0042F94B                 add     esi, esi
.text:0042F94D                 or      esi, edi
.text:0042F94F                 mov     [ebx+34h], esi
.text:0042F952                 mov     edi, [esp+14h+A]
.text:0042F956                 mov     ebp, [esp+14h+E]
.text:0042F95A                 xor     edi, eax_B
.text:0042F95C                 xor     edi, edx_C
.text:0042F95E                 add     esi, edi
.text:0042F960                 mov     edi, [esp+14h+E]
.text:0042F964                 shl     edi, 5
.text:0042F967                 shr     ebp, 1Bh
.text:0042F96A                 or      edi, ebp
.text:0042F96C                 add     esi, edi
.text:0042F96E                 mov     edi, [esp+14h+A]
.text:0042F972                 add     esi, 0CA62C1D6h
.text:0042F978                 add     ecx_D, esi
.text:0042F97A                 mov     esi, [esp+14h+A]
.text:0042F97E                 shl     esi, 1Eh
.text:0042F981                 mov     ebp, ecx_D
.text:0042F983                 shr     edi, 2
.text:0042F986                 or      esi, edi
.text:0042F988                 mov     [esp+14h+A], esi ; R4(E,A,B,C,D,61)
.text:0042F988                                         ; ***********************第4.1次运算END****
.text:0042F98C                 mov     edi, [ebx+2Ch]  ; ***********************第4.2次运算开始****
.text:0042F98F                 mov     esi, [ebx+2Ch]
.text:0042F992                 xor     edi, [ebx+18h]
.text:0042F995                 xor     esi, [ebx+18h]
.text:0042F998                 xor     edi, [ebx]
.text:0042F99A                 xor     esi, [ebx]
.text:0042F99C                 xor     edi, [ebx+38h]
.text:0042F99F                 xor     esi, [ebx+38h]
.text:0042F9A2                 shr     edi, 1Fh
.text:0042F9A5                 add     esi, esi
.text:0042F9A7                 or      esi, edi
.text:0042F9A9                 mov     [ebx+38h], esi
.text:0042F9AC                 mov     edi, [esp+14h+E]
.text:0042F9B0                 xor     edi, [esp+14h+A]
.text:0042F9B4                 xor     edi, eax_B
.text:0042F9B6                 add     esi, edi
.text:0042F9B8                 mov     edi, ecx_D
.text:0042F9BA                 shl     edi, 5
.text:0042F9BD                 shr     ebp, 1Bh
.text:0042F9C0                 or      edi, ebp
.text:0042F9C2                 add     esi, edi
.text:0042F9C4                 mov     edi, [esp+14h+E]
.text:0042F9C8                 add     esi, 0CA62C1D6h
.text:0042F9CE                 add     edx_C, esi
.text:0042F9D0                 mov     esi, [esp+14h+E]
.text:0042F9D4                 shl     esi, 1Eh
.text:0042F9D7                 mov     ebp, edx_C
.text:0042F9D9                 shr     edi, 2
.text:0042F9DC                 or      esi, edi
.text:0042F9DE                 mov     [esp+14h+E], esi ; R4(D,E,A,B,C,62)
.text:0042F9DE                                         ; ***********************第4.2次运算END****
.text:0042F9E2                 mov     edi, [ebx+30h]  ; ***********************第4.3次运算开始****
.text:0042F9E5                 mov     esi, [ebx+30h]
.text:0042F9E8                 xor     edi, [ebx+1Ch]
.text:0042F9EB                 xor     esi, [ebx+1Ch]
.text:0042F9EE                 xor     edi, [ebx+4]
.text:0042F9F1                 xor     esi, [ebx+4]
.text:0042F9F4                 xor     edi, [ebx+3Ch]
.text:0042F9F7                 xor     esi, [ebx+3Ch]
.text:0042F9FA                 shr     edi, 1Fh
.text:0042F9FD                 add     esi, esi
.text:0042F9FF                 or      esi, edi
.text:0042FA01                 mov     [ebx+3Ch], esi
.text:0042FA04                 mov     edi, [esp+14h+E]
.text:0042FA08                 xor     edi, ecx_D
.text:0042FA0A                 xor     edi, [esp+14h+A]
.text:0042FA0E                 add     esi, edi
.text:0042FA10                 mov     edi, edx_C
.text:0042FA12                 shl     edi, 5
.text:0042FA15                 shr     ebp, 1Bh
.text:0042FA18                 or      edi, ebp
.text:0042FA1A                 add     esi, edi
.text:0042FA1C                 mov     edi, [ebx+34h]
.text:0042FA1F                 add     esi, 0CA62C1D6h
.text:0042FA25                 xor     edi, [ebx+20h]
.text:0042FA28                 add     eax_B, esi
.text:0042FA2A                 mov     esi, ecx_D
.text:0042FA2C                 shr     ecx_D, 2
.text:0042FA2F                 mov     ebp, eax_B
.text:0042FA31                 shl     esi, 1Eh
.text:0042FA34                 xor     edi, [ebx+8]
.text:0042FA37                 or      esi, ecx_D
.text:0042FA39                 xor     edi, [ebx]
.text:0042FA3B                 mov     ecx_D, esi      ; R4(C,D,E,A,B,63)
.text:0042FA3B                                         ; ***********************第4.3次运算END****
.text:0042FA3D                 mov     esi, [ebx+34h]  ; ***********************第4.4次运算开始****
.text:0042FA40                 xor     esi, [ebx+20h]
.text:0042FA43                 xor     esi, [ebx+8]
.text:0042FA46                 xor     esi, [ebx]
.text:0042FA48                 shr     edi, 1Fh
.text:0042FA4B                 add     esi, esi
.text:0042FA4D                 or      esi, edi
.text:0042FA4F                 mov     edi, ecx_D
.text:0042FA51                 mov     [ebx], esi
.text:0042FA53                 xor     edi, edx_C
.text:0042FA55                 xor     edi, [esp+14h+E]
.text:0042FA59                 add     esi, edi
.text:0042FA5B                 mov     edi, eax_B
.text:0042FA5D                 shr     ebp, 1Bh
.text:0042FA60                 shl     edi, 5
.text:0042FA63                 or      edi, ebp
.text:0042FA65                 add     esi, edi
.text:0042FA67                 add     esi, 0CA62C1D6h
.text:0042FA6D                 add     [esp+14h+A], esi
.text:0042FA71                 mov     esi, edx_C
.text:0042FA73                 shr     edx_C, 2
.text:0042FA76                 shl     esi, 1Eh
.text:0042FA79                 or      esi, edx_C
.text:0042FA7B                 mov     edx_C, esi      ; R4(B,C,D,E,A,64)
.text:0042FA7B                                         ; ***********************第4.4次运算END****
.text:0042FA7D                 mov     esi, [ebx+38h]  ; ***********************第4.5次运算开始****
.text:0042FA80                 xor     esi, [ebx+24h]
.text:0042FA83                 xor     esi, [ebx+0Ch]
.text:0042FA86                 xor     esi, [ebx+4]
.text:0042FA89                 add     esi, esi
.text:0042FA8B                 mov     edi, [ebx+38h]
.text:0042FA8E                 xor     edi, [ebx+24h]
.text:0042FA91                 xor     edi, [ebx+0Ch]
.text:0042FA94                 xor     edi, [ebx+4]
.text:0042FA97                 shr     edi, 1Fh
.text:0042FA9A                 or      esi, edi
.text:0042FA9C                 mov     edi, edx_C
.text:0042FA9E                 xor     edi, eax_B
.text:0042FAA0                 mov     [ebx+4], esi
.text:0042FAA3                 xor     edi, ecx_D
.text:0042FAA5                 mov     ebp, [esp+14h+A]
.text:0042FAA9                 add     esi, edi
.text:0042FAAB                 mov     edi, [esp+14h+A]
.text:0042FAAF                 shl     edi, 5
.text:0042FAB2                 shr     ebp, 1Bh
.text:0042FAB5                 or      edi, ebp
.text:0042FAB7                 add     esi, edi
.text:0042FAB9                 add     esi, 0CA62C1D6h
.text:0042FABF                 add     [esp+14h+E], esi
.text:0042FAC3                 mov     esi, eax_B
.text:0042FAC5                 shr     eax_B, 2
.text:0042FAC8                 mov     edi, [ebx+3Ch]
.text:0042FACB                 shl     esi, 1Eh
.text:0042FACE                 xor     edi, [ebx+28h]
.text:0042FAD1                 or      esi, eax_B
.text:0042FAD3                 xor     edi, [ebx+10h]
.text:0042FAD6                 mov     eax_B, esi      ; R4(A,B,C,D,E,65)
.text:0042FAD6                                         ; ***********************第4.5次运算END****
.text:0042FAD8                 mov     esi, [ebx+3Ch]  ; ***********************第4.6次运算开始****
.text:0042FADB                 xor     esi, [ebx+28h]
.text:0042FADE                 xor     edi, [ebx+8]
.text:0042FAE1                 xor     esi, [ebx+10h]
.text:0042FAE4                 xor     esi, [ebx+8]
.text:0042FAE7                 shr     edi, 1Fh
.text:0042FAEA                 add     esi, esi
.text:0042FAEC                 or      esi, edi
.text:0042FAEE                 mov     [ebx+8], esi
.text:0042FAF1                 mov     edi, [esp+14h+A]
.text:0042FAF5                 mov     ebp, [esp+14h+E]
.text:0042FAF9                 xor     edi, eax_B
.text:0042FAFB                 xor     edi, edx_C
.text:0042FAFD                 add     esi, edi
.text:0042FAFF                 mov     edi, [esp+14h+E]
.text:0042FB03                 shl     edi, 5
.text:0042FB06                 shr     ebp, 1Bh
.text:0042FB09                 or      edi, ebp
.text:0042FB0B                 add     esi, edi
.text:0042FB0D                 mov     edi, [esp+14h+A]
.text:0042FB11                 add     esi, 0CA62C1D6h
.text:0042FB17                 add     ecx_D, esi
.text:0042FB19                 mov     esi, [esp+14h+A]
.text:0042FB1D                 shl     esi, 1Eh
.text:0042FB20                 mov     ebp, ecx_D
.text:0042FB22                 shr     edi, 2
.text:0042FB25                 or      esi, edi
.text:0042FB27                 mov     [esp+14h+A], esi ; R4(E,A,B,C,D,66)
.text:0042FB27                                         ; ***********************第4.6次运算END****
.text:0042FB2B                 mov     edi, [ebx]      ; ***********************第4.7次运算开始****
.text:0042FB2D                 mov     esi, [ebx]
.text:0042FB2F                 xor     edi, [ebx+2Ch]
.text:0042FB32                 xor     esi, [ebx+2Ch]
.text:0042FB35                 xor     edi, [ebx+14h]
.text:0042FB38                 xor     esi, [ebx+14h]
.text:0042FB3B                 xor     edi, [ebx+0Ch]
.text:0042FB3E                 xor     esi, [ebx+0Ch]
.text:0042FB41                 shr     edi, 1Fh
.text:0042FB44                 add     esi, esi
.text:0042FB46                 or      esi, edi
.text:0042FB48                 mov     [ebx+0Ch], esi
.text:0042FB4B                 mov     edi, [esp+14h+E]
.text:0042FB4F                 xor     edi, [esp+14h+A]
.text:0042FB53                 xor     edi, eax_B
.text:0042FB55                 add     esi, edi
.text:0042FB57                 mov     edi, ecx_D
.text:0042FB59                 shl     edi, 5
.text:0042FB5C                 shr     ebp, 1Bh
.text:0042FB5F                 or      edi, ebp
.text:0042FB61                 add     esi, edi
.text:0042FB63                 mov     edi, [esp+14h+E]
.text:0042FB67                 add     esi, 0CA62C1D6h
.text:0042FB6D                 add     edx_C, esi
.text:0042FB6F                 mov     esi, [esp+14h+E]
.text:0042FB73                 shl     esi, 1Eh
.text:0042FB76                 mov     ebp, edx_C
.text:0042FB78                 shr     edi, 2
.text:0042FB7B                 or      esi, edi
.text:0042FB7D                 mov     [esp+14h+E], esi ; R4(D,E,A,B,C,67)
.text:0042FB7D                                         ; ***********************第4.7次运算END****
.text:0042FB81                 mov     edi, [ebx+4]    ; ***********************第4.8次运算开始****
.text:0042FB84                 mov     esi, [ebx+4]
.text:0042FB87                 xor     edi, [ebx+30h]
.text:0042FB8A                 xor     esi, [ebx+30h]
.text:0042FB8D                 xor     edi, [ebx+18h]
.text:0042FB90                 xor     esi, [ebx+18h]
.text:0042FB93                 xor     edi, [ebx+10h]
.text:0042FB96                 xor     esi, [ebx+10h]
.text:0042FB99                 shr     edi, 1Fh
.text:0042FB9C                 add     esi, esi
.text:0042FB9E                 or      esi, edi
.text:0042FBA0                 mov     [ebx+10h], esi
.text:0042FBA3                 mov     edi, [esp+14h+E]
.text:0042FBA7                 xor     edi, ecx_D
.text:0042FBA9                 xor     edi, [esp+14h+A]
.text:0042FBAD                 add     esi, edi
.text:0042FBAF                 mov     edi, edx_C
.text:0042FBB1                 shl     edi, 5
.text:0042FBB4                 shr     ebp, 1Bh
.text:0042FBB7                 or      edi, ebp
.text:0042FBB9                 add     esi, edi
.text:0042FBBB                 mov     edi, [ebx+8]
.text:0042FBBE                 add     esi, 0CA62C1D6h
.text:0042FBC4                 xor     edi, [ebx+34h]
.text:0042FBC7                 add     eax_B, esi
.text:0042FBC9                 mov     esi, ecx_D
.text:0042FBCB                 shr     ecx_D, 2
.text:0042FBCE                 mov     ebp, eax_B
.text:0042FBD0                 shl     esi, 1Eh
.text:0042FBD3                 xor     edi, [ebx+1Ch]
.text:0042FBD6                 or      esi, ecx_D
.text:0042FBD8                 xor     edi, [ebx+14h]
.text:0042FBDB                 mov     ecx_D, esi      ; R4(C,D,E,A,B,68)
.text:0042FBDB                                         ; ***********************第4.8次运算END****
.text:0042FBDD                 mov     esi, [ebx+8]    ; ***********************第4.9次运算开始****
.text:0042FBE0                 xor     esi, [ebx+34h]
.text:0042FBE3                 xor     esi, [ebx+1Ch]
.text:0042FBE6                 xor     esi, [ebx+14h]
.text:0042FBE9                 shr     edi, 1Fh
.text:0042FBEC                 add     esi, esi
.text:0042FBEE                 or      esi, edi
.text:0042FBF0                 mov     edi, ecx_D
.text:0042FBF2                 mov     [ebx+14h], esi
.text:0042FBF5                 xor     edi, edx_C
.text:0042FBF7                 xor     edi, [esp+14h+E]
.text:0042FBFB                 add     esi, edi
.text:0042FBFD                 mov     edi, eax_B
.text:0042FBFF                 shl     edi, 5
.text:0042FC02                 shr     ebp, 1Bh
.text:0042FC05                 or      edi, ebp
.text:0042FC07                 add     esi, edi
.text:0042FC09                 add     esi, 0CA62C1D6h
.text:0042FC0F                 add     [esp+14h+A], esi
.text:0042FC13                 mov     esi, edx_C
.text:0042FC15                 shr     edx_C, 2
.text:0042FC18                 mov     edi, [ebx+0Ch]
.text:0042FC1B                 shl     esi, 1Eh
.text:0042FC1E                 xor     edi, [ebx+38h]
.text:0042FC21                 or      esi, edx_C
.text:0042FC23                 xor     edi, [ebx+20h]
.text:0042FC26                 mov     edx_C, esi      ; R4(B,C,D,E,A,69)
.text:0042FC26                                         ; ***********************第4.9次运算END****
.text:0042FC28                 mov     esi, [ebx+0Ch]  ; ***********************第4.10次运算开始****
.text:0042FC2B                 xor     esi, [ebx+38h]
.text:0042FC2E                 xor     edi, [ebx+18h]
.text:0042FC31                 xor     esi, [ebx+20h]
.text:0042FC34                 xor     esi, [ebx+18h]
.text:0042FC37                 shr     edi, 1Fh
.text:0042FC3A                 add     esi, esi
.text:0042FC3C                 or      esi, edi
.text:0042FC3E                 mov     edi, edx_C
.text:0042FC40                 xor     edi, eax_B
.text:0042FC42                 mov     [ebx+18h], esi
.text:0042FC45                 xor     edi, ecx_D
.text:0042FC47                 mov     ebp, [esp+14h+A]
.text:0042FC4B                 add     esi, edi
.text:0042FC4D                 mov     edi, [esp+14h+A]
.text:0042FC51                 shl     edi, 5
.text:0042FC54                 shr     ebp, 1Bh
.text:0042FC57                 or      edi, ebp
.text:0042FC59                 add     esi, edi
.text:0042FC5B                 add     esi, 0CA62C1D6h
.text:0042FC61                 add     [esp+14h+E], esi
.text:0042FC65                 mov     esi, eax_B
.text:0042FC67                 shr     eax_B, 2
.text:0042FC6A                 mov     edi, [ebx+10h]
.text:0042FC6D                 shl     esi, 1Eh
.text:0042FC70                 xor     edi, [ebx+3Ch]
.text:0042FC73                 or      esi, eax_B
.text:0042FC75                 xor     edi, [ebx+24h]
.text:0042FC78                 mov     eax_B, esi      ; R4(A,B,C,D,E,70)
.text:0042FC78                                         ; ***********************第4.10次运算END****
.text:0042FC7A                 mov     esi, [ebx+10h]  ; ***********************第4.11次运算开始****
.text:0042FC7D                 xor     esi, [ebx+3Ch]
.text:0042FC80                 xor     edi, [ebx+1Ch]
.text:0042FC83                 xor     esi, [ebx+24h]
.text:0042FC86                 xor     esi, [ebx+1Ch]
.text:0042FC89                 shr     edi, 1Fh
.text:0042FC8C                 add     esi, esi
.text:0042FC8E                 or      esi, edi
.text:0042FC90                 mov     [ebx+1Ch], esi
.text:0042FC93                 mov     edi, [esp+14h+A]
.text:0042FC97                 mov     ebp, [esp+14h+E]
.text:0042FC9B                 xor     edi, eax_B
.text:0042FC9D                 xor     edi, edx_C
.text:0042FC9F                 add     esi, edi
.text:0042FCA1                 mov     edi, [esp+14h+E]
.text:0042FCA5                 shl     edi, 5
.text:0042FCA8                 shr     ebp, 1Bh
.text:0042FCAB                 or      edi, ebp
.text:0042FCAD                 add     esi, edi
.text:0042FCAF                 mov     edi, [esp+14h+A]
.text:0042FCB3                 add     esi, 0CA62C1D6h
.text:0042FCB9                 add     ecx_D, esi
.text:0042FCBB                 mov     esi, [esp+14h+A]
.text:0042FCBF                 shl     esi, 1Eh
.text:0042FCC2                 mov     ebp, ecx_D
.text:0042FCC4                 shr     edi, 2
.text:0042FCC7                 or      esi, edi
.text:0042FCC9                 mov     [esp+14h+A], esi ; R4(E,A,B,C,D,71)
.text:0042FCC9                                         ; ***********************第4.11次运算END****
.text:0042FCCD                 mov     edi, [ebx+14h]  ; ***********************第4.12次运算开始****
.text:0042FCD0                 mov     esi, [ebx+14h]
.text:0042FCD3                 xor     edi, [ebx]
.text:0042FCD5                 xor     esi, [ebx]
.text:0042FCD7                 xor     edi, [ebx+28h]
.text:0042FCDA                 xor     esi, [ebx+28h]
.text:0042FCDD                 xor     edi, [ebx+20h]
.text:0042FCE0                 xor     esi, [ebx+20h]
.text:0042FCE3                 shr     edi, 1Fh
.text:0042FCE6                 add     esi, esi
.text:0042FCE8                 or      esi, edi
.text:0042FCEA                 mov     [ebx+20h], esi
.text:0042FCED                 mov     edi, [esp+14h+E]
.text:0042FCF1                 xor     edi, [esp+14h+A]
.text:0042FCF5                 xor     edi, eax_B
.text:0042FCF7                 add     esi, edi
.text:0042FCF9                 mov     edi, ecx_D
.text:0042FCFB                 shl     edi, 5
.text:0042FCFE                 shr     ebp, 1Bh
.text:0042FD01                 or      edi, ebp
.text:0042FD03                 add     esi, edi
.text:0042FD05                 mov     edi, [esp+14h+E]
.text:0042FD09                 add     esi, 0CA62C1D6h
.text:0042FD0F                 add     edx_C, esi
.text:0042FD11                 mov     esi, [esp+14h+E]
.text:0042FD15                 shl     esi, 1Eh
.text:0042FD18                 mov     ebp, edx_C
.text:0042FD1A                 shr     edi, 2
.text:0042FD1D                 or      esi, edi
.text:0042FD1F                 mov     [esp+14h+E], esi ; R4(D,E,A,B,C,72)
.text:0042FD1F                                         ; ***********************第4.12次运算END****
.text:0042FD23                 mov     edi, [ebx+18h]  ; ***********************第4.13次运算开始****
.text:0042FD26                 mov     esi, [ebx+18h]
.text:0042FD29                 xor     edi, [ebx+4]
.text:0042FD2C                 xor     esi, [ebx+4]
.text:0042FD2F                 xor     edi, [ebx+2Ch]
.text:0042FD32                 xor     esi, [ebx+2Ch]
.text:0042FD35                 xor     edi, [ebx+24h]
.text:0042FD38                 xor     esi, [ebx+24h]
.text:0042FD3B                 shr     edi, 1Fh
.text:0042FD3E                 add     esi, esi
.text:0042FD40                 or      esi, edi
.text:0042FD42                 mov     [ebx+24h], esi
.text:0042FD45                 mov     edi, [esp+14h+E]
.text:0042FD49                 xor     edi, ecx_D
.text:0042FD4B                 xor     edi, [esp+14h+A]
.text:0042FD4F                 add     esi, edi
.text:0042FD51                 mov     edi, edx_C
.text:0042FD53                 shr     ebp, 1Bh
.text:0042FD56                 shl     edi, 5
.text:0042FD59                 or      edi, ebp
.text:0042FD5B                 add     esi, edi
.text:0042FD5D                 add     esi, 0CA62C1D6h
.text:0042FD63                 add     eax_B, esi
.text:0042FD65                 mov     esi, ecx_D
.text:0042FD67                 mov     edi, [ebx+1Ch]
.text:0042FD6A                 shr     ecx_D, 2
.text:0042FD6D                 mov     ebp, eax_B
.text:0042FD6F                 shl     esi, 1Eh
.text:0042FD72                 xor     edi, [ebx+8]
.text:0042FD75                 or      esi, ecx_D
.text:0042FD77                 xor     edi, [ebx+30h]
.text:0042FD7A                 mov     ecx_D, esi      ; R4(C,D,E,A,B,73)
.text:0042FD7A                                         ; ***********************第4.13次运算END****
.text:0042FD7C                 mov     esi, [ebx+1Ch]  ; ***********************第4.14次运算开始****
.text:0042FD7F                 xor     esi, [ebx+8]
.text:0042FD82                 xor     edi, [ebx+28h]
.text:0042FD85                 xor     esi, [ebx+30h]
.text:0042FD88                 xor     esi, [ebx+28h]
.text:0042FD8B                 shr     edi, 1Fh
.text:0042FD8E                 add     esi, esi
.text:0042FD90                 or      esi, edi
.text:0042FD92                 mov     edi, ecx_D
.text:0042FD94                 mov     [ebx+28h], esi
.text:0042FD97                 xor     edi, edx_C
.text:0042FD99                 xor     edi, [esp+14h+E]
.text:0042FD9D                 add     esi, edi
.text:0042FD9F                 mov     edi, eax_B
.text:0042FDA1                 shl     edi, 5
.text:0042FDA4                 shr     ebp, 1Bh
.text:0042FDA7                 or      edi, ebp
.text:0042FDA9                 add     esi, edi
.text:0042FDAB                 add     esi, 0CA62C1D6h
.text:0042FDB1                 add     [esp+14h+A], esi
.text:0042FDB5                 mov     esi, edx_C
.text:0042FDB7                 shr     edx_C, 2
.text:0042FDBA                 mov     edi, [ebx+20h]
.text:0042FDBD                 shl     esi, 1Eh
.text:0042FDC0                 xor     edi, [ebx+0Ch]
.text:0042FDC3                 or      esi, edx_C
.text:0042FDC5                 xor     edi, [ebx+34h]
.text:0042FDC8                 mov     edx_C, esi      ; R4(B,C,D,E,A,74)
.text:0042FDC8                                         ; ***********************第4.14次运算END****
.text:0042FDCA                 mov     esi, [ebx+20h]  ; ***********************第4.15次运算开始****
.text:0042FDCD                 xor     esi, [ebx+0Ch]
.text:0042FDD0                 xor     edi, [ebx+2Ch]
.text:0042FDD3                 xor     esi, [ebx+34h]
.text:0042FDD6                 xor     esi, [ebx+2Ch]
.text:0042FDD9                 shr     edi, 1Fh
.text:0042FDDC                 add     esi, esi
.text:0042FDDE                 or      esi, edi
.text:0042FDE0                 mov     edi, edx_C
.text:0042FDE2                 xor     edi, eax_B
.text:0042FDE4                 mov     [ebx+2Ch], esi
.text:0042FDE7                 xor     edi, ecx_D
.text:0042FDE9                 mov     ebp, [esp+14h+A]
.text:0042FDED                 add     esi, edi
.text:0042FDEF                 mov     edi, [esp+14h+A]
.text:0042FDF3                 shl     edi, 5
.text:0042FDF6                 shr     ebp, 1Bh
.text:0042FDF9                 or      edi, ebp
.text:0042FDFB                 add     esi, edi
.text:0042FDFD                 add     esi, 0CA62C1D6h
.text:0042FE03                 add     [esp+14h+E], esi
.text:0042FE07                 mov     esi, eax_B
.text:0042FE09                 shr     eax_B, 2
.text:0042FE0C                 mov     edi, [ebx+24h]
.text:0042FE0F                 shl     esi, 1Eh
.text:0042FE12                 xor     edi, [ebx+10h]
.text:0042FE15                 or      esi, eax_B
.text:0042FE17                 xor     edi, [ebx+38h]
.text:0042FE1A                 mov     eax_B, esi      ; R4(A,B,C,D,E,75)
.text:0042FE1A                                         ; ***********************第4.15次运算END****
.text:0042FE1C                 mov     esi, [ebx+24h]  ; ***********************第4.16次运算开始****
.text:0042FE1F                 xor     esi, [ebx+10h]
.text:0042FE22                 xor     edi, [ebx+30h]
.text:0042FE25                 xor     esi, [ebx+38h]
.text:0042FE28                 xor     esi, [ebx+30h]
.text:0042FE2B                 shr     edi, 1Fh
.text:0042FE2E                 add     esi, esi
.text:0042FE30                 or      esi, edi
.text:0042FE32                 mov     [ebx+30h], esi
.text:0042FE35                 mov     edi, [esp+14h+A]
.text:0042FE39                 mov     ebp, [esp+14h+E]
.text:0042FE3D                 xor     edi, eax_B
.text:0042FE3F                 xor     edi, edx_C
.text:0042FE41                 add     esi, edi
.text:0042FE43                 mov     edi, [esp+14h+E]
.text:0042FE47                 shl     edi, 5
.text:0042FE4A                 shr     ebp, 1Bh
.text:0042FE4D                 or      edi, ebp
.text:0042FE4F                 add     esi, edi
.text:0042FE51                 mov     edi, [esp+14h+A]
.text:0042FE55                 add     esi, 0CA62C1D6h
.text:0042FE5B                 add     ecx_D, esi
.text:0042FE5D                 mov     esi, [esp+14h+A]
.text:0042FE61                 shl     esi, 1Eh
.text:0042FE64                 mov     ebp, ecx_D
.text:0042FE66                 shr     edi, 2
.text:0042FE69                 or      esi, edi
.text:0042FE6B                 mov     [esp+14h+A], esi ; R4(E,A,B,C,D,76)
.text:0042FE6B                                         ; ***********************第4.16次运算END****
.text:0042FE6F                 mov     edi, [ebx+28h]  ; ***********************第4.17次运算开始****
.text:0042FE72                 mov     esi, [ebx+28h]
.text:0042FE75                 xor     edi, [ebx+14h]
.text:0042FE78                 xor     esi, [ebx+14h]
.text:0042FE7B                 xor     edi, [ebx+3Ch]
.text:0042FE7E                 xor     esi, [ebx+3Ch]
.text:0042FE81                 xor     edi, [ebx+34h]
.text:0042FE84                 xor     esi, [ebx+34h]
.text:0042FE87                 shr     edi, 1Fh
.text:0042FE8A                 add     esi, esi
.text:0042FE8C                 or      esi, edi
.text:0042FE8E                 mov     [ebx+34h], esi
.text:0042FE91                 mov     edi, [esp+14h+E]
.text:0042FE95                 xor     edi, [esp+14h+A]
.text:0042FE99                 xor     edi, eax_B
.text:0042FE9B                 add     esi, edi
.text:0042FE9D                 mov     edi, ecx_D
.text:0042FE9F                 shl     edi, 5
.text:0042FEA2                 shr     ebp, 1Bh
.text:0042FEA5                 or      edi, ebp
.text:0042FEA7                 add     esi, edi
.text:0042FEA9                 mov     edi, [esp+14h+E]
.text:0042FEAD                 add     esi, 0CA62C1D6h
.text:0042FEB3                 add     edx_C, esi
.text:0042FEB5                 mov     esi, [esp+14h+E]
.text:0042FEB9                 shl     esi, 1Eh
.text:0042FEBC                 mov     ebp, edx_C
.text:0042FEBE                 shr     edi, 2
.text:0042FEC1                 or      esi, edi
.text:0042FEC3                 mov     [esp+14h+E], esi ; R4(D,E,A,B,C,77)
.text:0042FEC3                                         ; ***********************第4.17次运算END****
.text:0042FEC7                 mov     edi, [ebx+2Ch]  ; ***********************第4.18次运算开始****
.text:0042FECA                 mov     esi, [ebx+2Ch]
.text:0042FECD                 xor     edi, [ebx+18h]
.text:0042FED0                 xor     esi, [ebx+18h]
.text:0042FED3                 xor     edi, [ebx]
.text:0042FED5                 xor     esi, [ebx]
.text:0042FED7                 xor     edi, [ebx+38h]
.text:0042FEDA                 xor     esi, [ebx+38h]
.text:0042FEDD                 shr     edi, 1Fh
.text:0042FEE0                 add     esi, esi
.text:0042FEE2                 or      esi, edi
.text:0042FEE4                 mov     [ebx+38h], esi
.text:0042FEE7                 mov     edi, [esp+14h+E]
.text:0042FEEB                 xor     edi, ecx_D
.text:0042FEED                 xor     edi, [esp+14h+A]
.text:0042FEF1                 add     esi, edi
.text:0042FEF3                 mov     edi, edx_C
.text:0042FEF5                 shr     ebp, 1Bh
.text:0042FEF8                 shl     edi, 5
.text:0042FEFB                 or      edi, ebp
.text:0042FEFD                 add     esi, edi
.text:0042FEFF                 mov     edi, [ebx+30h]
.text:0042FF02                 add     esi, 0CA62C1D6h
.text:0042FF08                 xor     edi, [ebx+1Ch]
.text:0042FF0B                 add     eax_B, esi
.text:0042FF0D                 mov     esi, ecx_D
.text:0042FF0F                 shr     ecx_D, 2
.text:0042FF12                 xor     edi, [ebx+4]
.text:0042FF15                 shl     esi, 1Eh
.text:0042FF18                 xor     edi, [ebx+3Ch]
.text:0042FF1B                 or      esi, ecx_D
.text:0042FF1D                 mov     ecx_D, esi      ; R4(C,D,E,A,B,78)
.text:0042FF1D                                         ; ***********************第4.18次运算END****
.text:0042FF1F                 mov     esi, [ebx+UI32._12] ; ***********************第4.19次运算开始****
.text:0042FF22                 xor     esi, [ebx+UI32._7]
.text:0042FF25                 xor     esi, [ebx+UI32._1]
.text:0042FF28                 xor     esi, [ebx+UI32._15]
.text:0042FF2B                 shr     edi, 1Fh
.text:0042FF2E                 add     esi, esi
.text:0042FF30                 or      esi, edi
.text:0042FF32                 mov     edi, eax_B
.text:0042FF34                 mov     [ebx+UI32._15], esi
.text:0042FF37                 mov     ebx, ecx_D
.text:0042FF39                 xor     ebx, edx_C
.text:0042FF3B                 xor     ebx, [esp+14h+E]
.text:0042FF3F                 add     esi, ebx
.text:0042FF41                 mov     ebx, eax_B
.text:0042FF43                 shr     edi, 1Bh
.text:0042FF46                 shl     ebx, 5
.text:0042FF49                 or      ebx, edi
.text:0042FF4B                 add     esi, ebx
.text:0042FF4D                 mov     ebx, edx_C
.text:0042FF4F                 shr     edx_C, 2
.text:0042FF52                 add     esi, 0CA62C1D6h
.text:0042FF58                 shl     ebx, 1Eh
.text:0042FF5B                 add     [esp+14h+A], esi
.text:0042FF5F                 or      ebx, edx_C
.text:0042FF61                 mov     esi, [esp+14h+A]
.text:0042FF65                 mov     edx_C, ebx      ; R4(B,C,D,E,A,79)
.text:0042FF65                                         ; ***********************第4.19次运算END****
.text:0042FF65                                         ; ***********************第4轮计算结束****
.text:0042FF67                 mov     ebx, [esp+14h+_state]
.text:0042FF6A                 add     [ebx], esi      ; state[0] += A;
.text:0042FF6C                 mov     ebx, [esp+14h+_state]
.text:0042FF6F                 add     [ebx+4], eax_B  ; state[1] += B;
.text:0042FF72                 mov     eax_B, [esp+14h+_state]
.text:0042FF75                 add     [eax_B+8], edx_C ; state[2] += C;
.text:0042FF78                 mov     edx_C, [esp+14h+_state]
.text:0042FF7B                 add     [edx_C+0Ch], ecx_D ; state[3] += D;
.text:0042FF7E                 mov     ecx_D, [esp+14h+_state]
.text:0042FF81                 mov     eax_B, [esp+14h+E]
.text:0042FF85                 add     [ecx_D+10h], eax_B ; state[4] += E;
.text:0042FF88                 xor     edx_C, edx_C
.text:0042FF8A                 mov     [esp+14h+E], edx_C
.text:0042FF8E                 mov     [esp+14h+A], edx_C
.text:0042FF92                 push    4               ; n
.text:0042FF94                 push    0               ; c
.text:0042FF96                 mov     eax_B, edx_C
.text:0042FF98                 mov     ecx_D, edx_C
.text:0042FF9A                 lea     eax_B, [esp+1Ch+A]
.text:0042FF9E                 push    eax_B           ; s
.text:0042FF9F                 call    _memset
.text:0042FF9F
.text:0042FFA4                 add     esp, 0Ch
.text:0042FFA7                 add     esp, 14h
.text:0042FFAA                 pop     ebp
.text:0042FFAB                 pop     edi
.text:0042FFAC                 pop     esi
.text:0042FFAD                 pop     ebx
.text:0042FFAE                 retn
.text:0042FFAE
.text:0042FFAE sha1_transform  endp

sha1_transform C实现:

u_int8_t g_buffer64[64];

void __fastcall
sha1_transform(u_int32_t state[5], u_int8_t *data, u_int8_t trans_copies )
{
        u_int32_t *buf;

        u_int32_t A,B,C,D,E;

        if (  trans_copies != TRANSFORM_RAW )                /* 判断是否在一个拷贝上变换 TRANSFORM_RAW=0 */
        {
                buf = (u_int32_t*)g_buffer64;
                memcpy(buf, data, 64);
        }
        else
                buf  = (u_int32_t*)data;

        A = state[0];
        B = state[1];
        C = state[2];
        D = state[3];
        E = state[4];

        /* 第1轮变换 */
        R0 (A, B, C, D, E, 0);  R0 (E, A, B, C, D, 1);  R0 (D, E, A, B, C, 2);  R0 (C, D, E, A, B, 3);
        R0 (B, C, D, E, A, 4);  R0 (A, B, C, D, E, 5);  R0 (E, A, B, C, D, 6);  R0 (D, E, A, B, C, 7);
        R0 (C, D, E, A, B, 8);  R0 (B, C, D, E, A, 9);  R0 (A, B, C, D, E, 10); R0 (E, A, B, C, D, 11);
        R0 (D, E, A, B, C, 12); R0 (C, D, E, A, B, 13); R0 (B, C, D, E, A, 14); R0 (A, B, C, D, E, 15);
        R1 (E, A, B, C, D, 16); R1 (D, E, A, B, C, 17); R1 (C, D, E, A, B, 18); R1 (B, C, D, E, A, 19);

        /* 第2轮变换 */
        R2 (A, B, C, D, E, 20); R2 (E, A, B, C, D, 21); R2 (D, E, A, B, C, 22); R2 (C, D, E, A, B, 23);
        R2 (B, C, D, E, A, 24); R2 (A, B, C, D, E, 25); R2 (E, A, B, C, D, 26); R2 (D, E, A, B, C, 27);
        R2 (C, D, E, A, B, 28); R2 (B, C, D, E, A, 29); R2 (A, B, C, D, E, 30); R2 (E, A, B, C, D, 31);
        R2 (D, E, A, B, C, 32); R2 (C, D, E, A, B, 33); R2 (B, C, D, E, A, 34); R2 (A, B, C, D, E, 35);
        R2 (E, A, B, C, D, 36); R2 (D, E, A, B, C, 37); R2 (C, D, E, A, B, 38); R2 (B, C, D, E, A, 39);

        /* 第3轮变换 */
        R3 (A, B, C, D, E, 40); R3 (E, A, B, C, D, 41); R3 (D, E, A, B, C, 42); R3 (C, D, E, A, B, 43);
        R3 (B, C, D, E, A, 44); R3 (A, B, C, D, E, 45); R3 (E, A, B, C, D, 46); R3 (D, E, A, B, C, 47);
        R3 (C, D, E, A, B, 48); R3 (B, C, D, E, A, 49); R3 (A, B, C, D, E, 50); R3 (E, A, B, C, D, 51);
        R3 (D, E, A, B, C, 52); R3 (C, D, E, A, B, 53); R3 (B, C, D, E, A, 54); R3 (A, B, C, D, E, 55);
        R3 (E, A, B, C, D, 56); R3 (D, E, A, B, C, 57); R3 (C, D, E, A, B, 58); R3 (B, C, D, E, A, 59);

        /* 第4轮变换 */
        R4 (A, B, C, D, E, 60); R4 (E, A, B, C, D, 61); R4 (D, E, A, B, C, 62); R4 (C, D, E, A, B, 63);
        R4 (B, C, D, E, A, 64); R4 (A, B, C, D, E, 65); R4 (E, A, B, C, D, 66); R4 (D, E, A, B, C, 67);
        R4 (C, D, E, A, B, 68); R4 (B, C, D, E, A, 69); R4 (A, B, C, D, E, 70); R4 (E, A, B, C, D, 71);
        R4 (D, E, A, B, C, 72); R4 (C, D, E, A, B, 73); R4 (B, C, D, E, A, 74); R4 (A, B, C, D, E, 75);
        R4 (E, A, B, C, D, 76); R4 (D, E, A, B, C, 77); R4 (C, D, E, A, B, 78); R4 (B, C, D, E, A, 79);

        state[0] += A;
        state[1] += B;
        state[2] += C;
        state[3] += D;
        state[4] += E;
        A=B=C=D=E=0;

        memset((void*)&A, 0, 4); /* ???? */
}

最后一个函数sha1_final:

.text:00430080 ; int __fastcall sha1_final(SHA1_CTX *ctx,BYTE *digest,BYTE trans_copies)
.text:00430080 sha1_final      proc near               ; CODE XREF: sub_407E6C+2Dp
.text:00430080
.text:00430080 _trans_copies   = dword ptr -24h
.text:00430080 i               = dword ptr -20h
.text:00430080 var_1C          = dword ptr -1Ch
.text:00430080 bigcount        = byte ptr -18h
.text:00430080 end             = dword ptr -10h
.text:00430080 s               = dword ptr -0Ch
.text:00430080 data            = byte ptr -4
.text:00430080
.text:00430080 _ctx = ebx
.text:00430080 _digest = edi
.text:00430080                 push    _ctx
.text:00430081                 push    esi             ; len
.text:00430082                 push    _digest         ; data
.text:00430083                 add     esp, 0FFFFFFE8h ; len
.text:00430086                 mov     _ctx, eax
.text:00430088                 xor     eax, eax
.text:0043008A                 lea     esi, [esp+24h+i]
.text:0043008E                 mov     byte ptr [esp+24h+_trans_copies], cl
.text:00430091                 mov     _digest, edx
.text:00430093                 mov     [esi], eax
.text:00430095
.text:00430095 NEXT_ENDIAN:                            ; CODE XREF: sha1_final+40j
.text:00430095                 mov     edx, [esi]      ; i 循环计数
.text:00430097                 and     edx, 3          ; i&3
.text:0043009A                 mov     ecx, 3
.text:0043009F                 sub     ecx, edx        ; 3 - (i&3)
.text:004300A1                 shl     ecx, 3          ; (3-(i&3))*8 或者 (3-(i&3))<<3
.text:004300A4                 xor     eax, eax
.text:004300A6                 cmp     dword ptr [esi], 4 ; if (i<4) eax=1;
.text:004300A6                                         ; else eax = 0;
.text:004300A9                 jnb     short TO_BIG_ENDIAN
.text:004300A9
.text:004300AB                 inc     eax
.text:004300AB
.text:004300AC
.text:004300AC TO_BIG_ENDIAN:                          ; CODE XREF: sha1_final+29j
.text:004300AC                 mov     edx, [_ctx+eax*4+SHA1_CTX.count0]
.text:004300B0                 shr     edx, cl         ; ctx->count[eax] >> ((3-(i&3))*8)
.text:004300B2                 and     dl, 0FFh        ; (ctx->count[eax] >> ((3-(i&3))*8)) & 0x0ff;
.text:004300B5                 mov     ecx, [esi]      ; i
.text:004300B7                 mov     byte ptr [esp+ecx+24h+bigcount], dl
.text:004300BB                 inc     dword ptr [esi] ; i++
.text:004300BD                 cmp     dword ptr [esi], 8 ; i<8
.text:004300C0                 jb      short NEXT_ENDIAN ; 处理字节序, 把ctx中的count[0],count[1](64bit) 数据bit数
.text:004300C0                                         ; 转化为BIG_ENDIAN 存储到bigcount[8]
.text:004300C0
.text:004300C2                 mov     byte ptr [esp+24h+end], 80h
.text:004300C7                 mov     al, byte ptr [esp+24h+_trans_copies]
.text:004300CA                 mov     ecx, 1          ; len
.text:004300CF                 push    eax             ; trans_copies
.text:004300D0                 mov     eax, _ctx       ; ctx
.text:004300D2                 lea     edx, [esp+28h+end] ; unsigned int
.text:004300D6                 call    sha1_update     ; sha1_update一个bit数据0x80, 这也许是表示数据的结束?
.text:004300D6
.text:004300DB                 jmp     short FOR_condition
.text:004300DD ; ---------------------------------------------------------------------------
.text:004300DD FOR:                                    ; CODE XREF: sha1_final+83j
.text:004300DD                 mov     byte ptr [esp+14h], 0 ; end
.text:004300E2                 mov     dl, [esp]       ; _trans_copies
.text:004300E5                 mov     ecx, 1          ; data
.text:004300EA                 push    edx             ; trans_copies
.text:004300EB                 lea     edx, [esp+18h]  ; end
.text:004300EF                 mov     eax, _ctx       ; ctx
.text:004300F1                 call    sha1_update
.text:004300F1
.text:004300F6
.text:004300F6 FOR_condition:                          ; CODE XREF: sha1_final+5Bj
.text:004300F6                 mov     eax, [_ctx+SHA1_CTX.count0]
.text:004300F9                 and     eax, 1F8h       ; 0x1F8 = 504 = 63*8
.text:004300FE                 cmp     eax, 1C0h       ; 0x1c0 = 488 = 56*8
.text:00430103                 jnz     short FOR       ; 判断剩余的bit数是不是等于488(56*8, 字节数是不是等
.text:00430103                                         ; 于56), 不等于添加'\0', 直到等于56, 剩余8个字节添加
.text:00430103                                         ; bigcount[8], 凑够64字节, 计算.
.text:00430103
.text:00430105                 mov     dl, [esp]       ; _trans_copies
.text:00430108                 mov     ecx, 8          ; data
.text:0043010D                 push    edx             ; trans_copies
.text:0043010E                 lea     edx, [esp+10h]  ; bigcount
.text:00430112                 mov     eax, _ctx       ; ctx
.text:00430114                 call    sha1_update     ; 把bigcount[8]添加到ctx->buffer, 计算最后64字节,
.text:00430114                                         ; 整个计算过程结束
.text:00430114
.text:00430119                 xor     eax, eax
.text:0043011B                 mov     [esi], eax      ; i = 0
.text:0043011B
.text:0043011D
.text:0043011D OUT_DIGEST:                             ; CODE XREF: sha1_final+AFj
.text:0043011D                 mov     edx, [esi]
.text:0043011F                 mov     ecx, [esi]
.text:00430121                 mov     eax, [_ctx+ecx*4+SHA1_CTX.state]
.text:00430124                 and     eax, 0FFFFFFFFh
.text:00430127                 mov     [_digest+edx*4], eax
.text:0043012A                 inc     dword ptr [esi] ; i++
.text:0043012C                 cmp     dword ptr [esi], 5
.text:0043012F                 jb      short OUT_DIGEST ; 输出 sha1 摘要的时候是按DWORD 输出, LITTLE_ENDIA字节徐
.text:0043012F
.text:00430131                 push    4               ; n
.text:00430133                 push    0               ; c
.text:00430135                 push    esi
.text:00430136                 call    _memset         ; i 清零
.text:00430136
.text:0043013B                 add     esp, 0Ch
.text:0043013E                 push    4               ; n
.text:00430140                 push    0               ; c
.text:00430142                 lea     edx, [esp+10h]
.text:00430146                 push    edx             ; s
.text:00430147                 call    _memset         ; var_1C 清零
.text:00430147
.text:0043014C                 add     esp, 0Ch
.text:0043014F                 lea     esi, [_ctx+SHA1_CTX.buffer]
.text:00430152                 push    40h             ; n
.text:00430154                 push    0               ; c
.text:00430156                 push    esi             ; s
.text:00430157                 call    _memset         ; ctx->buffer清零
.text:00430157
.text:0043015C                 add     esp, 0Ch
.text:0043015F                 push    14h             ; n
.text:00430161                 push    0               ; c
.text:00430163                 push    _ctx            ; s
.text:00430164                 call    _memset         ; ctx->state 清零
.text:00430164
.text:00430169                 add     esp, 0Ch
.text:0043016C                 lea     eax, [_ctx+SHA1_CTX.count0]
.text:0043016F                 push    8               ; n
.text:00430171                 push    0               ; c
.text:00430173                 push    eax             ; s
.text:00430174                 call    _memset         ; ctx->count[0], ctx->count[1]清零
.text:00430174
.text:00430179                 add     esp, 0Ch
.text:0043017C                 push    8               ; n
.text:0043017E                 push    0               ; c
.text:00430180                 lea     edx, [esp+20h+s]
.text:00430184                 push    edx             ; s
.text:00430185                 call    _memset         ; bigcount 清零
.text:00430185
.text:0043018A                 add     esp, 0Ch
.text:0043018D                 cmp     byte ptr [esp], 0 ; _trans_copies
.text:00430191                 jz      short loc_43019E
.text:00430191
.text:00430193                 mov     edx, esi        ; data
.text:00430195                 mov     cl, 1           ; trans_copies
.text:00430197                 mov     eax, _ctx       ; ctx_state
.text:00430199                 call    sha1_transform  ;/* ctx中产生一个坏的SHA1摘要信息 */
.text:00430199
.text:0043019E loc_43019E:                             ; CODE XREF: sha1_final+111j
.text:0043019E                 add     esp, 18h
.text:004301A1                 pop     _digest
.text:004301A2                 pop     esi
.text:004301A3                 pop     _ctx
.text:004301A4                 retn
.text:004301A4 sha1_final      endp ; sp =  0Ch

C实现:

void __fastcall
sha1_final(SHA1_CTX *ctx, u_int32_t *digest, u_int8_t trans_copies)
{
        int i;
        int var_1C;                /* ???? 没用到的变量 */
        u_int8_t bigcount[8];
        u_int8_t end;

        for (i = 0; i < 8; i++)        /* 字节序转换为 BIG_ENDIA */
        {
                bigcount[i] = (u_int8_t) ((ctx->count[(i >= 4 ? 0 : 1)] >> ((3 - (i & 3)) * 8)) & 255);
        }
        end = 0x80;
        sha1_update(ctx,  &end, 1, trans_copies);
        for (; (ctx->count[0] & 504) != 448; )
        {
                end = 0;
                sha1_update(ctx, &end, 1, trans_copies);
        }
        sha1_update(ctx, bigcount, 8, trans_copies);
        for(i=0; i<5; i++)        /* 计算结束,输出SHA1摘要 */
                *(digest+i) = ctx->state[i];

        memset(&i, 0, sizeof(i));
        memset(&var_1C, 0, sizeof(i));
        memset(ctx->buffer, 0, 64);  /* 销毁buffer中存储的数据 */
        memset(ctx->state, 0, 4*5);  /* 销毁ctx中出现的摘要 */
        memset(ctx->count, 0, 4*2);

        if (trans_copies != 0)      /* ctx中产生一个坏的SHA1摘要信息 */
                sha1_transform(ctx->state, ctx->buffer, TRANSFORM_COPIES);
}
雪    币: 280
活跃值: (433)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
icytear 11 2006-12-24 00:55
37
0
占个座位
俺是新来滴!!!
雪    币: 280
活跃值: (433)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
icytear 11 2006-12-24 00:55
38
0
再占一个, 这个估计用不上!
雪    币: 95
活跃值: (419)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
wxxw 6 2006-12-24 04:31
39
0
好东西,漫漫看
雪    币: 2934
活跃值: (3482)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
china 5 2006-12-24 08:42
40
0
我KAO,那不是要出注册机了?
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
q3 watcher 2006-12-24 08:54
41
0
好强啊!!!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
我来顶也 2006-12-24 13:04
42
0
精彩,学习中
雪    币: 2003
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LOVE 2006-12-24 16:32
43
0
只要keygen
雪    币: 214
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
girl 1 2006-12-24 16:42
44
0
好厉害啊
雪    币: 250
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
enbrow 2006-12-24 17:03
45
0
强贴,留名学习
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
破浪 2006-12-24 19:03
46
0
强贴,学习中....
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
云重 1 2007-1-8 22:00
47
0
不错
雪    币: 216
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
骷髅x 1 2007-1-10 12:16
48
0
老大,你真牛!!!
雪    币: 229
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msyrain 2007-1-10 21:32
49
0
lz!真?害!!!
雪    币: 210
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ljfu 2007-1-10 22:26
50
0
能够看完,就应该表扬自己,太强了.
游客
登录 | 注册 方可回帖
返回