能力值:
( LV12,RANK:450 )
36 楼
.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);
}