首页
社区
课程
招聘
ikki_CrackMe变形SHA和变形BlowFish逆向分析(一)
发表于: 2005-2-15 00:05 17214

ikki_CrackMe变形SHA和变形BlowFish逆向分析(一)

2005-2-15 00:05
17214
收藏
免费 7
支持
分享
最新回复 (34)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
ikki_CrackMe变形SHA和变形BlowFish逆向分析(二)----SHA1算法(1)
终于分析完第二部分SHA1部分,这部分代码超长,分析我头都有点晕,xixi~~~
还是废话少说,还是看看SHA1算法是如何实现的。
首先我们先看第一个初始化SHA1常数的函数,经过分析,这个函数的参考原型定义如下:
-------------procedure SHA1_Init(var SHA1_Init:array of DWORD);--------------------------
00411DB6      LEA EAX,DWORD PTR SS:[EBP-114]           ;  var SHA1_Init[1..5] of DWORD;
00411DBC      PUSH EAX
00411DBD      CALL CRACKME_.0041117C                   ;  CALL SHA1_Init;

-----------CALL SHA1_Init函数------------------------------------------------------------
现在这里是00411DBD CALL 0041117C内部,现在我分析分析这个函数,看他作了那些操作。
begin
00412680      PUSH EBP
00412681      MOV EBP,ESP
00412683      SUB ESP,0C0
00412689      PUSH EBX
0041268A      PUSH ESI
0041268B      PUSH EDI
0041268C      LEA EDI,DWORD PTR SS:[EBP-C0]
00412692      MOV ECX,30
00412697      MOV EAX,CCCCCCCC
0041269C      REP STOS DWORD PTR ES:[EDI]
0041269E      MOV EAX,DWORD PTR SS:[EBP+8]             ;  开始初绐化SHA1常数。
004126A1      MOV DWORD PTR DS:[EAX],67452301          ;  SHA1_Init[0] := $67452301;
004126A7      MOV EAX,DWORD PTR SS:[EBP+8]
004126AA      MOV DWORD PTR DS:[EAX+4],EFCDAB89        ;  SHA1_Init[1] := $EFCDAB89;
004126B1      MOV EAX,DWORD PTR SS:[EBP+8]
004126B4      MOV DWORD PTR DS:[EAX+8],98BADCFE        ;  SHA1_Init[2] := $98BADCFE;
004126BB      MOV EAX,DWORD PTR SS:[EBP+8]
004126BE      MOV DWORD PTR DS:[EAX+C],10325476        ;  SHA1_Init[3] := $10325476;
004126C5      MOV EAX,DWORD PTR SS:[EBP+8]
004126C8      MOV DWORD PTR DS:[EAX+10],C3D2E1F0       ;  SHA1_Init[4] := $C3D2E1F0;
004126CF      POP EDI
004126D0      POP ESI
004126D1      POP EBX
004126D2      MOV ESP,EBP
004126D4      POP EBP
004126D5      RETN
end;
到这里可以看出,这个函数操作的过程很简单,主要就是初始化SHA1的常数。这些用高级语言则如此表达:
procedure SHA1_Init(var SHA1_Init:array of DWORD);
begin
  SHA1_Init[0] := $67452301;
  SHA1_Init[1] := $EFCDAB89;
  SHA1_Init[2] := $98BADCFE;
  SHA1_Init[3] := $10325476;
  SHA1_Init[4] := $C3D2E1F0;
end;
xixi,很简单吧,我们接着继续~~~~~接下来可不简单了。。。^Q^

现在来看看00411DDC这个函数吧。
这个函数一开始是先将我们输入的Name_Str转换成64位的DWORD类型的格式。然后再进行SHA1加密。
---------------procedure Name_Init_64(var SHA1_Init:array of DWORD;----------------------
                                      var Name_Str:String;
                                      var Name_Len:DWORD;
                                          tmp:DWORD);
00411DC5      PUSH 0                                   ;  var tmp:DWORD = 0;
00411DC7      MOV EAX,DWORD PTR SS:[EBP-F8]
00411DCD      PUSH EAX                                 ;  var Name_Len
00411DCE      LEA ECX,DWORD PTR SS:[EBP-EC]
00411DD4      PUSH ECX                                 ;  var Name_Str;
00411DD5      LEA EDX,DWORD PTR SS:[EBP-114]
00411DDB      PUSH EDX                                 ;  var SHA1_Init:array[1..5] of DWORD;
00411DDC      CALL CRACKME_.004110C8                   ;  CALL Name_Init_64;

----------------------------CALL Name_Init_64---------------------------------------------
begin
00415C80  />  55            PUSH EBP
00415C81  |.  8BEC          MOV EBP,ESP
00415C83  |.  81EC 14010000 SUB ESP,114
00415C89  |.  53            PUSH EBX
00415C8A  |.  56            PUSH ESI
00415C8B  |.  57            PUSH EDI
00415C8C  |.  8DBD ECFEFFFF LEA EDI,DWORD PTR SS:[EBP-114]
00415C92  |.  B9 45000000   MOV ECX,45
00415C97  |.  B8 CCCCCCCC   MOV EAX,CCCCCCCC
00415C9C  |.  F3:AB         REP STOS DWORD PTR ES:[EDI]              ;  程序进行常规初绐化,不管他
00415C9E  |.  6A 40         PUSH 40
00415CA0  |.  6A 00         PUSH 0
00415CA2  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
00415CA5  |.  50            PUSH EAX
00415CA6  |.  E8 EFB4FFFF   CALL CRACKME_.0041119A
00415CAB  |.  83C4 0C       ADD ESP,0C
00415CAE  |.  C745 F8 00000>MOV DWORD PTR SS:[EBP-8],0               ;  var i:DWORD = 0;
00415CB5  |.  EB 09         JMP SHORT CRACKME_.00415CC0              ;  For i := 0 to Name_Len do

从00415CB7到00415CFB是将我们输入的用户名转成64位的DWORD类型消息。
00415CB7  |>  8B45 F8       /MOV EAX,DWORD PTR SS:[EBP-8]            ;  i := i + 1;
00415CBA  |.  83C0 01       |ADD EAX,1
00415CBD  |.  8945 F8       |MOV DWORD PTR SS:[EBP-8],EAX
00415CC0  |>  8B45 10        MOV EAX,DWORD PTR SS:[EBP+10]           ;  tmpLen := Name_Len and $3F;
00415CC3  |.  83E0 3F       |AND EAX,3F
00415CC6  |.  3945 F8       |CMP DWORD PTR SS:[EBP-8],EAX            ;  if i >= tmpLen then end;
00415CC9  |.  73 30         |JNB SHORT CRACKME_.00415CFB

Name_Init_64[i shr 2] := Name_Init_64[(i shr 2)] xor (DWORD(Ord(Name_Str[i + 1])) shl (i and 3 shl 3));
00415CCB  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            
00415CCE  |.  C1E8 02       |SHR EAX,2
00415CD1  |.  8B4D 0C       |MOV ECX,DWORD PTR SS:[EBP+C]
00415CD4  |.  0FB611        |MOVZX EDX,BYTE PTR DS:[ECX]
00415CD7  |.  8B4D F8       |MOV ECX,DWORD PTR SS:[EBP-8]
00415CDA  |.  83E1 03       |AND ECX,3
00415CDD  |.  C1E1 03       |SHL ECX,3
00415CE0  |.  D3E2          |SHL EDX,CL
00415CE2  |.  335485 B0     |XOR EDX,DWORD PTR SS:[EBP+EAX*4-50]
00415CE6  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]
00415CE9  |.  C1E8 02       |SHR EAX,2
00415CEC  |.  895485 B0     |MOV DWORD PTR SS:[EBP+EAX*4-50],EDX
00415CF0  |.  8B4D 0C       |MOV ECX,DWORD PTR SS:[EBP+C]
00415CF3  |.  83C1 01       |ADD ECX,1
00415CF6  |.  894D 0C       |MOV DWORD PTR SS:[EBP+C],ECX
00415CF9  |.^ EB BC         \JMP SHORT CRACKME_.00415CB7

从这里开始在用户名后面添加一个“0x80”作为结束符号。
i := Name_Len shr 2 and $0F;
00415CFB  |>  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]            
00415CFE  |.  C1E8 02       SHR EAX,2
00415D01  |.  83E0 0F       AND EAX,0F

Name_Init_64[i] := Name_Init_64[i] xor (1 shl ((Name_Len and 3) * 8 + 7));
00415D04  |.  8B4D 10       MOV ECX,DWORD PTR SS:[EBP+10]            
00415D07  |.  83E1 03       AND ECX,3
00415D0A  |.  8D0CCD 070000>LEA ECX,DWORD PTR DS:[ECX*8+7]
00415D11  |.  BA 01000000   MOV EDX,1
00415D16  |.  D3E2          SHL EDX,CL
00415D18  |.  335485 B0     XOR EDX,DWORD PTR SS:[EBP+EAX*4-50]
00415D1C  |.  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
00415D1F  |.  C1E8 02       SHR EAX,2
00415D22  |.  83E0 0F       AND EAX,0F
00415D25  |.  895485 B0     MOV DWORD PTR SS:[EBP+EAX*4-50],EDX

比较用户名长度是否大于等于0x37位,是则进入SHA1开始加密。不过,这一句似乎多余的,因为CrackMe对用户名的长度作了限制,其长度不会超过0x37的。
if (Name_Len and $3F) > $37 then Call SHA1;
00415D29  |.  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]            
00415D2C  |.  83E0 3F       AND EAX,3F
00415D2F  |.  83F8 37       CMP EAX,37
00415D32  |.  76 20         JBE SHORT CRACKME_.00415D54
00415D34  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]

下面这几句应该永远不会执行。
00415D37  |.  50            PUSH EAX                                 ;  var Name_Init_64:array[0..16] of DWORD;
00415D38  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00415D3B  |.  51            PUSH ECX                                 ;  var SHA1_Key:array[0..4] of DWORD;
00415D3C  |.  E8 47B7FFFF   CALL CRACKME_.00411488                   ;  CALL SHA1;
00415D41  |.  83C4 08       ADD ESP,8
00415D44  |.  6A 40         PUSH 40
00415D46  |.  6A 00         PUSH 0
00415D48  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
00415D4B  |.  50            PUSH EAX                                 ;  var Name_Init_64:array[0..16] of DWORD;
00415D4C  |.  E8 49B4FFFF   CALL CRACKME_.0041119A                   ;  又初始化Name_Init_64为零?
00415D51  |.  83C4 0C       ADD ESP,0C

Name_Init_64[14] := Name_Len shl 3;
00415D54  |>  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]            
00415D57  |.  C1E0 03       SHL EAX,3
00415D5A  |.  8945 E8       MOV DWORD PTR SS:[EBP-18],EAX

Name_Init_64[15] := (Name_Len shr 10) or (tmp shl 3);
00415D5D  |.  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]            
00415D60  |.  C1E8 1D       SHR EAX,1D
00415D63  |.  8B4D 14       MOV ECX,DWORD PTR SS:[EBP+14]            ;  var tmp:DWORD = 0;
00415D66  |.  C1E1 03       SHL ECX,3
00415D69  |.  0BC1          OR EAX,ECX
00415D6B  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX

开始进行SHA1算法,这个算法参考原则如下:
Procedure SHA1(var SHA1_Key, Name_64:array of DWORD);
00415D6E  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
00415D71  |.  50            PUSH EAX                                 ;  var Name_Init_64:array[0..16] of DOWRD;
00415D72  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00415D75  |.  51            PUSH ECX                                 ;  var SHA1_Key:array[0..4] of DWORD;
00415D76  |.  E8 0DB7FFFF   CALL CRACKME_.00411488                   ;  CALL SHA1;
00415D7B  |.  83C4 08       ADD ESP,8                                ;  到这里以后不管他了。
00415D7E  |.  52            PUSH EDX
00415D7F  |.  8BCD          MOV ECX,EBP
00415D81  |.  50            PUSH EAX
00415D82  |.  8D15 A35D4100 LEA EDX,DWORD PTR DS:[415DA3]
00415D88  |.  E8 44B4FFFF   CALL CRACKME_.004111D1
00415D8D  |.  58            POP EAX
00415D8E  |.  5A            POP EDX
00415D8F  |.  5F            POP EDI
00415D90  |.  5E            POP ESI
00415D91  |.  5B            POP EBX
00415D92  |.  81C4 14010000 ADD ESP,114
00415D98  |.  3BEC          CMP EBP,ESP
00415D9A  |.  E8 5DB6FFFF   CALL CRACKME_.004113FC
00415D9F  |.  8BE5          MOV ESP,EBP
00415DA1  |.  5D            POP EBP
00415DA2  \.  C3            RETN
end;

呵呵,分析到这里,我们可以得出如下参考:
Procedure SHA_64Key(var Name_Str:String; var SHA_Key:array of DWORD; var Name_Len:DWORD);
var
  i, tmpLen:DWORD;
begin
  tmpLen := Name_Len and $3F;

//开始连接转换Name_Str为DWORD类型。
  For i := 0 to tmpLen do
  begin
    SHA_Key[i shr 2] := SHA_Key[i shr 2] xor (DWORD(Ord(Name_Str[i + 1])) shl (i and 3 shl 3));
  end;

//填充结束符号“0x80”。
  i := Name_Len  shr 2 and $0F;
  SHA_Key[i] := (1 shl ((Name_Len and 3) * 8 + 7)) xor SHA_Key[i];
  tmpLen := Name_Len and $3F;

//这一句判断是多余,因为我已经对用户名长度作了限制,不会超过0x37位。不过忠于原作,还是写上。
  if tmpLen <= $37 then
    SHA_Key[14] := tmpLen shl 3;
end;

到此,SHA1算法的初始化部分我们已经分析完毕了,接下来我会开始分析SHA1的算法。不过那段代码太长了,稍后再分析,呵呵。未完待续。。。

----本文只能作为内部研究之用,如需转载请保持文章的完整性,谢谢!----小虾(战神[DFCG]),2005/2/11
2005-2-15 00:06
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
ikki_CrackMe变形SHA和变形BlowFish逆向分析(三)----SHA1算法(2)
现在我们接着开始分析SHA1的算法, 这个SHA1算法分析起来倒是很简单,基本就是将待加密的数据乱七八糟的逻辑运算一通,得出一个固定长度为160位的数字签名。就是代码冗长,分析起来太费时间(分析了两天~~^_^~~)。
还是废话少说的好,转入正题吧。这个函数原型参考如下:
---------------Procedure SHA1(var SHA1_Key, Name_64:array of DWORD);---------------------
00415D6E  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
00415D71  |.  50            PUSH EAX                                 ;  var Name_Init_64:array[0..16] of DOWRD;
00415D72  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00415D75  |.  51            PUSH ECX                                 ;  var SHA1_Key:array[0..4] of DWORD;
00415D76  |.  E8 0DB7FFFF   CALL CRACKME_.00411488                   ;  CALL SHA1;

-----------------------------CALL SHA1---------------------------------------------------
begin
004126F0  PUSH EBP
004126F1  MOV EBP,ESP
004126F3  SUB ESP,138
004126F9  PUSH EBX
004126FA  PUSH ESI
004126FB  PUSH EDI

004126FC  LEA EDI,DWORD PTR SS:[EBP-138]           ; 程序进行常规初始化。
00412702  MOV ECX,4E
00412707  MOV EAX,CCCCCCCC
0041270C  REP STOS DWORD PTR ES:[EDI]
0041270E  MOV EAX,DWORD PTR SS:[EBP+8]
00412711  MOV ECX,DWORD PTR DS:[EAX]
00412713  MOV DWORD PTR SS:[EBP-8],ECX             ; 保存SHA1_Key[0],设为a1;
00412716  MOV EAX,DWORD PTR SS:[EBP+8]
00412719  MOV ECX,DWORD PTR DS:[EAX+4]
0041271C  MOV DWORD PTR SS:[EBP-14],ECX            ; 保存SHA1_Key[1],设为b1;
0041271F  MOV EAX,DWORD PTR SS:[EBP+8]
00412722  MOV ECX,DWORD PTR DS:[EAX+8]
00412725  MOV DWORD PTR SS:[EBP-20],ECX            ; 保存SHA1_Key[2],设为c1;
00412728  MOV EAX,DWORD PTR SS:[EBP+8]
0041272B  MOV ECX,DWORD PTR DS:[EAX+C]
0041272E  MOV DWORD PTR SS:[EBP-2C],ECX            ; 保存SHA1_Key[3],设为d1;
00412731  MOV EAX,DWORD PTR SS:[EBP+8]
00412734  MOV ECX,DWORD PTR DS:[EAX+10]
00412737  MOV DWORD PTR SS:[EBP-38],ECX            ; 保存SHA1_Key[4],设为e1;
0041273A  MOV EAX,DWORD PTR SS:[EBP+8]
0041273D  MOV ECX,DWORD PTR DS:[EAX]
0041273F  MOV DWORD PTR SS:[EBP-44],ECX            ; 再次保存SHA1_Key[0],设为a2;
00412742  MOV EAX,DWORD PTR SS:[EBP+8]
00412745  MOV ECX,DWORD PTR DS:[EAX+4]
00412748  MOV DWORD PTR SS:[EBP-50],ECX            ; 再次保存SHA1_Key[1],设为b2;
0041274B  MOV EAX,DWORD PTR SS:[EBP+8]
0041274E  MOV ECX,DWORD PTR DS:[EAX+8]
00412751  MOV DWORD PTR SS:[EBP-5C],ECX            ; 再次保存SHA1_Key[2],设为c2;
00412754  MOV EAX,DWORD PTR SS:[EBP+8]
00412757  MOV ECX,DWORD PTR DS:[EAX+C]
0041275A  MOV DWORD PTR SS:[EBP-68],ECX            ; 再次保存SHA1_Key[3],设为d2;
0041275D  MOV EAX,DWORD PTR SS:[EBP+8]
00412760  MOV ECX,DWORD PTR DS:[EAX+10]
00412763  MOV DWORD PTR SS:[EBP-74],ECX            ; 再次保存SHA1_Key[4],设为e2;

//a1 := b1 xor c1 xor d1 + Name_64[0] + a1;
00412766  MOV EAX,DWORD PTR SS:[EBP-14]
00412769  XOR EAX,DWORD PTR SS:[EBP-20]
0041276C  XOR EAX,DWORD PTR SS:[EBP-2C]
0041276F  MOV ECX,DWORD PTR SS:[EBP+C]
00412772  ADD EAX,DWORD PTR DS:[ECX]
00412774  ADD EAX,DWORD PTR SS:[EBP-8]
00412777  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $0B) or (a1 shr $15) + e1;
0041277A  MOV EAX,DWORD PTR SS:[EBP-8]
0041277D  SHL EAX,0B
00412780  MOV ECX,DWORD PTR SS:[EBP-8]
00412783  SHR ECX,15
00412786  OR EAX,ECX
00412788  ADD EAX,DWORD PTR SS:[EBP-38]
0041278B  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
0041278E  MOV EAX,DWORD PTR SS:[EBP-20]
00412791  SHL EAX,0A
00412794  MOV ECX,DWORD PTR SS:[EBP-20]
00412797  SHR ECX,16
0041279A  OR EAX,ECX
0041279C  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := a1 xor b1 xor c1 + Name_64[1] + e1;
0041279F  MOV EAX,DWORD PTR SS:[EBP-8]
004127A2  XOR EAX,DWORD PTR SS:[EBP-14]
004127A5  XOR EAX,DWORD PTR SS:[EBP-20]
004127A8  MOV ECX,DWORD PTR SS:[EBP+C]
004127AB  ADD EAX,DWORD PTR DS:[ECX+4]
004127AE  ADD EAX,DWORD PTR SS:[EBP-38]
004127B1  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl $0E) or (e1 shr $12) + d1;
004127B4  MOV EAX,DWORD PTR SS:[EBP-38]            
004127B7  SHL EAX,0E
004127BA  MOV ECX,DWORD PTR SS:[EBP-38]
004127BD  SHR ECX,12
004127C0  OR EAX,ECX
004127C2  ADD EAX,DWORD PTR SS:[EBP-2C]
004127C5  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
004127C8  MOV EAX,DWORD PTR SS:[EBP-14]
004127CB  SHL EAX,0A
004127CE  MOV ECX,DWORD PTR SS:[EBP-14]
004127D1  SHR ECX,16
004127D4  OR EAX,ECX
004127D6  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := e1 xor a1 xor b1 + Name_64[2] + d1;
004127D9  MOV EAX,DWORD PTR SS:[EBP-38]
004127DC  XOR EAX,DWORD PTR SS:[EBP-8]
004127DF  XOR EAX,DWORD PTR SS:[EBP-14]
004127E2  MOV ECX,DWORD PTR SS:[EBP+C]
004127E5  ADD EAX,DWORD PTR DS:[ECX+8]
004127E8  ADD EAX,DWORD PTR SS:[EBP-2C]
004127EB  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl $0F) or (d1 shr $11) + c1;
004127EE  MOV EAX,DWORD PTR SS:[EBP-2C]
004127F1  SHL EAX,0F
004127F4  MOV ECX,DWORD PTR SS:[EBP-2C]
004127F7  SHR ECX,11
004127FA  OR EAX,ECX
004127FC  ADD EAX,DWORD PTR SS:[EBP-20]
004127FF  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412802  MOV EAX,DWORD PTR SS:[EBP-8]
00412805  SHL EAX,0A
00412808  MOV ECX,DWORD PTR SS:[EBP-8]
0041280B  SHR ECX,16
0041280E  OR EAX,ECX
00412810  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := d1 xor e1 xor a1 + Name_64[3] + c1;
00412813  MOV EAX,DWORD PTR SS:[EBP-2C]
00412816  XOR EAX,DWORD PTR SS:[EBP-38]
00412819  XOR EAX,DWORD PTR SS:[EBP-8]
0041281C  MOV ECX,DWORD PTR SS:[EBP+C]
0041281F  ADD EAX,DWORD PTR DS:[ECX+C]
00412822  ADD EAX,DWORD PTR SS:[EBP-20]
00412825  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl $0C) or (c1 shr $14) + b1;
00412828  MOV EAX,DWORD PTR SS:[EBP-20]
0041282B  SHL EAX,0C
0041282E  MOV ECX,DWORD PTR SS:[EBP-20]
00412831  SHR ECX,14
00412834  OR EAX,ECX
00412836  ADD EAX,DWORD PTR SS:[EBP-14]
00412839  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
0041283C  MOV EAX,DWORD PTR SS:[EBP-38]
0041283F  SHL EAX,0A
00412842  MOV ECX,DWORD PTR SS:[EBP-38]
00412845  SHR ECX,16
00412848  OR EAX,ECX
0041284A  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := c1 xor d1 xor e1 + Name_64[4] + b1;
0041284D  MOV EAX,DWORD PTR SS:[EBP-20]
00412850  XOR EAX,DWORD PTR SS:[EBP-2C]
00412853  XOR EAX,DWORD PTR SS:[EBP-38]
00412856  MOV ECX,DWORD PTR SS:[EBP+C]
00412859  ADD EAX,DWORD PTR DS:[ECX+10]
0041285C  ADD EAX,DWORD PTR SS:[EBP-14]
0041285F  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 5) or (b1 shr $1B) + a1;
00412862  MOV EAX,DWORD PTR SS:[EBP-14]
00412865  SHL EAX,5
00412868  MOV ECX,DWORD PTR SS:[EBP-14]
0041286B  SHR ECX,1B
0041286E  OR EAX,ECX
00412870  ADD EAX,DWORD PTR SS:[EBP-8]
00412873  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16));
00412876  MOV EAX,DWORD PTR SS:[EBP-2C]
00412879  SHL EAX,0A
0041287C  MOV ECX,DWORD PTR SS:[EBP-2C]
0041287F  SHR ECX,16
00412882  OR EAX,ECX
00412884  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := b1 xor c1 xor d1 + Name_64[5] + a1;
00412887  MOV EAX,DWORD PTR SS:[EBP-14]
0041288A  XOR EAX,DWORD PTR SS:[EBP-20]
0041288D  XOR EAX,DWORD PTR SS:[EBP-2C]
00412890  MOV ECX,DWORD PTR SS:[EBP+C]
00412893  ADD EAX,DWORD PTR DS:[ECX+14]
00412896  ADD EAX,DWORD PTR SS:[EBP-8]
00412899  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl 8) or (a1 shr $18) + e1;
0041289C  MOV EAX,DWORD PTR SS:[EBP-8]
0041289F  SHL EAX,8
004128A2  MOV ECX,DWORD PTR SS:[EBP-8]
004128A5  SHR ECX,18
004128A8  OR EAX,ECX
004128AA  ADD EAX,DWORD PTR SS:[EBP-38]
004128AD  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
004128B0  MOV EAX,DWORD PTR SS:[EBP-20]
004128B3  SHL EAX,0A
004128B6  MOV ECX,DWORD PTR SS:[EBP-20]
004128B9  SHR ECX,16
004128BC  OR EAX,ECX
004128BE  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := a1 xor b1 xor c1 + Name_64[6] + e1;
004128C1  MOV EAX,DWORD PTR SS:[EBP-8]
004128C4  XOR EAX,DWORD PTR SS:[EBP-14]
004128C7  XOR EAX,DWORD PTR SS:[EBP-20]
004128CA  MOV ECX,DWORD PTR SS:[EBP+C]
004128CD  ADD EAX,DWORD PTR DS:[ECX+18]
004128D0  ADD EAX,DWORD PTR SS:[EBP-38]
004128D3  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl 7) or (e1 shr $19) + d1;
004128D6  MOV EAX,DWORD PTR SS:[EBP-38]
004128D9  SHL EAX,7
004128DC  MOV ECX,DWORD PTR SS:[EBP-38]
004128DF  SHR ECX,19
004128E2  OR EAX,ECX
004128E4  ADD EAX,DWORD PTR SS:[EBP-2C]
004128E7  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
004128EA  MOV EAX,DWORD PTR SS:[EBP-14]
004128ED  SHL EAX,0A
004128F0  MOV ECX,DWORD PTR SS:[EBP-14]
004128F3  SHR ECX,16
004128F6  OR EAX,ECX
004128F8  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := e1 xor a1 xor b1 + Name_64[7] + d1;
004128FB  MOV EAX,DWORD PTR SS:[EBP-38]
004128FE  XOR EAX,DWORD PTR SS:[EBP-8]
00412901  XOR EAX,DWORD PTR SS:[EBP-14]
00412904  MOV ECX,DWORD PTR SS:[EBP+C]
00412907  ADD EAX,DWORD PTR DS:[ECX+1C]
0041290A  ADD EAX,DWORD PTR SS:[EBP-2C]
0041290D  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 9) or (d1 shr $17) + c1;
00412910  MOV EAX,DWORD PTR SS:[EBP-2C]
00412913  SHL EAX,9
00412916  MOV ECX,DWORD PTR SS:[EBP-2C]
00412919  SHR ECX,17
0041291C  OR EAX,ECX
0041291E  ADD EAX,DWORD PTR SS:[EBP-20]
00412921  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412924  MOV EAX,DWORD PTR SS:[EBP-8]
00412927  SHL EAX,0A
0041292A  MOV ECX,DWORD PTR SS:[EBP-8]
0041292D  SHR ECX,16
00412930  OR EAX,ECX
00412932  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := d1 xor e1 xor a1 + Name_64[8] + c1;
00412935  MOV EAX,DWORD PTR SS:[EBP-2C]
00412938  XOR EAX,DWORD PTR SS:[EBP-38]
0041293B  XOR EAX,DWORD PTR SS:[EBP-8]
0041293E  MOV ECX,DWORD PTR SS:[EBP+C]
00412941  ADD EAX,DWORD PTR DS:[ECX+20]
00412944  ADD EAX,DWORD PTR SS:[EBP-20]
00412947  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl $0B) or (c1 shr $15) + b1;
0041294A  MOV EAX,DWORD PTR SS:[EBP-20]
0041294D  SHL EAX,0B
00412950  MOV ECX,DWORD PTR SS:[EBP-20]
00412953  SHR ECX,15
00412956  OR EAX,ECX
00412958  ADD EAX,DWORD PTR SS:[EBP-14]
0041295B  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
0041295E  MOV EAX,DWORD PTR SS:[EBP-38]
00412961  SHL EAX,0A
00412964  MOV ECX,DWORD PTR SS:[EBP-38]
00412967  SHR ECX,16
0041296A  OR EAX,ECX
0041296C  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := c1 xor d1 xor e1 + Name_64[9] + b1;
0041296F  MOV EAX,DWORD PTR SS:[EBP-20]
00412972  XOR EAX,DWORD PTR SS:[EBP-2C]
00412975  XOR EAX,DWORD PTR SS:[EBP-38]
00412978  MOV ECX,DWORD PTR SS:[EBP+C]
0041297B  ADD EAX,DWORD PTR DS:[ECX+24]
0041297E  ADD EAX,DWORD PTR SS:[EBP-14]
00412981  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl $0D) or (b1 shr $13) + a1;
00412984  MOV EAX,DWORD PTR SS:[EBP-14]
00412987  SHL EAX,0D
0041298A  MOV ECX,DWORD PTR SS:[EBP-14]
0041298D  SHR ECX,13
00412990  OR EAX,ECX
00412992  ADD EAX,DWORD PTR SS:[EBP-8]
00412995  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00412998  MOV EAX,DWORD PTR SS:[EBP-2C]
0041299B  SHL EAX,0A
0041299E  MOV ECX,DWORD PTR SS:[EBP-2C]
004129A1  SHR ECX,16
004129A4  OR EAX,ECX
004129A6  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := b1 xor c1 xor d1 + Name_64[10] + a1;
004129A9  MOV EAX,DWORD PTR SS:[EBP-14]
004129AC  XOR EAX,DWORD PTR SS:[EBP-20]
004129AF  XOR EAX,DWORD PTR SS:[EBP-2C]
004129B2  MOV ECX,DWORD PTR SS:[EBP+C]
004129B5  ADD EAX,DWORD PTR DS:[ECX+28]
004129B8  ADD EAX,DWORD PTR SS:[EBP-8]
004129BB  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $0E) or (a1 shr $12) + e1;
004129BE  MOV EAX,DWORD PTR SS:[EBP-8]
004129C1  SHL EAX,0E
004129C4  MOV ECX,DWORD PTR SS:[EBP-8]
004129C7  SHR ECX,12
004129CA  OR EAX,ECX
004129CC  ADD EAX,DWORD PTR SS:[EBP-38]
004129CF  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr ($16);
004129D2  MOV EAX,DWORD PTR SS:[EBP-20]
004129D5  SHL EAX,0A
004129D8  MOV ECX,DWORD PTR SS:[EBP-20]
004129DB  SHR ECX,16
004129DE  OR EAX,ECX
004129E0  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := a1 xor b1 xor c1 + Name_64[11] + e1;
004129E3  MOV EAX,DWORD PTR SS:[EBP-8]
004129E6  XOR EAX,DWORD PTR SS:[EBP-14]
004129E9  XOR EAX,DWORD PTR SS:[EBP-20]
004129EC  MOV ECX,DWORD PTR SS:[EBP+C]
004129EF  ADD EAX,DWORD PTR DS:[ECX+2C]
004129F2  ADD EAX,DWORD PTR SS:[EBP-38]
004129F5  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl $0F) or (e1 shr $11) + d1;
004129F8  MOV EAX,DWORD PTR SS:[EBP-38]
004129FB  SHL EAX,0F
004129FE  MOV ECX,DWORD PTR SS:[EBP-38]
00412A01  SHR ECX,11
00412A04  OR EAX,ECX
00412A06  ADD EAX,DWORD PTR SS:[EBP-2C]
00412A09  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00412A0C  MOV EAX,DWORD PTR SS:[EBP-14]
00412A0F  SHL EAX,0A
00412A12  MOV ECX,DWORD PTR SS:[EBP-14]
00412A15  SHR ECX,16
00412A18  OR EAX,ECX
00412A1A  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := e1 xor a1 xor b1 + Name_64[12] + d1;
00412A1D  MOV EAX,DWORD PTR SS:[EBP-38]
00412A20  XOR EAX,DWORD PTR SS:[EBP-8]
00412A23  XOR EAX,DWORD PTR SS:[EBP-14]
00412A26  MOV ECX,DWORD PTR SS:[EBP+C]
00412A29  ADD EAX,DWORD PTR DS:[ECX+30]
00412A2C  ADD EAX,DWORD PTR SS:[EBP-2C]
00412A2F  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 6) or (d1 shr $1A) + c1;
00412A32  MOV EAX,DWORD PTR SS:[EBP-2C]
00412A35  SHL EAX,6
00412A38  MOV ECX,DWORD PTR SS:[EBP-2C]
00412A3B  SHR ECX,1A
00412A3E  OR EAX,ECX
00412A40  ADD EAX,DWORD PTR SS:[EBP-20]
00412A43  MOV DWORD PTR SS:[EBP-2C],EAX
00412A46  MOV EAX,DWORD PTR SS:[EBP-8]
00412A49  SHL EAX,0A
00412A4C  MOV ECX,DWORD PTR SS:[EBP-8]
00412A4F  SHR ECX,16
00412A52  OR EAX,ECX
00412A54  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := d1 xor e1 xor a1 + Name_64[13] + c1;
00412A57  MOV EAX,DWORD PTR SS:[EBP-2C]
00412A5A  XOR EAX,DWORD PTR SS:[EBP-38]
00412A5D  XOR EAX,DWORD PTR SS:[EBP-8]
00412A60  MOV ECX,DWORD PTR SS:[EBP+C]
00412A63  ADD EAX,DWORD PTR DS:[ECX+34]
00412A66  ADD EAX,DWORD PTR SS:[EBP-20]
00412A69  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl 7) or (c1 shr $19) + b1;
00412A6C  MOV EAX,DWORD PTR SS:[EBP-20]
00412A6F  SHL EAX,7
00412A72  MOV ECX,DWORD PTR SS:[EBP-20]
00412A75  SHR ECX,19
00412A78  OR EAX,ECX
00412A7A  ADD EAX,DWORD PTR SS:[EBP-14]
00412A7D  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00412A80  MOV EAX,DWORD PTR SS:[EBP-38]
00412A83  SHL EAX,0A
00412A86  MOV ECX,DWORD PTR SS:[EBP-38]
00412A89  SHR ECX,16
00412A8C  OR EAX,ECX
00412A8E  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := c1 xor d1 xor e1 + Name_64[14] + b1;
00412A91  MOV EAX,DWORD PTR SS:[EBP-20]
00412A94  XOR EAX,DWORD PTR SS:[EBP-2C]
00412A97  XOR EAX,DWORD PTR SS:[EBP-38]
00412A9A  MOV ECX,DWORD PTR SS:[EBP+C]
00412A9D  ADD EAX,DWORD PTR DS:[ECX+38]
00412AA0  ADD EAX,DWORD PTR SS:[EBP-14]
00412AA3  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 9) or (b1 shr $17) + a1;
00412AA6  MOV EAX,DWORD PTR SS:[EBP-14]
00412AA9  SHL EAX,9
00412AAC  MOV ECX,DWORD PTR SS:[EBP-14]
00412AAF  SHR ECX,17
00412AB2  OR EAX,ECX
00412AB4  ADD EAX,DWORD PTR SS:[EBP-8]
00412AB7  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00412ABA  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412ABD  SHL EAX,0A
00412AC0  MOV ECX,DWORD PTR SS:[EBP-2C]
00412AC3  SHR ECX,16
00412AC6  OR EAX,ECX
00412AC8  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := b1 xor c1 xor d1 + Name_64[15] + a1;
00412ACB  MOV EAX,DWORD PTR SS:[EBP-14]            
00412ACE  XOR EAX,DWORD PTR SS:[EBP-20]
00412AD1  XOR EAX,DWORD PTR SS:[EBP-2C]
00412AD4  MOV ECX,DWORD PTR SS:[EBP+C]
00412AD7  ADD EAX,DWORD PTR DS:[ECX+3C]
00412ADA  ADD EAX,DWORD PTR SS:[EBP-8]
00412ADD  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl 8) or (a1 shr $18) + e1;
00412AE0  MOV EAX,DWORD PTR SS:[EBP-8]            
00412AE3  SHL EAX,8
00412AE6  MOV ECX,DWORD PTR SS:[EBP-8]
00412AE9  SHR ECX,18
00412AEC  OR EAX,ECX
00412AEE  ADD EAX,DWORD PTR SS:[EBP-38]
00412AF1  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
00412AF4  MOV EAX,DWORD PTR SS:[EBP-20]            
00412AF7  SHL EAX,0A
00412AFA  MOV ECX,DWORD PTR SS:[EBP-20]
00412AFD  SHR ECX,16
00412B00  OR EAX,ECX
00412B02  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[7]) + e1 + $5A827999;
00412B05  MOV EAX,DWORD PTR SS:[EBP-8]            
00412B08  AND EAX,DWORD PTR SS:[EBP-14]
00412B0B  MOV ECX,DWORD PTR SS:[EBP-8]
00412B0E  NOT ECX
00412B10  AND ECX,DWORD PTR SS:[EBP-20]
00412B13  OR EAX,ECX
00412B15  MOV EDX,DWORD PTR SS:[EBP+C]
00412B18  ADD EAX,DWORD PTR DS:[EDX+1C]
00412B1B  MOV ECX,DWORD PTR SS:[EBP-38]
00412B1E  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412B25  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl 7) or (e1 shr $19) + d1;
00412B28  MOV EAX,DWORD PTR SS:[EBP-38]            
00412B2B  SHL EAX,7
00412B2E  MOV ECX,DWORD PTR SS:[EBP-38]
00412B31  SHR ECX,19
00412B34  OR EAX,ECX
00412B36  ADD EAX,DWORD PTR SS:[EBP-2C]
00412B39  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00412B3C  MOV EAX,DWORD PTR SS:[EBP-14]            
00412B3F  SHL EAX,0A
00412B42  MOV ECX,DWORD PTR SS:[EBP-14]
00412B45  SHR ECX,16
00412B48  OR EAX,ECX
00412B4A  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[4]) + d1 + $5A827999;
00412B4D  MOV EAX,DWORD PTR SS:[EBP-38]            
00412B50  AND EAX,DWORD PTR SS:[EBP-8]
00412B53  MOV ECX,DWORD PTR SS:[EBP-38]
00412B56  NOT ECX
00412B58  AND ECX,DWORD PTR SS:[EBP-14]
00412B5B  OR EAX,ECX
00412B5D  MOV EDX,DWORD PTR SS:[EBP+C]
00412B60  ADD EAX,DWORD PTR DS:[EDX+10]
00412B63  MOV ECX,DWORD PTR SS:[EBP-2C]
00412B66  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412B6D  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl 6) or (d1 shr $1A) + c1;
00412B70  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412B73  SHL EAX,6
00412B76  MOV ECX,DWORD PTR SS:[EBP-2C]
00412B79  SHR ECX,1A
00412B7C  OR EAX,ECX
00412B7E  ADD EAX,DWORD PTR SS:[EBP-20]
00412B81  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412B84  MOV EAX,DWORD PTR SS:[EBP-8]            
00412B87  SHL EAX,0A
00412B8A  MOV ECX,DWORD PTR SS:[EBP-8]
00412B8D  SHR ECX,16
00412B90  OR EAX,ECX
00412B92  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[13]) + c1 + $5A827999;
00412B95  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412B98  AND EAX,DWORD PTR SS:[EBP-38]
00412B9B  MOV ECX,DWORD PTR SS:[EBP-2C]
00412B9E  NOT ECX
00412BA0  AND ECX,DWORD PTR SS:[EBP-8]
00412BA3  OR EAX,ECX
00412BA5  MOV EDX,DWORD PTR SS:[EBP+C]
00412BA8  ADD EAX,DWORD PTR DS:[EDX+34]
00412BAB  MOV ECX,DWORD PTR SS:[EBP-20]
00412BAE  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412BB5  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl 8) or (c1 shr $18) + b1;
00412BB8  MOV EAX,DWORD PTR SS:[EBP-20]            
00412BBB  SHL EAX,8
00412BBE  MOV ECX,DWORD PTR SS:[EBP-20]
00412BC1  SHR ECX,18
00412BC4  OR EAX,ECX
00412BC6  ADD EAX,DWORD PTR SS:[EBP-14]
00412BC9  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00412BCC  MOV EAX,DWORD PTR SS:[EBP-38]            
00412BCF  SHL EAX,0A
00412BD2  MOV ECX,DWORD PTR SS:[EBP-38]
00412BD5  SHR ECX,16
00412BD8  OR EAX,ECX
00412BDA  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[1]) + b1 + $5A827999;
00412BDD  MOV EAX,DWORD PTR SS:[EBP-20]            
00412BE0  AND EAX,DWORD PTR SS:[EBP-2C]
00412BE3  MOV ECX,DWORD PTR SS:[EBP-20]
00412BE6  NOT ECX
00412BE8  AND ECX,DWORD PTR SS:[EBP-38]
00412BEB  OR EAX,ECX
00412BED  MOV EDX,DWORD PTR SS:[EBP+C]
00412BF0  ADD EAX,DWORD PTR DS:[EDX+4]
00412BF3  MOV ECX,DWORD PTR SS:[EBP-14]
00412BF6  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412BFD  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl $0D) or (b1 shr $13) + a1;
00412C00  MOV EAX,DWORD PTR SS:[EBP-14]            
00412C03  SHL EAX,0D
00412C06  MOV ECX,DWORD PTR SS:[EBP-14]
00412C09  SHR ECX,13
00412C0C  OR EAX,ECX
00412C0E  ADD EAX,DWORD PTR SS:[EBP-8]
00412C11  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00412C14  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412C17  SHL EAX,0A
00412C1A  MOV ECX,DWORD PTR SS:[EBP-2C]
00412C1D  SHR ECX,16
00412C20  OR EAX,ECX
00412C22  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (((b1 and c1) or (not(b1) and d1)) + Name_64[10] + a1 + $5A827999;
00412C25  MOV EAX,DWORD PTR SS:[EBP-14]            
00412C28  AND EAX,DWORD PTR SS:[EBP-20]
00412C2B  MOV ECX,DWORD PTR SS:[EBP-14]
00412C2E  NOT ECX
00412C30  AND ECX,DWORD PTR SS:[EBP-2C]
00412C33  OR EAX,ECX
00412C35  MOV EDX,DWORD PTR SS:[EBP+C]
00412C38  ADD EAX,DWORD PTR DS:[EDX+28]
00412C3B  MOV ECX,DWORD PTR SS:[EBP-8]
00412C3E  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412C45  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl $0B) or (a1 shr $15) + e1;
00412C48  MOV EAX,DWORD PTR SS:[EBP-8]            
00412C4B  SHL EAX,0B
00412C4E  MOV ECX,DWORD PTR SS:[EBP-8]
00412C51  SHR ECX,15
00412C54  OR EAX,ECX
00412C56  ADD EAX,DWORD PTR SS:[EBP-38]
00412C59  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
00412C5C  MOV EAX,DWORD PTR SS:[EBP-20]            
00412C5F  SHL EAX,0A
00412C62  MOV ECX,DWORD PTR SS:[EBP-20]
00412C65  SHR ECX,16
00412C68  OR EAX,ECX
00412C6A  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[7]) + e1 + $5A827999;
00412C6D  MOV EAX,DWORD PTR SS:[EBP-8]            
00412C70  AND EAX,DWORD PTR SS:[EBP-14]
00412C73  MOV ECX,DWORD PTR SS:[EBP-8]
00412C76  NOT ECX
00412C78  AND ECX,DWORD PTR SS:[EBP-20]
00412C7B  OR EAX,ECX
00412C7D  MOV EDX,DWORD PTR SS:[EBP+C]
00412C80  ADD EAX,DWORD PTR DS:[EDX+18]
00412C83  MOV ECX,DWORD PTR SS:[EBP-38]
00412C86  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412C8D  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl 9) or (e1 shr $17) + d1;
00412C90  MOV EAX,DWORD PTR SS:[EBP-38]            
00412C93  SHL EAX,9
00412C96  MOV ECX,DWORD PTR SS:[EBP-38]
00412C99  SHR ECX,17
00412C9C  OR EAX,ECX
00412C9E  ADD EAX,DWORD PTR SS:[EBP-2C]
00412CA1  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00412CA4  MOV EAX,DWORD PTR SS:[EBP-14]            
00412CA7  SHL EAX,0A
00412CAA  MOV ECX,DWORD PTR SS:[EBP-14]
00412CAD  SHR ECX,16
00412CB0  OR EAX,ECX
00412CB2  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[15]) + d1 + $5A827999;
00412CB5  MOV EAX,DWORD PTR SS:[EBP-38]            
00412CB8  AND EAX,DWORD PTR SS:[EBP-8]
00412CBB  MOV ECX,DWORD PTR SS:[EBP-38]
00412CBE  NOT ECX
00412CC0  AND ECX,DWORD PTR SS:[EBP-14]
00412CC3  OR EAX,ECX
00412CC5  MOV EDX,DWORD PTR SS:[EBP+C]
00412CC8  ADD EAX,DWORD PTR DS:[EDX+3C]
00412CCB  MOV ECX,DWORD PTR SS:[EBP-2C]
00412CCE  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412CD5  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl 7) or (d1 shr $19) + c1;
00412CD8  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412CDB  SHL EAX,7
00412CDE  MOV ECX,DWORD PTR SS:[EBP-2C]
00412CE1  SHR ECX,19
00412CE4  OR EAX,ECX
00412CE6  ADD EAX,DWORD PTR SS:[EBP-20]
00412CE9  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412CEC  MOV EAX,DWORD PTR SS:[EBP-8]            
00412CEF  SHL EAX,0A
00412CF2  MOV ECX,DWORD PTR SS:[EBP-8]
00412CF5  SHR ECX,16
00412CF8  OR EAX,ECX
00412CFA  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[3]) + c1 + $5A827999;
00412CFD  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412D00  AND EAX,DWORD PTR SS:[EBP-38]
00412D03  MOV ECX,DWORD PTR SS:[EBP-2C]
00412D06  NOT ECX
00412D08  AND ECX,DWORD PTR SS:[EBP-8]
00412D0B  OR EAX,ECX
00412D0D  MOV EDX,DWORD PTR SS:[EBP+C]
00412D10  ADD EAX,DWORD PTR DS:[EDX+C]
00412D13  MOV ECX,DWORD PTR SS:[EBP-20]
00412D16  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412D1D  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl $0F) or (c1 shr $11) + b1;
00412D20  MOV EAX,DWORD PTR SS:[EBP-20]            
00412D23  SHL EAX,0F
00412D26  MOV ECX,DWORD PTR SS:[EBP-20]
00412D29  SHR ECX,11
00412D2C  OR EAX,ECX
00412D2E  ADD EAX,DWORD PTR SS:[EBP-14]
00412D31  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00412D34  MOV EAX,DWORD PTR SS:[EBP-38]            
00412D37  SHL EAX,0A
00412D3A  MOV ECX,DWORD PTR SS:[EBP-38]
00412D3D  SHR ECX,16
00412D40  OR EAX,ECX
00412D42  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[5]) + b1 + $ 5A827999;
00412D45  MOV EAX,DWORD PTR SS:[EBP-20]            
00412D48  AND EAX,DWORD PTR SS:[EBP-2C]
00412D4B  MOV ECX,DWORD PTR SS:[EBP-20]
00412D4E  NOT ECX
00412D50  AND ECX,DWORD PTR SS:[EBP-38]
00412D53  OR EAX,ECX
00412D55  MOV EDX,DWORD PTR SS:[EBP+C]
00412D58  ADD EAX,DWORD PTR DS:[EDX+30]
00412D5B  MOV ECX,DWORD PTR SS:[EBP-14]
00412D5E  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412D65  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl 7) or (b1 shr $19) + a1;
00412D68  MOV EAX,DWORD PTR SS:[EBP-14]            
00412D6B  SHL EAX,7
00412D6E  MOV ECX,DWORD PTR SS:[EBP-14]
00412D71  SHR ECX,19
00412D74  OR EAX,ECX
00412D76  ADD EAX,DWORD PTR SS:[EBP-8]
00412D79  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00412D7C  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412D7F  SHL EAX,0A
00412D82  MOV ECX,DWORD PTR SS:[EBP-2C]
00412D85  SHR ECX,16
00412D88  OR EAX,ECX
00412D8A  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (((b1 and c1) or (not(b1) and d1)) + Name_64[0]) + a1 + $5A827999;
00412D8D  MOV EAX,DWORD PTR SS:[EBP-14]            
00412D90  AND EAX,DWORD PTR SS:[EBP-20]
00412D93  MOV ECX,DWORD PTR SS:[EBP-14]
00412D96  NOT ECX
00412D98  AND ECX,DWORD PTR SS:[EBP-2C]
00412D9B  OR EAX,ECX
00412D9D  MOV EDX,DWORD PTR SS:[EBP+C]
00412DA0  ADD EAX,DWORD PTR DS:[EDX]
00412DA2  MOV ECX,DWORD PTR SS:[EBP-8]
00412DA5  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412DAC  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl $0C) or (a1 shr $14) + e1;
00412DAF  MOV EAX,DWORD PTR SS:[EBP-8]            
00412DB2  SHL EAX,0C
00412DB5  MOV ECX,DWORD PTR SS:[EBP-8]
00412DB8  SHR ECX,14
00412DBB  OR EAX,ECX
00412DBD  ADD EAX,DWORD PTR SS:[EBP-38]
00412DC0  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
00412DC3  MOV EAX,DWORD PTR SS:[EBP-20]            
00412DC6  SHL EAX,0A
00412DC9  MOV ECX,DWORD PTR SS:[EBP-20]
00412DCC  SHR ECX,16
00412DCF  OR EAX,ECX
00412DD1  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[9]) + e1 + $5A827999;
00412DD4  MOV EAX,DWORD PTR SS:[EBP-8]            
00412DD7  AND EAX,DWORD PTR SS:[EBP-14]
00412DDA  MOV ECX,DWORD PTR SS:[EBP-8]
00412DDD  NOT ECX
00412DDF  AND ECX,DWORD PTR SS:[EBP-20]
00412DE2  OR EAX,ECX
00412DE4  MOV EDX,DWORD PTR SS:[EBP+C]
00412DE7  ADD EAX,DWORD PTR DS:[EDX+24]
00412DEA  MOV ECX,DWORD PTR SS:[EBP-38]
00412DED  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412DF4  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl $0F) or (e1 shr $11) + d1;
00412DF7  MOV EAX,DWORD PTR SS:[EBP-38]            
00412DFA  SHL EAX,0F
00412DFD  MOV ECX,DWORD PTR SS:[EBP-38]
00412E00  SHR ECX,11
00412E03  OR EAX,ECX
00412E05  ADD EAX,DWORD PTR SS:[EBP-2C]
00412E08  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00412E0B  MOV EAX,DWORD PTR SS:[EBP-14]            
00412E0E  SHL EAX,0A
00412E11  MOV ECX,DWORD PTR SS:[EBP-14]
00412E14  SHR ECX,16
00412E17  OR EAX,ECX
00412E19  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[5]) + d1 + $5A827999;
00412E1C  MOV EAX,DWORD PTR SS:[EBP-38]            
00412E1F  AND EAX,DWORD PTR SS:[EBP-8]
00412E22  MOV ECX,DWORD PTR SS:[EBP-38]
00412E25  NOT ECX
00412E27  AND ECX,DWORD PTR SS:[EBP-14]
00412E2A  OR EAX,ECX
00412E2C  MOV EDX,DWORD PTR SS:[EBP+C]
00412E2F  ADD EAX,DWORD PTR DS:[EDX+14]
00412E32  MOV ECX,DWORD PTR SS:[EBP-2C]
00412E35  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412E3C  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl 9) or (d1 shr $17) + c1;
00412E3F  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412E42  SHL EAX,9
00412E45  MOV ECX,DWORD PTR SS:[EBP-2C]
00412E48  SHR ECX,17
00412E4B  OR EAX,ECX
00412E4D  ADD EAX,DWORD PTR SS:[EBP-20]
00412E50  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412E53  MOV EAX,DWORD PTR SS:[EBP-8]            
00412E56  SHL EAX,0A
00412E59  MOV ECX,DWORD PTR SS:[EBP-8]
00412E5C  SHR ECX,16
00412E5F  OR EAX,ECX
00412E61  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[2]) + c1 + $5A827999;
00412E64  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412E67  AND EAX,DWORD PTR SS:[EBP-38]
00412E6A  MOV ECX,DWORD PTR SS:[EBP-2C]
00412E6D  NOT ECX
00412E6F  AND ECX,DWORD PTR SS:[EBP-8]
00412E72  OR EAX,ECX
00412E74  MOV EDX,DWORD PTR SS:[EBP+C]
00412E77  ADD EAX,DWORD PTR DS:[EDX+8]
00412E7A  MOV ECX,DWORD PTR SS:[EBP-20]
00412E7D  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412E84  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl $0B) or (c1 shr $15) + b1;
00412E87  MOV EAX,DWORD PTR SS:[EBP-20]            
00412E8A  SHL EAX,0B
00412E8D  MOV ECX,DWORD PTR SS:[EBP-20]
00412E90  SHR ECX,15
00412E93  OR EAX,ECX
00412E95  ADD EAX,DWORD PTR SS:[EBP-14]
00412E98  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00412E9B  MOV EAX,DWORD PTR SS:[EBP-38]            
00412E9E  SHL EAX,0A
00412EA1  MOV ECX,DWORD PTR SS:[EBP-38]
00412EA4  SHR ECX,16
00412EA7  OR EAX,ECX
00412EA9  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[14]) + b1 + $5A827999;
00412EAC  MOV EAX,DWORD PTR SS:[EBP-20]            
00412EAF  AND EAX,DWORD PTR SS:[EBP-2C]
00412EB2  MOV ECX,DWORD PTR SS:[EBP-20]
00412EB5  NOT ECX
00412EB7  AND ECX,DWORD PTR SS:[EBP-38]
00412EBA  OR EAX,ECX
00412EBC  MOV EDX,DWORD PTR SS:[EBP+C]
00412EBF  ADD EAX,DWORD PTR DS:[EDX+38]
00412EC2  MOV ECX,DWORD PTR SS:[EBP-14]
00412EC5  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412ECC  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl 7) or (b1 shr $19) + a1;
00412ECF  MOV EAX,DWORD PTR SS:[EBP-14]            
00412ED2  SHL EAX,7
00412ED5  MOV ECX,DWORD PTR SS:[EBP-14]
00412ED8  SHR ECX,19
00412EDB  OR EAX,ECX
00412EDD  ADD EAX,DWORD PTR SS:[EBP-8]
00412EE0  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00412EE3  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412EE6  SHL EAX,0A
00412EE9  MOV ECX,DWORD PTR SS:[EBP-2C]
00412EEC  SHR ECX,16
00412EEF  OR EAX,ECX
00412EF1  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (((b1 and c1) or (not(b1) and d1)) + Name_64[11]) + a1 + $5A827999;
00412EF4  MOV EAX,DWORD PTR SS:[EBP-14]            
00412EF7  AND EAX,DWORD PTR SS:[EBP-20]
00412EFA  MOV ECX,DWORD PTR SS:[EBP-14]
00412EFD  NOT ECX
00412EFF  AND ECX,DWORD PTR SS:[EBP-2C]
00412F02  OR EAX,ECX
00412F04  MOV EDX,DWORD PTR SS:[EBP+C]
00412F07  ADD EAX,DWORD PTR DS:[EDX+2C]
00412F0A  MOV ECX,DWORD PTR SS:[EBP-8]
00412F0D  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412F14  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl $0D) or (a1 shr $13) + e1;
00412F17  MOV EAX,DWORD PTR SS:[EBP-8]            
00412F1A  SHL EAX,0D
00412F1D  MOV ECX,DWORD PTR SS:[EBP-8]
00412F20  SHR ECX,13
00412F23  OR EAX,ECX
00412F25  ADD EAX,DWORD PTR SS:[EBP-38]
00412F28  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
00412F2B  MOV EAX,DWORD PTR SS:[EBP-20]            
00412F2E  SHL EAX,0A
00412F31  MOV ECX,DWORD PTR SS:[EBP-20]
00412F34  SHR ECX,16
00412F37  OR EAX,ECX
00412F39  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[8]) + e1 + $5A827999;
00412F3C  MOV EAX,DWORD PTR SS:[EBP-8]            
00412F3F  AND EAX,DWORD PTR SS:[EBP-14]
00412F42  MOV ECX,DWORD PTR SS:[EBP-8]
00412F45  NOT ECX
00412F47  AND ECX,DWORD PTR SS:[EBP-20]
00412F4A  OR EAX,ECX
00412F4C  MOV EDX,DWORD PTR SS:[EBP+C]
00412F4F  ADD EAX,DWORD PTR DS:[EDX+20]
00412F52  MOV ECX,DWORD PTR SS:[EBP-38]
00412F55  LEA EDX,DWORD PTR DS:[ECX+EAX+5A827999]
00412F5C  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl $0C) or (e1 shr $14) + d1;
00412F5F  MOV EAX,DWORD PTR SS:[EBP-38]            
00412F62  SHL EAX,0C
00412F65  MOV ECX,DWORD PTR SS:[EBP-38]
00412F68  SHR ECX,14
00412F6B  OR EAX,ECX
00412F6D  ADD EAX,DWORD PTR SS:[EBP-2C]
00412F70  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00412F73  MOV EAX,DWORD PTR SS:[EBP-14]            
00412F76  SHL EAX,0A
00412F79  MOV ECX,DWORD PTR SS:[EBP-14]
00412F7C  SHR ECX,16
00412F7F  OR EAX,ECX
00412F81  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((not(a1) or e1) xor b1 + Name_64[3]) + d1 + $6ED9EBA1;
00412F84  MOV EAX,DWORD PTR SS:[EBP-8]            
00412F87  NOT EAX
00412F89  OR EAX,DWORD PTR SS:[EBP-38]
00412F8C  XOR EAX,DWORD PTR SS:[EBP-14]
00412F8F  MOV ECX,DWORD PTR SS:[EBP+C]
00412F92  ADD EAX,DWORD PTR DS:[ECX+C]
00412F95  MOV EDX,DWORD PTR SS:[EBP-2C]
00412F98  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00412F9F  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl $0B) or (d1 shr $15) + c1;
00412FA2  MOV EAX,DWORD PTR SS:[EBP-2C]            
00412FA5  SHL EAX,0B
00412FA8  MOV ECX,DWORD PTR SS:[EBP-2C]
00412FAB  SHR ECX,15
00412FAE  OR EAX,ECX
00412FB0  ADD EAX,DWORD PTR SS:[EBP-20]
00412FB3  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00412FB6  MOV EAX,DWORD PTR SS:[EBP-8]            
00412FB9  SHL EAX,0A
00412FBC  MOV ECX,DWORD PTR SS:[EBP-8]
00412FBF  SHR ECX,16
00412FC2  OR EAX,ECX
00412FC4  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((not(e1) or d1) xor a1 + Name_64[10]) + c1 + $6ED9EBA1;
00412FC7  MOV EAX,DWORD PTR SS:[EBP-38]            
00412FCA  NOT EAX
00412FCC  OR EAX,DWORD PTR SS:[EBP-2C]
00412FCF  XOR EAX,DWORD PTR SS:[EBP-8]
00412FD2  MOV ECX,DWORD PTR SS:[EBP+C]
00412FD5  ADD EAX,DWORD PTR DS:[ECX+28]
00412FD8  MOV EDX,DWORD PTR SS:[EBP-20]
00412FDB  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00412FE2  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl $0D) or (c1 shr $13) + b1;
00412FE5  MOV EAX,DWORD PTR SS:[EBP-20]            
00412FE8  SHL EAX,0D
00412FEB  MOV ECX,DWORD PTR SS:[EBP-20]
00412FEE  SHR ECX,13
00412FF1  OR EAX,ECX
00412FF3  ADD EAX,DWORD PTR SS:[EBP-14]
00412FF6  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00412FF9  MOV EAX,DWORD PTR SS:[EBP-38]            
00412FFC  SHL EAX,0A
00412FFF  MOV ECX,DWORD PTR SS:[EBP-38]
00413002  SHR ECX,16
00413005  OR EAX,ECX
00413007  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((not(d1) or c1) xor e1 + Name_64[14]) + b1 + $6ED9EBA1;
0041300A  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041300D  NOT EAX
0041300F  OR EAX,DWORD PTR SS:[EBP-20]
00413012  XOR EAX,DWORD PTR SS:[EBP-38]
00413015  MOV ECX,DWORD PTR SS:[EBP+C]
00413018  ADD EAX,DWORD PTR DS:[ECX+38]
0041301B  MOV EDX,DWORD PTR SS:[EBP-14]
0041301E  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413025  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 6) or (b1 shr $1A) + a1;
00413028  MOV EAX,DWORD PTR SS:[EBP-14]            
0041302B  SHL EAX,6
0041302E  MOV ECX,DWORD PTR SS:[EBP-14]
00413031  SHR ECX,1A
00413034  OR EAX,ECX
00413036  ADD EAX,DWORD PTR SS:[EBP-8]
00413039  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
0041303C  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041303F  SHL EAX,0A
00413042  MOV ECX,DWORD PTR SS:[EBP-2C]
00413045  SHR ECX,16
00413048  OR EAX,ECX
0041304A  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((not(c1) or b1) xor d1 + Name_64[4]) + a1 + $6ED9EBA1;
0041304D  MOV EAX,DWORD PTR SS:[EBP-20]            
00413050  NOT EAX
00413052  OR EAX,DWORD PTR SS:[EBP-14]
00413055  XOR EAX,DWORD PTR SS:[EBP-2C]
00413058  MOV ECX,DWORD PTR SS:[EBP+C]
0041305B  ADD EAX,DWORD PTR DS:[ECX+10]
0041305E  MOV EDX,DWORD PTR SS:[EBP-8]
00413061  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413068  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl 7) or (a1 shr $19) + e1;
0041306B  MOV EAX,DWORD PTR SS:[EBP-8]            
0041306E  SHL EAX,7
00413071  MOV ECX,DWORD PTR SS:[EBP-8]
00413074  SHR ECX,19
00413077  OR EAX,ECX
00413079  ADD EAX,DWORD PTR SS:[EBP-38]
0041307C  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
0041307F  MOV EAX,DWORD PTR SS:[EBP-20]            
00413082  SHL EAX,0A
00413085  MOV ECX,DWORD PTR SS:[EBP-20]
00413088  SHR ECX,16
0041308B  OR EAX,ECX
0041308D  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((not(b1) or a1) xor c1 + Name_64[9]) + e1 + $6ED9EBA1;
00413090  MOV EAX,DWORD PTR SS:[EBP-14]            
00413093  NOT EAX
00413095  OR EAX,DWORD PTR SS:[EBP-8]
00413098  XOR EAX,DWORD PTR SS:[EBP-20]
0041309B  MOV ECX,DWORD PTR SS:[EBP+C]
0041309E  ADD EAX,DWORD PTR DS:[ECX+24]
004130A1  MOV EDX,DWORD PTR SS:[EBP-38]
004130A4  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
004130AB  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl $0E) or (e1 shr $12) + d1;
004130AE  MOV EAX,DWORD PTR SS:[EBP-38]            
004130B1  SHL EAX,0E
004130B4  MOV ECX,DWORD PTR SS:[EBP-38]
004130B7  SHR ECX,12
004130BA  OR EAX,ECX
004130BC  ADD EAX,DWORD PTR SS:[EBP-2C]
004130BF  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
004130C2  MOV EAX,DWORD PTR SS:[EBP-14]            
004130C5  SHL EAX,0A
004130C8  MOV ECX,DWORD PTR SS:[EBP-14]
004130CB  SHR ECX,16
004130CE  OR EAX,ECX
004130D0  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((not(a1) or e1) xor b1 + Name_64[15]) + d1 + $6ED9EBA1;
004130D3  MOV EAX,DWORD PTR SS:[EBP-8]            
004130D6  NOT EAX
004130D8  OR EAX,DWORD PTR SS:[EBP-38]
004130DB  XOR EAX,DWORD PTR SS:[EBP-14]
004130DE  MOV ECX,DWORD PTR SS:[EBP+C]
004130E1  ADD EAX,DWORD PTR DS:[ECX+3C]
004130E4  MOV EDX,DWORD PTR SS:[EBP-2C]
004130E7  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
004130EE  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 9) or (d1 shr $17) + c1;
004130F1  MOV EAX,DWORD PTR SS:[EBP-2C]            
004130F4  SHL EAX,9
004130F7  MOV ECX,DWORD PTR SS:[EBP-2C]
004130FA  SHR ECX,17
004130FD  OR EAX,ECX
004130FF  ADD EAX,DWORD PTR SS:[EBP-20]
00413102  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00413105  MOV EAX,DWORD PTR SS:[EBP-8]            
00413108  SHL EAX,0A
0041310B  MOV ECX,DWORD PTR SS:[EBP-8]
0041310E  SHR ECX,16
00413111  OR EAX,ECX
00413113  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((not(e1) or d1) xor a1 + Name_64[8]) + c1 + $6ED9EBA1;
00413116  MOV EAX,DWORD PTR SS:[EBP-38]            
00413119  NOT EAX
0041311B  OR EAX,DWORD PTR SS:[EBP-2C]
0041311E  XOR EAX,DWORD PTR SS:[EBP-8]
00413121  MOV ECX,DWORD PTR SS:[EBP+C]
00413124  ADD EAX,DWORD PTR DS:[ECX+20]
00413127  MOV EDX,DWORD PTR SS:[EBP-20]
0041312A  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413131  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl $0D) or (c1 shr $13) + b1;
00413134  MOV EAX,DWORD PTR SS:[EBP-20]            
00413137  SHL EAX,0D
0041313A  MOV ECX,DWORD PTR SS:[EBP-20]
0041313D  SHR ECX,13
00413140  OR EAX,ECX
00413142  ADD EAX,DWORD PTR SS:[EBP-14]
00413145  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00413148  MOV EAX,DWORD PTR SS:[EBP-38]            
0041314B  SHL EAX,0A
0041314E  MOV ECX,DWORD PTR SS:[EBP-38]
00413151  SHR ECX,16
00413154  OR EAX,ECX
00413156  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((not(d1) or c1) xor e1 + Name_64[1]) + b1 + $6ED9EBA1;
00413159  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041315C  NOT EAX
0041315E  OR EAX,DWORD PTR SS:[EBP-20]
00413161  XOR EAX,DWORD PTR SS:[EBP-38]
00413164  MOV ECX,DWORD PTR SS:[EBP+C]
00413167  ADD EAX,DWORD PTR DS:[ECX+4]
0041316A  MOV EDX,DWORD PTR SS:[EBP-14]
0041316D  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413174  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl $0F) or (shr $11) + a1;
00413177  MOV EAX,DWORD PTR SS:[EBP-14]            
0041317A  SHL EAX,0F
0041317D  MOV ECX,DWORD PTR SS:[EBP-14]
00413180  SHR ECX,11
00413183  OR EAX,ECX
00413185  ADD EAX,DWORD PTR SS:[EBP-8]
00413188  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
0041318B  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041318E  SHL EAX,0A
00413191  MOV ECX,DWORD PTR SS:[EBP-2C]
00413194  SHR ECX,16
00413197  OR EAX,ECX
00413199  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((not(c1) or b1) xor d1 + Name_64[2]) + a1 + $6ED9EBA1;
0041319C  MOV EAX,DWORD PTR SS:[EBP-20]            
0041319F  NOT EAX
004131A1  OR EAX,DWORD PTR SS:[EBP-14]
004131A4  XOR EAX,DWORD PTR SS:[EBP-2C]
004131A7  MOV ECX,DWORD PTR SS:[EBP+C]
004131AA  ADD EAX,DWORD PTR DS:[ECX+8]
004131AD  MOV EDX,DWORD PTR SS:[EBP-8]
004131B0  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
004131B7  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $0E) or (a1 shr $12) + e1;
004131BA  MOV EAX,DWORD PTR SS:[EBP-8]            
004131BD  SHL EAX,0E
004131C0  MOV ECX,DWORD PTR SS:[EBP-8]
004131C3  SHR ECX,12
004131C6  OR EAX,ECX
004131C8  ADD EAX,DWORD PTR SS:[EBP-38]
004131CB  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
004131CE  MOV EAX,DWORD PTR SS:[EBP-20]            
004131D1  SHL EAX,0A
004131D4  MOV ECX,DWORD PTR SS:[EBP-20]
004131D7  SHR ECX,16
004131DA  OR EAX,ECX
004131DC  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((not(b1) or a1) xor c1 + Name_64[7]) + e1 + $6ED9EBA1;
004131DF  MOV EAX,DWORD PTR SS:[EBP-14]            
004131E2  NOT EAX
004131E4  OR EAX,DWORD PTR SS:[EBP-8]
004131E7  XOR EAX,DWORD PTR SS:[EBP-20]
004131EA  MOV ECX,DWORD PTR SS:[EBP+C]
004131ED  ADD EAX,DWORD PTR DS:[ECX+1C]
004131F0  MOV EDX,DWORD PTR SS:[EBP-38]
004131F3  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
004131FA  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl 8) or (e1 shr $18) + d1;
004131FD  MOV EAX,DWORD PTR SS:[EBP-38]            
00413200  SHL EAX,8
00413203  MOV ECX,DWORD PTR SS:[EBP-38]
00413206  SHR ECX,18
00413209  OR EAX,ECX
0041320B  ADD EAX,DWORD PTR SS:[EBP-2C]
0041320E  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00413211  MOV EAX,DWORD PTR SS:[EBP-14]            
00413214  SHL EAX,0A
00413217  MOV ECX,DWORD PTR SS:[EBP-14]
0041321A  SHR ECX,16
0041321D  OR EAX,ECX
0041321F  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((not(a1) or e1) xor b1 + Name_64[0]) + d1 + $6ED9EBA1;
00413222  MOV EAX,DWORD PTR SS:[EBP-8]            
00413225  NOT EAX
00413227  OR EAX,DWORD PTR SS:[EBP-38]
0041322A  XOR EAX,DWORD PTR SS:[EBP-14]
0041322D  MOV ECX,DWORD PTR SS:[EBP+C]
00413230  ADD EAX,DWORD PTR DS:[ECX]
00413232  MOV EDX,DWORD PTR SS:[EBP-2C]
00413235  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
0041323C  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl $0D) or (d1 shr $13) + c1;
0041323F  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413242  SHL EAX,0D
00413245  MOV ECX,DWORD PTR SS:[EBP-2C]
00413248  SHR ECX,13
0041324B  OR EAX,ECX
0041324D  ADD EAX,DWORD PTR SS:[EBP-20]
00413250  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00413253  MOV EAX,DWORD PTR SS:[EBP-8]            
00413256  SHL EAX,0A
00413259  MOV ECX,DWORD PTR SS:[EBP-8]
0041325C  SHR ECX,16
0041325F  OR EAX,ECX
00413261  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((not(e1) or d1) xor a1 + Name_64[6]) + c1 + $6ED9EBA1;
00413264  MOV EAX,DWORD PTR SS:[EBP-38]            
00413267  NOT EAX
00413269  OR EAX,DWORD PTR SS:[EBP-2C]
0041326C  XOR EAX,DWORD PTR SS:[EBP-8]
0041326F  MOV ECX,DWORD PTR SS:[EBP+C]
00413272  ADD EAX,DWORD PTR DS:[ECX+18]
00413275  MOV EDX,DWORD PTR SS:[EBP-20]
00413278  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
0041327F  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl 6) or (c1 shr $1A) + b1;
00413282  MOV EAX,DWORD PTR SS:[EBP-20]            
00413285  SHL EAX,6
00413288  MOV ECX,DWORD PTR SS:[EBP-20]
0041328B  SHR ECX,1A
0041328E  OR EAX,ECX
00413290  ADD EAX,DWORD PTR SS:[EBP-14]
00413293  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00413296  MOV EAX,DWORD PTR SS:[EBP-38]            
00413299  SHL EAX,0A
0041329C  MOV ECX,DWORD PTR SS:[EBP-38]
0041329F  SHR ECX,16
004132A2  OR EAX,ECX
004132A4  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((not(d1) or c1) xor e1 + Name_64[13]) + b1 + $6ED9EBA1;
004132A7  MOV EAX,DWORD PTR SS:[EBP-2C]            
004132AA  NOT EAX
004132AC  OR EAX,DWORD PTR SS:[EBP-20]
004132AF  XOR EAX,DWORD PTR SS:[EBP-38]
004132B2  MOV ECX,DWORD PTR SS:[EBP+C]
004132B5  ADD EAX,DWORD PTR DS:[ECX+34]
004132B8  MOV EDX,DWORD PTR SS:[EBP-14]
004132BB  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
004132C2  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 5) or (b1 shr $1B) + a1;
004132C5  MOV EAX,DWORD PTR SS:[EBP-14]            
004132C8  SHL EAX,5
004132CB  MOV ECX,DWORD PTR SS:[EBP-14]
004132CE  SHR ECX,1B
004132D1  OR EAX,ECX
004132D3  ADD EAX,DWORD PTR SS:[EBP-8]
004132D6  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
004132D9  MOV EAX,DWORD PTR SS:[EBP-2C]            
004132DC  SHL EAX,0A
004132DF  MOV ECX,DWORD PTR SS:[EBP-2C]
004132E2  SHR ECX,16
004132E5  OR EAX,ECX
004132E7  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((not(c1) or b1) xor d1 + Name_64[11]) + a1 + $6ED9EBA1;
004132EA  MOV EAX,DWORD PTR SS:[EBP-20]            
004132ED  NOT EAX
004132EF  OR EAX,DWORD PTR SS:[EBP-14]
004132F2  XOR EAX,DWORD PTR SS:[EBP-2C]
004132F5  MOV ECX,DWORD PTR SS:[EBP+C]
004132F8  ADD EAX,DWORD PTR DS:[ECX+2C]
004132FB  MOV EDX,DWORD PTR SS:[EBP-8]
004132FE  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413305  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $0C) or (a1 shr $14) + e1;
00413308  MOV EAX,DWORD PTR SS:[EBP-8]            
0041330B  SHL EAX,0C
0041330E  MOV ECX,DWORD PTR SS:[EBP-8]
00413311  SHR ECX,14
00413314  OR EAX,ECX
00413316  ADD EAX,DWORD PTR SS:[EBP-38]
00413319  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (shr $16);
0041331C  MOV EAX,DWORD PTR SS:[EBP-20]            
0041331F  SHL EAX,0A
00413322  MOV ECX,DWORD PTR SS:[EBP-20]
00413325  SHR ECX,16
00413328  OR EAX,ECX
0041332A  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((not(b1) or a1) xor c1 + Name_64[5]) + e1 + $6ED9EBA1;
0041332D  MOV EAX,DWORD PTR SS:[EBP-14]            
00413330  NOT EAX
00413332  OR EAX,DWORD PTR SS:[EBP-8]
00413335  XOR EAX,DWORD PTR SS:[EBP-20]
00413338  MOV ECX,DWORD PTR SS:[EBP+C]
0041333B  ADD EAX,DWORD PTR DS:[ECX+14]
0041333E  MOV EDX,DWORD PTR SS:[EBP-38]
00413341  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
00413348  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl 7) or (e1 shr $19) + d1;
0041334B  MOV EAX,DWORD PTR SS:[EBP-38]            
0041334E  SHL EAX,7
00413351  MOV ECX,DWORD PTR SS:[EBP-38]
00413354  SHR ECX,19
00413357  OR EAX,ECX
00413359  ADD EAX,DWORD PTR SS:[EBP-2C]
0041335C  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
0041335F  MOV EAX,DWORD PTR SS:[EBP-14]            
00413362  SHL EAX,0A
00413365  MOV ECX,DWORD PTR SS:[EBP-14]
00413368  SHR ECX,16
0041336B  OR EAX,ECX
0041336D  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((not(a1) or e1) xor b1 + Name_64[12]) + d1 + $6ED9EBA1;
00413370  MOV EAX,DWORD PTR SS:[EBP-8]            
00413373  NOT EAX
00413375  OR EAX,DWORD PTR SS:[EBP-38]
00413378  XOR EAX,DWORD PTR SS:[EBP-14]
0041337B  MOV ECX,DWORD PTR SS:[EBP+C]
0041337E  ADD EAX,DWORD PTR DS:[ECX+30]
00413381  MOV EDX,DWORD PTR SS:[EBP-2C]
00413384  LEA EAX,DWORD PTR DS:[EDX+EAX+6ED9EBA1]
0041338B  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 5) or (d1 shr $1B) + c1;
0041338E  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413391  SHL EAX,5
00413394  MOV ECX,DWORD PTR SS:[EBP-2C]
00413397  SHR ECX,1B
0041339A  OR EAX,ECX
0041339C  ADD EAX,DWORD PTR SS:[EBP-20]
0041339F  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
004133A2  MOV EAX,DWORD PTR SS:[EBP-8]            
004133A5  SHL EAX,0A
004133A8  MOV ECX,DWORD PTR SS:[EBP-8]
004133AB  SHR ECX,16
004133AE  OR EAX,ECX
004133B0  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[1] + c1 + $8F1BBCDC;
004133B3  MOV EAX,DWORD PTR SS:[EBP-2C]            
004133B6  AND EAX,DWORD PTR SS:[EBP-8]
004133B9  MOV ECX,DWORD PTR SS:[EBP-8]
004133BC  NOT ECX
004133BE  AND ECX,DWORD PTR SS:[EBP-38]
004133C1  OR EAX,ECX
004133C3  MOV EDX,DWORD PTR SS:[EBP+C]
004133C6  ADD EAX,DWORD PTR DS:[EDX+4]
004133C9  MOV ECX,DWORD PTR SS:[EBP-20]
004133CC  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004133D3  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl $0B) or (c1 shr $15) + b1;
004133D6  MOV EAX,DWORD PTR SS:[EBP-20]            
004133D9  SHL EAX,0B
004133DC  MOV ECX,DWORD PTR SS:[EBP-20]
004133DF  SHR ECX,15
004133E2  OR EAX,ECX
004133E4  ADD EAX,DWORD PTR SS:[EBP-14]
004133E7  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
004133EA  MOV EAX,DWORD PTR SS:[EBP-38]            
004133ED  SHL EAX,0A
004133F0  MOV ECX,DWORD PTR SS:[EBP-38]
004133F3  SHR ECX,16
004133F6  OR EAX,ECX
004133F8  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[9] + b1 + $8F1BBCDC;
004133FB  MOV EAX,DWORD PTR SS:[EBP-20]            
004133FE  AND EAX,DWORD PTR SS:[EBP-38]
00413401  MOV ECX,DWORD PTR SS:[EBP-38]
00413404  NOT ECX
00413406  AND ECX,DWORD PTR SS:[EBP-2C]
00413409  OR EAX,ECX
0041340B  MOV EDX,DWORD PTR SS:[EBP+C]
0041340E  ADD EAX,DWORD PTR DS:[EDX+24]
00413411  MOV ECX,DWORD PTR SS:[EBP-14]
00413414  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
0041341B  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl $0C) or (b1 shr $14) + a1;
0041341E  MOV EAX,DWORD PTR SS:[EBP-14]            
00413421  SHL EAX,0C
00413424  MOV ECX,DWORD PTR SS:[EBP-14]
00413427  SHR ECX,14
0041342A  OR EAX,ECX
0041342C  ADD EAX,DWORD PTR SS:[EBP-8]
0041342F  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00413432  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413435  SHL EAX,0A
00413438  MOV ECX,DWORD PTR SS:[EBP-2C]
0041343B  SHR ECX,16
0041343E  OR EAX,ECX
00413440  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[11] + a1 + $8F1BBCDC;
00413443  MOV EAX,DWORD PTR SS:[EBP-14]            
00413446  AND EAX,DWORD PTR SS:[EBP-2C]
00413449  MOV ECX,DWORD PTR SS:[EBP-2C]
0041344C  NOT ECX
0041344E  AND ECX,DWORD PTR SS:[EBP-20]
00413451  OR EAX,ECX
00413453  MOV EDX,DWORD PTR SS:[EBP+C]
00413456  ADD EAX,DWORD PTR DS:[EDX+2C]
00413459  MOV ECX,DWORD PTR SS:[EBP-8]
0041345C  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
00413463  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl $0E) or (a1 shr $12) + e1;
00413466  MOV EAX,DWORD PTR SS:[EBP-8]            
00413469  SHL EAX,0E
0041346C  MOV ECX,DWORD PTR SS:[EBP-8]
0041346F  SHR ECX,12
00413472  OR EAX,ECX
00413474  ADD EAX,DWORD PTR SS:[EBP-38]
00413477  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
0041347A  MOV EAX,DWORD PTR SS:[EBP-20]            
0041347D  SHL EAX,0A
00413480  MOV ECX,DWORD PTR SS:[EBP-20]
00413483  SHR ECX,16
00413486  OR EAX,ECX
00413488  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((a1 and c1) or (not(c1) and b1) + Name_64[10] + e1 + $8F1BBCDC;
0041348B  MOV EAX,DWORD PTR SS:[EBP-8]            
0041348E  AND EAX,DWORD PTR SS:[EBP-20]
00413491  MOV ECX,DWORD PTR SS:[EBP-20]
00413494  NOT ECX
00413496  AND ECX,DWORD PTR SS:[EBP-14]
00413499  OR EAX,ECX
0041349B  MOV EDX,DWORD PTR SS:[EBP+C]
0041349E  ADD EAX,DWORD PTR DS:[EDX+28]
004134A1  MOV ECX,DWORD PTR SS:[EBP-38]
004134A4  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004134AB  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl $0F) or (e1 shr $11) + d1;
004134AE  MOV EAX,DWORD PTR SS:[EBP-38]            
004134B1  SHL EAX,0F
004134B4  MOV ECX,DWORD PTR SS:[EBP-38]
004134B7  SHR ECX,11
004134BA  OR EAX,ECX
004134BC  ADD EAX,DWORD PTR SS:[EBP-2C]
004134BF  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
004134C2  MOV EAX,DWORD PTR SS:[EBP-14]            
004134C5  SHL EAX,0A
004134C8  MOV ECX,DWORD PTR SS:[EBP-14]
004134CB  SHR ECX,16
004134CE  OR EAX,ECX
004134D0  MOV DWORD PTR SS:[EBP-14],EAX

//d1 :=((e1 and b1) or (not(b1) and a1)) + Name_64[0] + d1 + $8F1BBCDC;
004134D3  MOV EAX,DWORD PTR SS:[EBP-38]            
004134D6  AND EAX,DWORD PTR SS:[EBP-14]
004134D9  MOV ECX,DWORD PTR SS:[EBP-14]
004134DC  NOT ECX
004134DE  AND ECX,DWORD PTR SS:[EBP-8]
004134E1  OR EAX,ECX
004134E3  MOV EDX,DWORD PTR SS:[EBP+C]
004134E6  ADD EAX,DWORD PTR DS:[EDX]
004134E8  MOV ECX,DWORD PTR SS:[EBP-2C]
004134EB  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004134F2  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl $0E) or (d1 shr $12) + c1;
004134F5  MOV EAX,DWORD PTR SS:[EBP-2C]            
004134F8  SHL EAX,0E
004134FB  MOV ECX,DWORD PTR SS:[EBP-2C]
004134FE  SHR ECX,12
00413501  OR EAX,ECX
00413503  ADD EAX,DWORD PTR SS:[EBP-20]
00413506  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00413509  MOV EAX,DWORD PTR SS:[EBP-8]            
0041350C  SHL EAX,0A
0041350F  MOV ECX,DWORD PTR SS:[EBP-8]
00413512  SHR ECX,16
00413515  OR EAX,ECX
00413517  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[8] + c1 + $8F1BBCDC;
0041351A  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041351D  AND EAX,DWORD PTR SS:[EBP-8]
00413520  MOV ECX,DWORD PTR SS:[EBP-8]
00413523  NOT ECX
00413525  AND ECX,DWORD PTR SS:[EBP-38]
00413528  OR EAX,ECX
0041352A  MOV EDX,DWORD PTR SS:[EBP+C]
0041352D  ADD EAX,DWORD PTR DS:[EDX+20]
00413530  MOV ECX,DWORD PTR SS:[EBP-20]
00413533  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
0041353A  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl $0F) or (c1 shr $11) + b1;
0041353D  MOV EAX,DWORD PTR SS:[EBP-20]            
00413540  SHL EAX,0F
00413543  MOV ECX,DWORD PTR SS:[EBP-20]
00413546  SHR ECX,11
00413549  OR EAX,ECX
0041354B  ADD EAX,DWORD PTR SS:[EBP-14]
0041354E  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00413551  MOV EAX,DWORD PTR SS:[EBP-38]            
00413554  SHL EAX,0A
00413557  MOV ECX,DWORD PTR SS:[EBP-38]
0041355A  SHR ECX,16
0041355D  OR EAX,ECX
0041355F  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[12] + b1 + $8F1BBCDC;
00413562  MOV EAX,DWORD PTR SS:[EBP-20]            
00413565  AND EAX,DWORD PTR SS:[EBP-38]
00413568  MOV ECX,DWORD PTR SS:[EBP-38]
0041356B  NOT ECX
0041356D  AND ECX,DWORD PTR SS:[EBP-2C]
00413570  OR EAX,ECX
00413572  MOV EDX,DWORD PTR SS:[EBP+C]
00413575  ADD EAX,DWORD PTR DS:[EDX+30]
00413578  MOV ECX,DWORD PTR SS:[EBP-14]
0041357B  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
00413582  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl 9) or (b1 shr $17) + a1;
00413585  MOV EAX,DWORD PTR SS:[EBP-14]            
00413588  SHL EAX,9
0041358B  MOV ECX,DWORD PTR SS:[EBP-14]
0041358E  SHR ECX,17
00413591  OR EAX,ECX
00413593  ADD EAX,DWORD PTR SS:[EBP-8]
00413596  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00413599  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041359C  SHL EAX,0A
0041359F  MOV ECX,DWORD PTR SS:[EBP-2C]
004135A2  SHR ECX,16
004135A5  OR EAX,ECX
004135A7  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[4] + a1 + $8F1BBCDC;
004135AA  MOV EAX,DWORD PTR SS:[EBP-14]            
004135AD  AND EAX,DWORD PTR SS:[EBP-2C]
004135B0  MOV ECX,DWORD PTR SS:[EBP-2C]
004135B3  NOT ECX
004135B5  AND ECX,DWORD PTR SS:[EBP-20]
004135B8  OR EAX,ECX
004135BA  MOV EDX,DWORD PTR SS:[EBP+C]
004135BD  ADD EAX,DWORD PTR DS:[EDX+10]
004135C0  MOV ECX,DWORD PTR SS:[EBP-8]
004135C3  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004135CA  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl 8) or (a1 shr $18) + e1;
004135CD  MOV EAX,DWORD PTR SS:[EBP-8]            
004135D0  SHL EAX,8
004135D3  MOV ECX,DWORD PTR SS:[EBP-8]
004135D6  SHR ECX,18
004135D9  OR EAX,ECX
004135DB  ADD EAX,DWORD PTR SS:[EBP-38]
004135DE  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
004135E1  MOV EAX,DWORD PTR SS:[EBP-20]            
004135E4  SHL EAX,0A
004135E7  MOV ECX,DWORD PTR SS:[EBP-20]
004135EA  SHR ECX,16
004135ED  OR EAX,ECX
004135EF  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((a1 and c1) or (not(c1) and b1)) + Name_64[13] + e1 + $8F1BBCDC;
004135F2  MOV EAX,DWORD PTR SS:[EBP-8]            
004135F5  AND EAX,DWORD PTR SS:[EBP-20]
004135F8  MOV ECX,DWORD PTR SS:[EBP-20]
004135FB  NOT ECX
004135FD  AND ECX,DWORD PTR SS:[EBP-14]
00413600  OR EAX,ECX
00413602  MOV EDX,DWORD PTR SS:[EBP+C]
00413605  ADD EAX,DWORD PTR DS:[EDX+34]
00413608  MOV ECX,DWORD PTR SS:[EBP-38]
0041360B  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
00413612  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl 9) or (e1 shr $17) + d1;
00413615  MOV EAX,DWORD PTR SS:[EBP-38]            
00413618  SHL EAX,9
0041361B  MOV ECX,DWORD PTR SS:[EBP-38]
0041361E  SHR ECX,17
00413621  OR EAX,ECX
00413623  ADD EAX,DWORD PTR SS:[EBP-2C]
00413626  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00413629  MOV EAX,DWORD PTR SS:[EBP-14]            
0041362C  SHL EAX,0A
0041362F  MOV ECX,DWORD PTR SS:[EBP-14]
00413632  SHR ECX,16
00413635  OR EAX,ECX
00413637  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((e1 and b1) or (not(b1) and a1)) + Name_64[3] + d1 + $8F1BBCDC;
0041363A  MOV EAX,DWORD PTR SS:[EBP-38]            
0041363D  AND EAX,DWORD PTR SS:[EBP-14]
00413640  MOV ECX,DWORD PTR SS:[EBP-14]
00413643  NOT ECX
00413645  AND ECX,DWORD PTR SS:[EBP-8]
00413648  OR EAX,ECX
0041364A  MOV EDX,DWORD PTR SS:[EBP+C]
0041364D  ADD EAX,DWORD PTR DS:[EDX+C]
00413650  MOV ECX,DWORD PTR SS:[EBP-2C]
00413653  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
0041365A  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl $0E) or (d1 shr $12) + c1;
0041365D  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413660  SHL EAX,0E
00413663  MOV ECX,DWORD PTR SS:[EBP-2C]
00413666  SHR ECX,12
00413669  OR EAX,ECX
0041366B  ADD EAX,DWORD PTR SS:[EBP-20]
0041366E  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
00413671  MOV EAX,DWORD PTR SS:[EBP-8]            
00413674  SHL EAX,0A
00413677  MOV ECX,DWORD PTR SS:[EBP-8]
0041367A  SHR ECX,16
0041367D  OR EAX,ECX
0041367F  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[7] + c1 + $8F1BBCDC;
00413682  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413685  AND EAX,DWORD PTR SS:[EBP-8]
00413688  MOV ECX,DWORD PTR SS:[EBP-8]
0041368B  NOT ECX
0041368D  AND ECX,DWORD PTR SS:[EBP-38]
00413690  OR EAX,ECX
00413692  MOV EDX,DWORD PTR SS:[EBP+C]
00413695  ADD EAX,DWORD PTR DS:[EDX+1C]
00413698  MOV ECX,DWORD PTR SS:[EBP-20]
0041369B  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004136A2  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl 5) or (c1 shr $1B) + b1;
004136A5  MOV EAX,DWORD PTR SS:[EBP-20]            
004136A8  SHL EAX,5
004136AB  MOV ECX,DWORD PTR SS:[EBP-20]
004136AE  SHR ECX,1B
004136B1  OR EAX,ECX
004136B3  ADD EAX,DWORD PTR SS:[EBP-14]
004136B6  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
004136B9  MOV EAX,DWORD PTR SS:[EBP-38]            
004136BC  SHL EAX,0A
004136BF  MOV ECX,DWORD PTR SS:[EBP-38]
004136C2  SHR ECX,16
004136C5  OR EAX,ECX
004136C7  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[15] + b1 + $8F1BBCDC;
004136CA  MOV EAX,DWORD PTR SS:[EBP-20]            
004136CD  AND EAX,DWORD PTR SS:[EBP-38]
004136D0  MOV ECX,DWORD PTR SS:[EBP-38]
004136D3  NOT ECX
004136D5  AND ECX,DWORD PTR SS:[EBP-2C]
004136D8  OR EAX,ECX
004136DA  MOV EDX,DWORD PTR SS:[EBP+C]
004136DD  ADD EAX,DWORD PTR DS:[EDX+3C]
004136E0  MOV ECX,DWORD PTR SS:[EBP-14]
004136E3  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004136EA  MOV DWORD PTR SS:[EBP-14],EDX

//b1 := (b1 shl 6) or (b1 shr $1A) + a1;
004136ED  MOV EAX,DWORD PTR SS:[EBP-14]            
004136F0  SHL EAX,6
004136F3  MOV ECX,DWORD PTR SS:[EBP-14]
004136F6  SHR ECX,1A
004136F9  OR EAX,ECX
004136FB  ADD EAX,DWORD PTR SS:[EBP-8]
004136FE  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00413701  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413704  SHL EAX,0A
00413707  MOV ECX,DWORD PTR SS:[EBP-2C]
0041370A  SHR ECX,16
0041370D  OR EAX,ECX
0041370F  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[14] + a1 + $8F1BBCDC;
00413712  MOV EAX,DWORD PTR SS:[EBP-14]            
00413715  AND EAX,DWORD PTR SS:[EBP-2C]
00413718  MOV ECX,DWORD PTR SS:[EBP-2C]
0041371B  NOT ECX
0041371D  AND ECX,DWORD PTR SS:[EBP-20]
00413720  OR EAX,ECX
00413722  MOV EDX,DWORD PTR SS:[EBP+C]
00413725  ADD EAX,DWORD PTR DS:[EDX+38]
00413728  MOV ECX,DWORD PTR SS:[EBP-8]
0041372B  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
00413732  MOV DWORD PTR SS:[EBP-8],EDX

//a1 := (a1 shl 8) or (a1 shr $18) + e1;
00413735  MOV EAX,DWORD PTR SS:[EBP-8]            
00413738  SHL EAX,8
0041373B  MOV ECX,DWORD PTR SS:[EBP-8]
0041373E  SHR ECX,18
00413741  OR EAX,ECX
00413743  ADD EAX,DWORD PTR SS:[EBP-38]
00413746  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
00413749  MOV EAX,DWORD PTR SS:[EBP-20]            
0041374C  SHL EAX,0A
0041374F  MOV ECX,DWORD PTR SS:[EBP-20]
00413752  SHR ECX,16
00413755  OR EAX,ECX
00413757  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := ((a1 and c1) or (not(c1) and b1)) + Name_64[5] + e1 + $8F1BBCDC;
0041375A  MOV EAX,DWORD PTR SS:[EBP-8]            
0041375D  AND EAX,DWORD PTR SS:[EBP-20]
00413760  MOV ECX,DWORD PTR SS:[EBP-20]
00413763  NOT ECX
00413765  AND ECX,DWORD PTR SS:[EBP-14]
00413768  OR EAX,ECX
0041376A  MOV EDX,DWORD PTR SS:[EBP+C]
0041376D  ADD EAX,DWORD PTR DS:[EDX+14]
00413770  MOV ECX,DWORD PTR SS:[EBP-38]
00413773  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
0041377A  MOV DWORD PTR SS:[EBP-38],EDX

//e1 := (e1 shl 6) or (e1 shr $1A) + d1;
0041377D  MOV EAX,DWORD PTR SS:[EBP-38]            
00413780  SHL EAX,6
00413783  MOV ECX,DWORD PTR SS:[EBP-38]
00413786  SHR ECX,1A
00413789  OR EAX,ECX
0041378B  ADD EAX,DWORD PTR SS:[EBP-2C]
0041378E  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
00413791  MOV EAX,DWORD PTR SS:[EBP-14]            
00413794  SHL EAX,0A
00413797  MOV ECX,DWORD PTR SS:[EBP-14]
0041379A  SHR ECX,16
0041379D  OR EAX,ECX
0041379F  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := ((e1 and b1) or (not(b1) and a1)) + Name_64[6] + d1 + $8F1BBCDC;
004137A2  MOV EAX,DWORD PTR SS:[EBP-38]            
004137A5  AND EAX,DWORD PTR SS:[EBP-14]
004137A8  MOV ECX,DWORD PTR SS:[EBP-14]
004137AB  NOT ECX
004137AD  AND ECX,DWORD PTR SS:[EBP-8]
004137B0  OR EAX,ECX
004137B2  MOV EDX,DWORD PTR SS:[EBP+C]
004137B5  ADD EAX,DWORD PTR DS:[EDX+18]
004137B8  MOV ECX,DWORD PTR SS:[EBP-2C]
004137BB  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
004137C2  MOV DWORD PTR SS:[EBP-2C],EDX

//d1 := (d1 shl 5) or (d1 shr $1B) + c1;
004137C5  MOV EAX,DWORD PTR SS:[EBP-2C]            
004137C8  SHL EAX,5
004137CB  MOV ECX,DWORD PTR SS:[EBP-2C]
004137CE  SHR ECX,1B
004137D1  OR EAX,ECX
004137D3  ADD EAX,DWORD PTR SS:[EBP-20]
004137D6  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $0A) or (a1 shr $16);
004137D9  MOV EAX,DWORD PTR SS:[EBP-8]            
004137DC  SHL EAX,0A
004137DF  MOV ECX,DWORD PTR SS:[EBP-8]
004137E2  SHR ECX,16
004137E5  OR EAX,ECX
004137E7  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[2] + c1 + $8F1BBCDC;
004137EA  MOV EAX,DWORD PTR SS:[EBP-2C]            
004137ED  AND EAX,DWORD PTR SS:[EBP-8]
004137F0  MOV ECX,DWORD PTR SS:[EBP-8]
004137F3  NOT ECX
004137F5  AND ECX,DWORD PTR SS:[EBP-38]
004137F8  OR EAX,ECX
004137FA  MOV EDX,DWORD PTR SS:[EBP+C]
004137FD  ADD EAX,DWORD PTR DS:[EDX+8]
00413800  MOV ECX,DWORD PTR SS:[EBP-20]
00413803  LEA EDX,DWORD PTR DS:[ECX+EAX+8F1BBCDC]
0041380A  MOV DWORD PTR SS:[EBP-20],EDX

//c1 := (c1 shl $0C) or (c1 shr $14) + b1;
0041380D  MOV EAX,DWORD PTR SS:[EBP-20]            
00413810  SHL EAX,0C
00413813  MOV ECX,DWORD PTR SS:[EBP-20]
00413816  SHR ECX,14
00413819  OR EAX,ECX
0041381B  ADD EAX,DWORD PTR SS:[EBP-14]
0041381E  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $0A) or (e1 shr $16);
00413821  MOV EAX,DWORD PTR SS:[EBP-38]            
00413824  SHL EAX,0A
00413827  MOV ECX,DWORD PTR SS:[EBP-38]
0041382A  SHR ECX,16
0041382D  OR EAX,ECX
0041382F  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (not(e1) or d1) xor c1 + Name_64[4] + b1 + $A953FD4E;
00413832  MOV EAX,DWORD PTR SS:[EBP-38]            
00413835  NOT EAX
00413837  OR EAX,DWORD PTR SS:[EBP-2C]
0041383A  XOR EAX,DWORD PTR SS:[EBP-20]
0041383D  MOV ECX,DWORD PTR SS:[EBP+C]
00413840  ADD EAX,DWORD PTR DS:[ECX+10]
00413843  MOV EDX,DWORD PTR SS:[EBP-14]
00413846  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
0041384D  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 9) or (b1 shr $17) + a1;
00413850  MOV EAX,DWORD PTR SS:[EBP-14]            
00413853  SHL EAX,9
00413856  MOV ECX,DWORD PTR SS:[EBP-14]
00413859  SHR ECX,17
0041385C  OR EAX,ECX
0041385E  ADD EAX,DWORD PTR SS:[EBP-8]
00413861  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $0A) or (d1 shr $16);
00413864  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413867  SHL EAX,0A
0041386A  MOV ECX,DWORD PTR SS:[EBP-2C]
0041386D  SHR ECX,16
00413870  OR EAX,ECX
00413872  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (not(d1) or c1) xor b1 + Name_64[0] + a1 + $A953FD4E;
00413875  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413878  NOT EAX
0041387A  OR EAX,DWORD PTR SS:[EBP-20]
0041387D  XOR EAX,DWORD PTR SS:[EBP-14]
00413880  MOV ECX,DWORD PTR SS:[EBP+C]
00413883  ADD EAX,DWORD PTR DS:[ECX]
00413885  MOV EDX,DWORD PTR SS:[EBP-8]
00413888  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
0041388F  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $0F) or (a1 shr $11) + e1;
00413892  MOV EAX,DWORD PTR SS:[EBP-8]            
00413895  SHL EAX,0F
00413898  MOV ECX,DWORD PTR SS:[EBP-8]
0041389B  SHR ECX,11
0041389E  OR EAX,ECX
004138A0  ADD EAX,DWORD PTR SS:[EBP-38]
004138A3  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $0A) or (c1 shr $16);
004138A6  MOV EAX,DWORD PTR SS:[EBP-20]            
004138A9  SHL EAX,0A
004138AC  MOV ECX,DWORD PTR SS:[EBP-20]
004138AF  SHR ECX,16
004138B2  OR EAX,ECX
004138B4  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (not(c1) or b1) xor a1 + Name_64[5] + e1 + $A953FD4E;
004138B7  MOV EAX,DWORD PTR SS:[EBP-20]            
004138BA  NOT EAX
004138BC  OR EAX,DWORD PTR SS:[EBP-14]
004138BF  XOR EAX,DWORD PTR SS:[EBP-8]
004138C2  MOV ECX,DWORD PTR SS:[EBP+C]
004138C5  ADD EAX,DWORD PTR DS:[ECX+14]
004138C8  MOV EDX,DWORD PTR SS:[EBP-38]
004138CB  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
004138D2  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl 5) or (e1 shr $1B) + d1;
004138D5  MOV EAX,DWORD PTR SS:[EBP-38]            
004138D8  SHL EAX,5
004138DB  MOV ECX,DWORD PTR SS:[EBP-38]
004138DE  SHR ECX,1B
004138E1  OR EAX,ECX
004138E3  ADD EAX,DWORD PTR SS:[EBP-2C]
004138E6  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $0A) or (b1 shr $16);
004138E9  MOV EAX,DWORD PTR SS:[EBP-14]            
004138EC  SHL EAX,0A
004138EF  MOV ECX,DWORD PTR SS:[EBP-14]
004138F2  SHR ECX,16
004138F5  OR EAX,ECX
004138F7  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (not(b1) or a1) xor e1 + Name_64[9] + d1 + $A953FD4E;
004138FA  MOV EAX,DWORD PTR SS:[EBP-14]            
004138FD  NOT EAX
004138FF  OR EAX,DWORD PTR SS:[EBP-8]
00413902  XOR EAX,DWORD PTR SS:[EBP-38]
00413905  MOV ECX,DWORD PTR SS:[EBP+C]
00413908  ADD EAX,DWORD PTR DS:[ECX+24]
0041390B  MOV EDX,DWORD PTR SS:[EBP-2C]
0041390E  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413915  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl $B) or (d1 shr $15) + c1;
00413918  MOV EAX,DWORD PTR SS:[EBP-2C]            
0041391B  SHL EAX,0B
0041391E  MOV ECX,DWORD PTR SS:[EBP-2C]
00413921  SHR ECX,15
00413924  OR EAX,ECX
00413926  ADD EAX,DWORD PTR SS:[EBP-20]
00413929  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $A) or (a1 shr $16);
0041392C  MOV EAX,DWORD PTR SS:[EBP-8]            
0041392F  SHL EAX,0A
00413932  MOV ECX,DWORD PTR SS:[EBP-8]
00413935  SHR ECX,16
00413938  OR EAX,ECX
0041393A  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (not(a1) or e1) xor d1 + Name_64[8] + c1 + $A953FD4E;
0041393D  MOV EAX,DWORD PTR SS:[EBP-8]            
00413940  NOT EAX
00413942  OR EAX,DWORD PTR SS:[EBP-38]
00413945  XOR EAX,DWORD PTR SS:[EBP-2C]
00413948  MOV ECX,DWORD PTR SS:[EBP+C]
0041394B  ADD EAX,DWORD PTR DS:[ECX+1C]
0041394E  MOV EDX,DWORD PTR SS:[EBP-20]
00413951  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413958  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl 6) or (c1 shr $1A) + b1;
0041395B  MOV EAX,DWORD PTR SS:[EBP-20]            
0041395E  SHL EAX,6
00413961  MOV ECX,DWORD PTR SS:[EBP-20]
00413964  SHR ECX,1A
00413967  OR EAX,ECX
00413969  ADD EAX,DWORD PTR SS:[EBP-14]
0041396C  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $A) or (e1 shr $16);
0041396F  MOV EAX,DWORD PTR SS:[EBP-38]            
00413972  SHL EAX,0A
00413975  MOV ECX,DWORD PTR SS:[EBP-38]
00413978  SHR ECX,16
0041397B  OR EAX,ECX
0041397D  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (not(e1) or d1) xor c1 + Name_64[12] + b1 + $A953FD4E;
00413980  MOV EAX,DWORD PTR SS:[EBP-38]            
00413983  NOT EAX
00413985  OR EAX,DWORD PTR SS:[EBP-2C]
00413988  XOR EAX,DWORD PTR SS:[EBP-20]
0041398B  MOV ECX,DWORD PTR SS:[EBP+C]
0041398E  ADD EAX,DWORD PTR DS:[ECX+30]
00413991  MOV EDX,DWORD PTR SS:[EBP-14]
00413994  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
0041399B  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 8) or (b1 shr $18) + a1;
0041399E  MOV EAX,DWORD PTR SS:[EBP-14]            
004139A1  SHL EAX,8
004139A4  MOV ECX,DWORD PTR SS:[EBP-14]
004139A7  SHR ECX,18
004139AA  OR EAX,ECX
004139AC  ADD EAX,DWORD PTR SS:[EBP-8]
004139AF  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $A) or (d1 shr $16);
004139B2  MOV EAX,DWORD PTR SS:[EBP-2C]            
004139B5  SHL EAX,0A
004139B8  MOV ECX,DWORD PTR SS:[EBP-2C]
004139BB  SHR ECX,16
004139BE  OR EAX,ECX
004139C0  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (not(d1) or c1) xor b1 + Name_64[2] + a1 + $A953FD4E;
004139C3  MOV EAX,DWORD PTR SS:[EBP-2C]            
004139C6  NOT EAX
004139C8  OR EAX,DWORD PTR SS:[EBP-20]
004139CB  XOR EAX,DWORD PTR SS:[EBP-14]
004139CE  MOV ECX,DWORD PTR SS:[EBP+C]
004139D1  ADD EAX,DWORD PTR DS:[ECX+8]
004139D4  MOV EDX,DWORD PTR SS:[EBP-8]
004139D7  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
004139DE  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $D) or (a1 shr $13) + e1;
004139E1  MOV EAX,DWORD PTR SS:[EBP-8]            
004139E4  SHL EAX,0D
004139E7  MOV ECX,DWORD PTR SS:[EBP-8]
004139EA  SHR ECX,13
004139ED  OR EAX,ECX
004139EF  ADD EAX,DWORD PTR SS:[EBP-38]
004139F2  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $A) or (c1 shr $16);
004139F5  MOV EAX,DWORD PTR SS:[EBP-20]            
004139F8  SHL EAX,0A
004139FB  MOV ECX,DWORD PTR SS:[EBP-20]
004139FE  SHR ECX,16
00413A01  OR EAX,ECX
00413A03  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (not(c1) or b1) xor a1 + Name_64[10] + e1 + $A953FD4E;
00413A06  MOV EAX,DWORD PTR SS:[EBP-20]            
00413A09  NOT EAX
00413A0B  OR EAX,DWORD PTR SS:[EBP-14]
00413A0E  XOR EAX,DWORD PTR SS:[EBP-8]
00413A11  MOV ECX,DWORD PTR SS:[EBP+C]
00413A14  ADD EAX,DWORD PTR DS:[ECX+28]
00413A17  MOV EDX,DWORD PTR SS:[EBP-38]
00413A1A  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413A21  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl $C) or (e1 shr $14) + d1;
00413A24  MOV EAX,DWORD PTR SS:[EBP-38]            
00413A27  SHL EAX,0C
00413A2A  MOV ECX,DWORD PTR SS:[EBP-38]
00413A2D  SHR ECX,14
00413A30  OR EAX,ECX
00413A32  ADD EAX,DWORD PTR SS:[EBP-2C]
00413A35  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $A) or (b1 shr $16);
00413A38  MOV EAX,DWORD PTR SS:[EBP-14]            
00413A3B  SHL EAX,0A
00413A3E  MOV ECX,DWORD PTR SS:[EBP-14]
00413A41  SHR ECX,16
00413A44  OR EAX,ECX
00413A46  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (not(b1) or a1) xor e1 + Name_64[14] + d1 + $A953FD4E;
00413A49  MOV EAX,DWORD PTR SS:[EBP-14]            
00413A4C  NOT EAX
00413A4E  OR EAX,DWORD PTR SS:[EBP-8]
00413A51  XOR EAX,DWORD PTR SS:[EBP-38]
00413A54  MOV ECX,DWORD PTR SS:[EBP+C]
00413A57  ADD EAX,DWORD PTR DS:[ECX+38]
00413A5A  MOV EDX,DWORD PTR SS:[EBP-2C]
00413A5D  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413A64  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 5) or (d1 shr $1B) + c1;
00413A67  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413A6A  SHL EAX,5
00413A6D  MOV ECX,DWORD PTR SS:[EBP-2C]
00413A70  SHR ECX,1B
00413A73  OR EAX,ECX
00413A75  ADD EAX,DWORD PTR SS:[EBP-20]
00413A78  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $A) or (a1 shr $16);
00413A7B  MOV EAX,DWORD PTR SS:[EBP-8]            
00413A7E  SHL EAX,0A
00413A81  MOV ECX,DWORD PTR SS:[EBP-8]
00413A84  SHR ECX,16
00413A87  OR EAX,ECX
00413A89  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (not(a1) or e1) xor d1 + Name_64[1] + c1 + $A953FD4E;
00413A8C  MOV EAX,DWORD PTR SS:[EBP-8]            
00413A8F  NOT EAX
00413A91  OR EAX,DWORD PTR SS:[EBP-38]
00413A94  XOR EAX,DWORD PTR SS:[EBP-2C]
00413A97  MOV ECX,DWORD PTR SS:[EBP+C]
00413A9A  ADD EAX,DWORD PTR DS:[ECX+4]
00413A9D  MOV EDX,DWORD PTR SS:[EBP-20]
00413AA0  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413AA7  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl $C) or (c1 shr $14) + b1;
00413AAA  MOV EAX,DWORD PTR SS:[EBP-20]            
00413AAD  SHL EAX,0C
00413AB0  MOV ECX,DWORD PTR SS:[EBP-20]
00413AB3  SHR ECX,14
00413AB6  OR EAX,ECX
00413AB8  ADD EAX,DWORD PTR SS:[EBP-14]
00413ABB  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $A) or (e1 shr $16);
00413ABE  MOV EAX,DWORD PTR SS:[EBP-38]            
00413AC1  SHL EAX,0A
00413AC4  MOV ECX,DWORD PTR SS:[EBP-38]
00413AC7  SHR ECX,16
00413ACA  OR EAX,ECX
00413ACC  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (not(e1) or d1) xor c1 + Name_64[3] + b1 + $A953FD4E;
00413ACF  MOV EAX,DWORD PTR SS:[EBP-38]            
00413AD2  NOT EAX
00413AD4  OR EAX,DWORD PTR SS:[EBP-2C]
00413AD7  XOR EAX,DWORD PTR SS:[EBP-20]
00413ADA  MOV ECX,DWORD PTR SS:[EBP+C]
00413ADD  ADD EAX,DWORD PTR DS:[ECX+C]
00413AE0  MOV EDX,DWORD PTR SS:[EBP-14]
00413AE3  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413AEA  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl $D) or (b1 shr $13) + a1;
00413AED  MOV EAX,DWORD PTR SS:[EBP-14]            
00413AF0  SHL EAX,0D
00413AF3  MOV ECX,DWORD PTR SS:[EBP-14]
00413AF6  SHR ECX,13
00413AF9  OR EAX,ECX
00413AFB  ADD EAX,DWORD PTR SS:[EBP-8]
00413AFE  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $A) or (d1 shr $16);
00413B01  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413B04  SHL EAX,0A
00413B07  MOV ECX,DWORD PTR SS:[EBP-2C]
00413B0A  SHR ECX,16
00413B0D  OR EAX,ECX
00413B0F  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (not(d1) or c1) xor b1 + Name_64[8] + a1 + $A953FD4E;
00413B12  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413B15  NOT EAX
00413B17  OR EAX,DWORD PTR SS:[EBP-20]
00413B1A  XOR EAX,DWORD PTR SS:[EBP-14]
00413B1D  MOV ECX,DWORD PTR SS:[EBP+C]
00413B20  ADD EAX,DWORD PTR DS:[ECX+20]
00413B23  MOV EDX,DWORD PTR SS:[EBP-8]
00413B26  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413B2D  MOV DWORD PTR SS:[EBP-8],EAX

//a1 := (a1 shl $E) or (a1 shr $12) + e1;
00413B30  MOV EAX,DWORD PTR SS:[EBP-8]            
00413B33  SHL EAX,0E
00413B36  MOV ECX,DWORD PTR SS:[EBP-8]
00413B39  SHR ECX,12
00413B3C  OR EAX,ECX
00413B3E  ADD EAX,DWORD PTR SS:[EBP-38]
00413B41  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (c1 shl $A) or (c1 shr $16);
00413B44  MOV EAX,DWORD PTR SS:[EBP-20]            
00413B47  SHL EAX,0A
00413B4A  MOV ECX,DWORD PTR SS:[EBP-20]
00413B4D  SHR ECX,16
00413B50  OR EAX,ECX
00413B52  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (not(c1) or b1) xor a1 + Name_64[11] + e1 + $A953FD4E;
00413B55  MOV EAX,DWORD PTR SS:[EBP-20]            
00413B58  NOT EAX
00413B5A  OR EAX,DWORD PTR SS:[EBP-14]
00413B5D  XOR EAX,DWORD PTR SS:[EBP-8]
00413B60  MOV ECX,DWORD PTR SS:[EBP+C]
00413B63  ADD EAX,DWORD PTR DS:[ECX+2C]
00413B66  MOV EDX,DWORD PTR SS:[EBP-38]
00413B69  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413B70  MOV DWORD PTR SS:[EBP-38],EAX

//e1 := (e1 shl $B) or (e1 shr $15) + d1;
00413B73  MOV EAX,DWORD PTR SS:[EBP-38]            
00413B76  SHL EAX,0B
00413B79  MOV ECX,DWORD PTR SS:[EBP-38]
00413B7C  SHR ECX,15
00413B7F  OR EAX,ECX
00413B81  ADD EAX,DWORD PTR SS:[EBP-2C]
00413B84  MOV DWORD PTR SS:[EBP-38],EAX

//b1 := (b1 shl $A) or (b1 shr $16);
00413B87  MOV EAX,DWORD PTR SS:[EBP-14]            
00413B8A  SHL EAX,0A
00413B8D  MOV ECX,DWORD PTR SS:[EBP-14]
00413B90  SHR ECX,16
00413B93  OR EAX,ECX
00413B95  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (not(b1) or a1) xor e1 + Name_64[6] + d1 + $A953FD4E;
00413B98  MOV EAX,DWORD PTR SS:[EBP-14]            
00413B9B  NOT EAX
00413B9D  OR EAX,DWORD PTR SS:[EBP-8]
00413BA0  XOR EAX,DWORD PTR SS:[EBP-38]
00413BA3  MOV ECX,DWORD PTR SS:[EBP+C]
00413BA6  ADD EAX,DWORD PTR DS:[ECX+18]
00413BA9  MOV EDX,DWORD PTR SS:[EBP-2C]
00413BAC  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413BB3  MOV DWORD PTR SS:[EBP-2C],EAX

//d1 := (d1 shl 8) or (d1 shr $18) + c1;
00413BB6  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413BB9  SHL EAX,8
00413BBC  MOV ECX,DWORD PTR SS:[EBP-2C]
00413BBF  SHR ECX,18
00413BC2  OR EAX,ECX
00413BC4  ADD EAX,DWORD PTR SS:[EBP-20]
00413BC7  MOV DWORD PTR SS:[EBP-2C],EAX

//a1 := (a1 shl $A) or (a1 shr $16);
00413BCA  MOV EAX,DWORD PTR SS:[EBP-8]            
00413BCD  SHL EAX,0A
00413BD0  MOV ECX,DWORD PTR SS:[EBP-8]
00413BD3  SHR ECX,16
00413BD6  OR EAX,ECX
00413BD8  MOV DWORD PTR SS:[EBP-8],EAX

//c1 := (not(a1) or e1) xor d1 + Name_64[15] + c1 + $A953FD4E;
00413BDB  MOV EAX,DWORD PTR SS:[EBP-8]            
00413BDE  NOT EAX
00413BE0  OR EAX,DWORD PTR SS:[EBP-38]
00413BE3  XOR EAX,DWORD PTR SS:[EBP-2C]
00413BE6  MOV ECX,DWORD PTR SS:[EBP+C]
00413BE9  ADD EAX,DWORD PTR DS:[ECX+3C]
00413BEC  MOV EDX,DWORD PTR SS:[EBP-20]
00413BEF  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413BF6  MOV DWORD PTR SS:[EBP-20],EAX

//c1 := (c1 shl 5) or (c1 shr $1B) + b1;
00413BF9  MOV EAX,DWORD PTR SS:[EBP-20]            
00413BFC  SHL EAX,5
00413BFF  MOV ECX,DWORD PTR SS:[EBP-20]
00413C02  SHR ECX,1B
00413C05  OR EAX,ECX
00413C07  ADD EAX,DWORD PTR SS:[EBP-14]
00413C0A  MOV DWORD PTR SS:[EBP-20],EAX

//e1 := (e1 shl $A) or (e1 shr $16);
00413C0D  MOV EAX,DWORD PTR SS:[EBP-38]            
00413C10  SHL EAX,0A
00413C13  MOV ECX,DWORD PTR SS:[EBP-38]
00413C16  SHR ECX,16
00413C19  OR EAX,ECX
00413C1B  MOV DWORD PTR SS:[EBP-38],EAX

未完待续。。。。
2005-2-15 00:07
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
//b1 := (not(e1) or d1) xor c1 + Name_64[13] + b1 + $A953FD4E;
00413C1E  MOV EAX,DWORD PTR SS:[EBP-38]            
00413C21  NOT EAX
00413C23  OR EAX,DWORD PTR SS:[EBP-2C]
00413C26  XOR EAX,DWORD PTR SS:[EBP-20]
00413C29  MOV ECX,DWORD PTR SS:[EBP+C]
00413C2C  ADD EAX,DWORD PTR DS:[ECX+34]
00413C2F  MOV EDX,DWORD PTR SS:[EBP-14]
00413C32  LEA EAX,DWORD PTR DS:[EDX+EAX+A953FD4E]
00413C39  MOV DWORD PTR SS:[EBP-14],EAX

//b1 := (b1 shl 6) or (b1 shr $1A) + a1;
00413C3C  MOV EAX,DWORD PTR SS:[EBP-14]            
00413C3F  SHL EAX,6
00413C42  MOV ECX,DWORD PTR SS:[EBP-14]
00413C45  SHR ECX,1A
00413C48  OR EAX,ECX
00413C4A  ADD EAX,DWORD PTR SS:[EBP-8]
00413C4D  MOV DWORD PTR SS:[EBP-14],EAX

//d1 := (d1 shl $A) or (d1 shr $16);
00413C50  MOV EAX,DWORD PTR SS:[EBP-2C]            
00413C53  SHL EAX,0A
00413C56  MOV ECX,DWORD PTR SS:[EBP-2C]
00413C59  SHR ECX,16
00413C5C  OR EAX,ECX
00413C5E  MOV DWORD PTR SS:[EBP-2C],EAX

//e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[6] + e2 + $5C4DD124;
00413C61  MOV EAX,DWORD PTR SS:[EBP-44]            
00413C64  AND EAX,DWORD PTR SS:[EBP-5C]
00413C67  MOV ECX,DWORD PTR SS:[EBP-5C]
00413C6A  NOT ECX
00413C6C  AND ECX,DWORD PTR SS:[EBP-50]
00413C6F  OR EAX,ECX
00413C71  MOV EDX,DWORD PTR SS:[EBP+C]
00413C74  ADD EAX,DWORD PTR DS:[EDX+18]
00413C77  MOV ECX,DWORD PTR SS:[EBP-74]
00413C7A  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413C81  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl 9) or (e2 shr $17) + d2;
00413C84  MOV EAX,DWORD PTR SS:[EBP-74]            
00413C87  SHL EAX,9
00413C8A  MOV ECX,DWORD PTR SS:[EBP-74]
00413C8D  SHR ECX,17
00413C90  OR EAX,ECX
00413C92  ADD EAX,DWORD PTR SS:[EBP-68]
00413C95  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00413C98  MOV EAX,DWORD PTR SS:[EBP-50]            
00413C9B  SHL EAX,0A
00413C9E  MOV ECX,DWORD PTR SS:[EBP-50]
00413CA1  SHR ECX,16
00413CA4  OR EAX,ECX
00413CA6  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[11] + d2 + $5C4DD124;
00413CA9  MOV EAX,DWORD PTR SS:[EBP-74]            
00413CAC  AND EAX,DWORD PTR SS:[EBP-50]
00413CAF  MOV ECX,DWORD PTR SS:[EBP-50]
00413CB2  NOT ECX
00413CB4  AND ECX,DWORD PTR SS:[EBP-44]
00413CB7  OR EAX,ECX
00413CB9  MOV EDX,DWORD PTR SS:[EBP+C]
00413CBC  ADD EAX,DWORD PTR DS:[EDX+2C]
00413CBF  MOV ECX,DWORD PTR SS:[EBP-68]
00413CC2  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413CC9  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl $D) or (d2 shr $13) + c2;
00413CCC  MOV EAX,DWORD PTR SS:[EBP-68]            
00413CCF  SHL EAX,0D
00413CD2  MOV ECX,DWORD PTR SS:[EBP-68]
00413CD5  SHR ECX,13
00413CD8  OR EAX,ECX
00413CDA  ADD EAX,DWORD PTR SS:[EBP-5C]
00413CDD  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00413CE0  MOV EAX,DWORD PTR SS:[EBP-44]            
00413CE3  SHL EAX,0A
00413CE6  MOV ECX,DWORD PTR SS:[EBP-44]
00413CE9  SHR ECX,16
00413CEC  OR EAX,ECX
00413CEE  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[3] + c2 + $5C4DD124;
00413CF1  MOV EAX,DWORD PTR SS:[EBP-68]            
00413CF4  AND EAX,DWORD PTR SS:[EBP-44]
00413CF7  MOV ECX,DWORD PTR SS:[EBP-44]
00413CFA  NOT ECX
00413CFC  AND ECX,DWORD PTR SS:[EBP-74]
00413CFF  OR EAX,ECX
00413D01  MOV EDX,DWORD PTR SS:[EBP+C]
00413D04  ADD EAX,DWORD PTR DS:[EDX+C]
00413D07  MOV ECX,DWORD PTR SS:[EBP-5C]
00413D0A  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413D11  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl $F) or (c2 shr $11) + b2;
00413D14  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413D17  SHL EAX,0F
00413D1A  MOV ECX,DWORD PTR SS:[EBP-5C]
00413D1D  SHR ECX,11
00413D20  OR EAX,ECX
00413D22  ADD EAX,DWORD PTR SS:[EBP-50]
00413D25  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00413D28  MOV EAX,DWORD PTR SS:[EBP-74]            
00413D2B  SHL EAX,0A
00413D2E  MOV ECX,DWORD PTR SS:[EBP-74]
00413D31  SHR ECX,16
00413D34  OR EAX,ECX
00413D36  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[7] + b2 + $5C4DD124;
00413D39  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413D3C  AND EAX,DWORD PTR SS:[EBP-74]
00413D3F  MOV ECX,DWORD PTR SS:[EBP-74]
00413D42  NOT ECX
00413D44  AND ECX,DWORD PTR SS:[EBP-68]
00413D47  OR EAX,ECX
00413D49  MOV EDX,DWORD PTR SS:[EBP+C]
00413D4C  ADD EAX,DWORD PTR DS:[EDX+1C]
00413D4F  MOV ECX,DWORD PTR SS:[EBP-50]
00413D52  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413D59  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl $7) or (b2 shr $19) + a2;
00413D5C  MOV EAX,DWORD PTR SS:[EBP-50]            
00413D5F  SHL EAX,7
00413D62  MOV ECX,DWORD PTR SS:[EBP-50]
00413D65  SHR ECX,19
00413D68  OR EAX,ECX
00413D6A  ADD EAX,DWORD PTR SS:[EBP-44]
00413D6D  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00413D70  MOV EAX,DWORD PTR SS:[EBP-68]            
00413D73  SHL EAX,0A
00413D76  MOV ECX,DWORD PTR SS:[EBP-68]
00413D79  SHR ECX,16
00413D7C  OR EAX,ECX
00413D7E  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[0] + a2 + $5C4DD124;
00413D81  MOV EAX,DWORD PTR SS:[EBP-50]            
00413D84  AND EAX,DWORD PTR SS:[EBP-68]
00413D87  MOV ECX,DWORD PTR SS:[EBP-68]
00413D8A  NOT ECX
00413D8C  AND ECX,DWORD PTR SS:[EBP-5C]
00413D8F  OR EAX,ECX
00413D91  MOV EDX,DWORD PTR SS:[EBP+C]
00413D94  ADD EAX,DWORD PTR DS:[EDX]
00413D96  MOV ECX,DWORD PTR SS:[EBP-44]
00413D99  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413DA0  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl $C) or (a2 shr $14) + e2;
00413DA3  MOV EAX,DWORD PTR SS:[EBP-44]            
00413DA6  SHL EAX,0C
00413DA9  MOV ECX,DWORD PTR SS:[EBP-44]
00413DAC  SHR ECX,14
00413DAF  OR EAX,ECX
00413DB1  ADD EAX,DWORD PTR SS:[EBP-74]
00413DB4  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00413DB7  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413DBA  SHL EAX,0A
00413DBD  MOV ECX,DWORD PTR SS:[EBP-5C]
00413DC0  SHR ECX,16
00413DC3  OR EAX,ECX
00413DC5  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[13] + e2 + $5C4DD124;
00413DC8  MOV EAX,DWORD PTR SS:[EBP-44]            
00413DCB  AND EAX,DWORD PTR SS:[EBP-5C]
00413DCE  MOV ECX,DWORD PTR SS:[EBP-5C]
00413DD1  NOT ECX
00413DD3  AND ECX,DWORD PTR SS:[EBP-50]
00413DD6  OR EAX,ECX
00413DD8  MOV EDX,DWORD PTR SS:[EBP+C]
00413DDB  ADD EAX,DWORD PTR DS:[EDX+34]
00413DDE  MOV ECX,DWORD PTR SS:[EBP-74]
00413DE1  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413DE8  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl 8) or (e2 shr $18) + d2;
00413DEB  MOV EAX,DWORD PTR SS:[EBP-74]            
00413DEE  SHL EAX,8
00413DF1  MOV ECX,DWORD PTR SS:[EBP-74]
00413DF4  SHR ECX,18
00413DF7  OR EAX,ECX
00413DF9  ADD EAX,DWORD PTR SS:[EBP-68]
00413DFC  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00413DFF  MOV EAX,DWORD PTR SS:[EBP-50]            
00413E02  SHL EAX,0A
00413E05  MOV ECX,DWORD PTR SS:[EBP-50]
00413E08  SHR ECX,16
00413E0B  OR EAX,ECX
00413E0D  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[5] + d2 + $5C4DD124;
00413E10  MOV EAX,DWORD PTR SS:[EBP-74]            
00413E13  AND EAX,DWORD PTR SS:[EBP-50]
00413E16  MOV ECX,DWORD PTR SS:[EBP-50]
00413E19  NOT ECX
00413E1B  AND ECX,DWORD PTR SS:[EBP-44]
00413E1E  OR EAX,ECX
00413E20  MOV EDX,DWORD PTR SS:[EBP+C]
00413E23  ADD EAX,DWORD PTR DS:[EDX+14]
00413E26  MOV ECX,DWORD PTR SS:[EBP-68]
00413E29  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413E30  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl 9) or (d2 shr $17) + c2;
00413E33  MOV EAX,DWORD PTR SS:[EBP-68]            
00413E36  SHL EAX,9
00413E39  MOV ECX,DWORD PTR SS:[EBP-68]
00413E3C  SHR ECX,17
00413E3F  OR EAX,ECX
00413E41  ADD EAX,DWORD PTR SS:[EBP-5C]
00413E44  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00413E47  MOV EAX,DWORD PTR SS:[EBP-44]            
00413E4A  SHL EAX,0A
00413E4D  MOV ECX,DWORD PTR SS:[EBP-44]
00413E50  SHR ECX,16
00413E53  OR EAX,ECX
00413E55  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[10] + c2 + $5C4DD124;
00413E58  MOV EAX,DWORD PTR SS:[EBP-68]            
00413E5B  AND EAX,DWORD PTR SS:[EBP-44]
00413E5E  MOV ECX,DWORD PTR SS:[EBP-44]
00413E61  NOT ECX
00413E63  AND ECX,DWORD PTR SS:[EBP-74]
00413E66  OR EAX,ECX
00413E68  MOV EDX,DWORD PTR SS:[EBP+C]
00413E6B  ADD EAX,DWORD PTR DS:[EDX+28]
00413E6E  MOV ECX,DWORD PTR SS:[EBP-5C]
00413E71  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413E78  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl $B) or (c2 shr $15) + b2;
00413E7B  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413E7E  SHL EAX,0B
00413E81  MOV ECX,DWORD PTR SS:[EBP-5C]
00413E84  SHR ECX,15
00413E87  OR EAX,ECX
00413E89  ADD EAX,DWORD PTR SS:[EBP-50]
00413E8C  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00413E8F  MOV EAX,DWORD PTR SS:[EBP-74]            
00413E92  SHL EAX,0A
00413E95  MOV ECX,DWORD PTR SS:[EBP-74]
00413E98  SHR ECX,16
00413E9B  OR EAX,ECX
00413E9D  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[14] + b2 + $5C4DD124;
00413EA0  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413EA3  AND EAX,DWORD PTR SS:[EBP-74]
00413EA6  MOV ECX,DWORD PTR SS:[EBP-74]
00413EA9  NOT ECX
00413EAB  AND ECX,DWORD PTR SS:[EBP-68]
00413EAE  OR EAX,ECX
00413EB0  MOV EDX,DWORD PTR SS:[EBP+C]
00413EB3  ADD EAX,DWORD PTR DS:[EDX+38]
00413EB6  MOV ECX,DWORD PTR SS:[EBP-50]
00413EB9  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413EC0  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl 7) or (b2 shr $19) + a2;
00413EC3  MOV EAX,DWORD PTR SS:[EBP-50]            
00413EC6  SHL EAX,7
00413EC9  MOV ECX,DWORD PTR SS:[EBP-50]
00413ECC  SHR ECX,19
00413ECF  OR EAX,ECX
00413ED1  ADD EAX,DWORD PTR SS:[EBP-44]
00413ED4  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00413ED7  MOV EAX,DWORD PTR SS:[EBP-68]            
00413EDA  SHL EAX,0A
00413EDD  MOV ECX,DWORD PTR SS:[EBP-68]
00413EE0  SHR ECX,16
00413EE3  OR EAX,ECX
00413EE5  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[15] + a2 + $5C4DD124;
00413EE8  MOV EAX,DWORD PTR SS:[EBP-50]            
00413EEB  AND EAX,DWORD PTR SS:[EBP-68]
00413EEE  MOV ECX,DWORD PTR SS:[EBP-68]
00413EF1  NOT ECX
00413EF3  AND ECX,DWORD PTR SS:[EBP-5C]
00413EF6  OR EAX,ECX
00413EF8  MOV EDX,DWORD PTR SS:[EBP+C]
00413EFB  ADD EAX,DWORD PTR DS:[EDX+3C]
00413EFE  MOV ECX,DWORD PTR SS:[EBP-44]
00413F01  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413F08  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl 7) or (a2 shr $19) + e2;
00413F0B  MOV EAX,DWORD PTR SS:[EBP-44]            
00413F0E  SHL EAX,7
00413F11  MOV ECX,DWORD PTR SS:[EBP-44]
00413F14  SHR ECX,19
00413F17  OR EAX,ECX
00413F19  ADD EAX,DWORD PTR SS:[EBP-74]
00413F1C  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00413F1F  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413F22  SHL EAX,0A
00413F25  MOV ECX,DWORD PTR SS:[EBP-5C]
00413F28  SHR ECX,16
00413F2B  OR EAX,ECX
00413F2D  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[8] + e2 + $5C4DD124;
00413F30  MOV EAX,DWORD PTR SS:[EBP-44]            
00413F33  AND EAX,DWORD PTR SS:[EBP-5C]
00413F36  MOV ECX,DWORD PTR SS:[EBP-5C]
00413F39  NOT ECX
00413F3B  AND ECX,DWORD PTR SS:[EBP-50]
00413F3E  OR EAX,ECX
00413F40  MOV EDX,DWORD PTR SS:[EBP+C]
00413F43  ADD EAX,DWORD PTR DS:[EDX+20]
00413F46  MOV ECX,DWORD PTR SS:[EBP-74]
00413F49  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413F50  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl $C) or (e2 shr $14) + d2;
00413F53  MOV EAX,DWORD PTR SS:[EBP-74]            
00413F56  SHL EAX,0C
00413F59  MOV ECX,DWORD PTR SS:[EBP-74]
00413F5C  SHR ECX,14
00413F5F  OR EAX,ECX
00413F61  ADD EAX,DWORD PTR SS:[EBP-68]
00413F64  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00413F67  MOV EAX,DWORD PTR SS:[EBP-50]            
00413F6A  SHL EAX,0A
00413F6D  MOV ECX,DWORD PTR SS:[EBP-50]
00413F70  SHR ECX,16
00413F73  OR EAX,ECX
00413F75  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[12] + d2 + $5C4DD124;
00413F78  MOV EAX,DWORD PTR SS:[EBP-74]            
00413F7B  AND EAX,DWORD PTR SS:[EBP-50]
00413F7E  MOV ECX,DWORD PTR SS:[EBP-50]
00413F81  NOT ECX
00413F83  AND ECX,DWORD PTR SS:[EBP-44]
00413F86  OR EAX,ECX
00413F88  MOV EDX,DWORD PTR SS:[EBP+C]
00413F8B  ADD EAX,DWORD PTR DS:[EDX+30]
00413F8E  MOV ECX,DWORD PTR SS:[EBP-68]
00413F91  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413F98  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl 7) or (d2 shr $19) + c2;
00413F9B  MOV EAX,DWORD PTR SS:[EBP-68]            
00413F9E  SHL EAX,7
00413FA1  MOV ECX,DWORD PTR SS:[EBP-68]
00413FA4  SHR ECX,19
00413FA7  OR EAX,ECX
00413FA9  ADD EAX,DWORD PTR SS:[EBP-5C]
00413FAC  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00413FAF  MOV EAX,DWORD PTR SS:[EBP-44]            
00413FB2  SHL EAX,0A
00413FB5  MOV ECX,DWORD PTR SS:[EBP-44]
00413FB8  SHR ECX,16
00413FBB  OR EAX,ECX
00413FBD  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[4] + c2 + $5C4DD124;
00413FC0  MOV EAX,DWORD PTR SS:[EBP-68]            
00413FC3  AND EAX,DWORD PTR SS:[EBP-44]
00413FC6  MOV ECX,DWORD PTR SS:[EBP-44]
00413FC9  NOT ECX
00413FCB  AND ECX,DWORD PTR SS:[EBP-74]
00413FCE  OR EAX,ECX
00413FD0  MOV EDX,DWORD PTR SS:[EBP+C]
00413FD3  ADD EAX,DWORD PTR DS:[EDX+10]
00413FD6  MOV ECX,DWORD PTR SS:[EBP-5C]
00413FD9  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00413FE0  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl 6) or (c2 shr $1A) + b2;
00413FE3  MOV EAX,DWORD PTR SS:[EBP-5C]            
00413FE6  SHL EAX,6
00413FE9  MOV ECX,DWORD PTR SS:[EBP-5C]
00413FEC  SHR ECX,1A
00413FEF  OR EAX,ECX
00413FF1  ADD EAX,DWORD PTR SS:[EBP-50]
00413FF4  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00413FF7  MOV EAX,DWORD PTR SS:[EBP-74]            
00413FFA  SHL EAX,0A
00413FFD  MOV ECX,DWORD PTR SS:[EBP-74]
00414000  SHR ECX,16
00414003  OR EAX,ECX
00414005  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[9] + b2 + $5C4DD124;
00414008  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041400B  AND EAX,DWORD PTR SS:[EBP-74]
0041400E  MOV ECX,DWORD PTR SS:[EBP-74]
00414011  NOT ECX
00414013  AND ECX,DWORD PTR SS:[EBP-68]
00414016  OR EAX,ECX
00414018  MOV EDX,DWORD PTR SS:[EBP+C]
0041401B  ADD EAX,DWORD PTR DS:[EDX+24]
0041401E  MOV ECX,DWORD PTR SS:[EBP-50]
00414021  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00414028  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl $F) or (b2 shr $11) + a2;
0041402B  MOV EAX,DWORD PTR SS:[EBP-50]            
0041402E  SHL EAX,0F
00414031  MOV ECX,DWORD PTR SS:[EBP-50]
00414034  SHR ECX,11
00414037  OR EAX,ECX
00414039  ADD EAX,DWORD PTR SS:[EBP-44]
0041403C  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
0041403F  MOV EAX,DWORD PTR SS:[EBP-68]            
00414042  SHL EAX,0A
00414045  MOV ECX,DWORD PTR SS:[EBP-68]
00414048  SHR ECX,16
0041404B  OR EAX,ECX
0041404D  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[1] + a2 + $5C4DD124;
00414050  MOV EAX,DWORD PTR SS:[EBP-50]            
00414053  AND EAX,DWORD PTR SS:[EBP-68]
00414056  MOV ECX,DWORD PTR SS:[EBP-68]
00414059  NOT ECX
0041405B  AND ECX,DWORD PTR SS:[EBP-5C]
0041405E  OR EAX,ECX
00414060  MOV EDX,DWORD PTR SS:[EBP+C]
00414063  ADD EAX,DWORD PTR DS:[EDX+4]
00414066  MOV ECX,DWORD PTR SS:[EBP-44]
00414069  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
00414070  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl $D) or (a2 shr $13) + e2;
00414073  MOV EAX,DWORD PTR SS:[EBP-44]            
00414076  SHL EAX,0D
00414079  MOV ECX,DWORD PTR SS:[EBP-44]
0041407C  SHR ECX,13
0041407F  OR EAX,ECX
00414081  ADD EAX,DWORD PTR SS:[EBP-74]
00414084  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414087  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041408A  SHL EAX,0A
0041408D  MOV ECX,DWORD PTR SS:[EBP-5C]
00414090  SHR ECX,16
00414093  OR EAX,ECX
00414095  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[2] + e2 + $5C4DD124;
00414098  MOV EAX,DWORD PTR SS:[EBP-44]            
0041409B  AND EAX,DWORD PTR SS:[EBP-5C]
0041409E  MOV ECX,DWORD PTR SS:[EBP-5C]
004140A1  NOT ECX
004140A3  AND ECX,DWORD PTR SS:[EBP-50]
004140A6  OR EAX,ECX
004140A8  MOV EDX,DWORD PTR SS:[EBP+C]
004140AB  ADD EAX,DWORD PTR DS:[EDX+8]
004140AE  MOV ECX,DWORD PTR SS:[EBP-74]
004140B1  LEA EDX,DWORD PTR DS:[ECX+EAX+5C4DD124]
004140B8  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl $B) or (e2 shr $15) + d2;
004140BB  MOV EAX,DWORD PTR SS:[EBP-74]            
004140BE  SHL EAX,0B
004140C1  MOV ECX,DWORD PTR SS:[EBP-74]
004140C4  SHR ECX,15
004140C7  OR EAX,ECX
004140C9  ADD EAX,DWORD PTR SS:[EBP-68]
004140CC  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
004140CF  MOV EAX,DWORD PTR SS:[EBP-50]            
004140D2  SHL EAX,0A
004140D5  MOV ECX,DWORD PTR SS:[EBP-50]
004140D8  SHR ECX,16
004140DB  OR EAX,ECX
004140DD  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := c2 xor d2 xor e2 + Name_64[12] + b2;
004140E0  MOV EAX,DWORD PTR SS:[EBP-5C]            
004140E3  XOR EAX,DWORD PTR SS:[EBP-68]
004140E6  XOR EAX,DWORD PTR SS:[EBP-74]
004140E9  MOV ECX,DWORD PTR SS:[EBP+C]
004140EC  ADD EAX,DWORD PTR DS:[ECX+30]
004140EF  ADD EAX,DWORD PTR SS:[EBP-50]
004140F2  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl 8) or (b2 shr $18) + a2;
004140F5  MOV EAX,DWORD PTR SS:[EBP-50]            
004140F8  SHL EAX,8
004140FB  MOV ECX,DWORD PTR SS:[EBP-50]
004140FE  SHR ECX,18
00414101  OR EAX,ECX
00414103  ADD EAX,DWORD PTR SS:[EBP-44]
00414106  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414109  MOV EAX,DWORD PTR SS:[EBP-68]            
0041410C  SHL EAX,0A
0041410F  MOV ECX,DWORD PTR SS:[EBP-68]
00414112  SHR ECX,16
00414115  OR EAX,ECX
00414117  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := b2 xor c2 xor d2 + Name_64[15] + a2;
0041411A  MOV EAX,DWORD PTR SS:[EBP-50]            
0041411D  XOR EAX,DWORD PTR SS:[EBP-5C]
00414120  XOR EAX,DWORD PTR SS:[EBP-68]
00414123  MOV ECX,DWORD PTR SS:[EBP+C]
00414126  ADD EAX,DWORD PTR DS:[ECX+3C]
00414129  ADD EAX,DWORD PTR SS:[EBP-44]
0041412C  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl 5) or (a2 shr $1B) + e2;
0041412F  MOV EAX,DWORD PTR SS:[EBP-44]            
00414132  SHL EAX,5
00414135  MOV ECX,DWORD PTR SS:[EBP-44]
00414138  SHR ECX,1B
0041413B  OR EAX,ECX
0041413D  ADD EAX,DWORD PTR SS:[EBP-74]
00414140  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414143  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414146  SHL EAX,0A
00414149  MOV ECX,DWORD PTR SS:[EBP-5C]
0041414C  SHR ECX,16
0041414F  OR EAX,ECX
00414151  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := a2 xor b2 xor c2 + Name_64[10] + e2;
00414154  MOV EAX,DWORD PTR SS:[EBP-44]            
00414157  XOR EAX,DWORD PTR SS:[EBP-50]
0041415A  XOR EAX,DWORD PTR SS:[EBP-5C]
0041415D  MOV ECX,DWORD PTR SS:[EBP+C]
00414160  ADD EAX,DWORD PTR DS:[ECX+28]
00414163  ADD EAX,DWORD PTR SS:[EBP-74]
00414166  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl $C) or (e2 shr $14) + d2;
00414169  MOV EAX,DWORD PTR SS:[EBP-74]            
0041416C  SHL EAX,0C
0041416F  MOV ECX,DWORD PTR SS:[EBP-74]
00414172  SHR ECX,14
00414175  OR EAX,ECX
00414177  ADD EAX,DWORD PTR SS:[EBP-68]
0041417A  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
0041417D  MOV EAX,DWORD PTR SS:[EBP-50]            
00414180  SHL EAX,0A
00414183  MOV ECX,DWORD PTR SS:[EBP-50]
00414186  SHR ECX,16
00414189  OR EAX,ECX
0041418B  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := e2 xor a2 xor b2 + Name_64[4] + d2;
0041418E  MOV EAX,DWORD PTR SS:[EBP-74]            
00414191  XOR EAX,DWORD PTR SS:[EBP-44]
00414194  XOR EAX,DWORD PTR SS:[EBP-50]
00414197  MOV ECX,DWORD PTR SS:[EBP+C]
0041419A  ADD EAX,DWORD PTR DS:[ECX+10]
0041419D  ADD EAX,DWORD PTR SS:[EBP-68]
004141A0  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 9) or (d2 shr $17) + c2;
004141A3  MOV EAX,DWORD PTR SS:[EBP-68]            
004141A6  SHL EAX,9
004141A9  MOV ECX,DWORD PTR SS:[EBP-68]
004141AC  SHR ECX,17
004141AF  OR EAX,ECX
004141B1  ADD EAX,DWORD PTR SS:[EBP-5C]
004141B4  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
004141B7  MOV EAX,DWORD PTR SS:[EBP-44]            
004141BA  SHL EAX,0A
004141BD  MOV ECX,DWORD PTR SS:[EBP-44]
004141C0  SHR ECX,16
004141C3  OR EAX,ECX
004141C5  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := d2 xor e2 xor a2 + Name_64[1] + c2;
004141C8  MOV EAX,DWORD PTR SS:[EBP-68]            
004141CB  XOR EAX,DWORD PTR SS:[EBP-74]
004141CE  XOR EAX,DWORD PTR SS:[EBP-44]
004141D1  MOV ECX,DWORD PTR SS:[EBP+C]
004141D4  ADD EAX,DWORD PTR DS:[ECX+4]
004141D7  ADD EAX,DWORD PTR SS:[EBP-5C]
004141DA  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $C) or (c2 shr $14) + b2;
004141DD  MOV EAX,DWORD PTR SS:[EBP-5C]            
004141E0  SHL EAX,0C
004141E3  MOV ECX,DWORD PTR SS:[EBP-5C]
004141E6  SHR ECX,14
004141E9  OR EAX,ECX
004141EB  ADD EAX,DWORD PTR SS:[EBP-50]
004141EE  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
004141F1  MOV EAX,DWORD PTR SS:[EBP-74]            
004141F4  SHL EAX,0A
004141F7  MOV ECX,DWORD PTR SS:[EBP-74]
004141FA  SHR ECX,16
004141FD  OR EAX,ECX
004141FF  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := c2 xor d2 xor e2 + Name_64[5] + b2;
00414202  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414205  XOR EAX,DWORD PTR SS:[EBP-68]
00414208  XOR EAX,DWORD PTR SS:[EBP-74]
0041420B  MOV ECX,DWORD PTR SS:[EBP+C]
0041420E  ADD EAX,DWORD PTR DS:[ECX+14]
00414211  ADD EAX,DWORD PTR SS:[EBP-50]
00414214  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl 5) or (b2 shr $1B) + a2;
00414217  MOV EAX,DWORD PTR SS:[EBP-50]            
0041421A  SHL EAX,5
0041421D  MOV ECX,DWORD PTR SS:[EBP-50]
00414220  SHR ECX,1B
00414223  OR EAX,ECX
00414225  ADD EAX,DWORD PTR SS:[EBP-44]
00414228  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
0041422B  MOV EAX,DWORD PTR SS:[EBP-68]            
0041422E  SHL EAX,0A
00414231  MOV ECX,DWORD PTR SS:[EBP-68]
00414234  SHR ECX,16
00414237  OR EAX,ECX
00414239  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := b2 xor c2 xor d2 + Name_64[8] + a2;
0041423C  MOV EAX,DWORD PTR SS:[EBP-50]            
0041423F  XOR EAX,DWORD PTR SS:[EBP-5C]
00414242  XOR EAX,DWORD PTR SS:[EBP-68]
00414245  MOV ECX,DWORD PTR SS:[EBP+C]
00414248  ADD EAX,DWORD PTR DS:[ECX+20]
0041424B  ADD EAX,DWORD PTR SS:[EBP-44]
0041424E  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl $E) or (a2 shr $12) + e2;
00414251  MOV EAX,DWORD PTR SS:[EBP-44]            
00414254  SHL EAX,0E
00414257  MOV ECX,DWORD PTR SS:[EBP-44]
0041425A  SHR ECX,12
0041425D  OR EAX,ECX
0041425F  ADD EAX,DWORD PTR SS:[EBP-74]
00414262  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414265  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414268  SHL EAX,0A
0041426B  MOV ECX,DWORD PTR SS:[EBP-5C]
0041426E  SHR ECX,16
00414271  OR EAX,ECX
00414273  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := a2 xor b2 xor c2 + Name_64[7] + e2;
00414276  MOV EAX,DWORD PTR SS:[EBP-44]            
00414279  XOR EAX,DWORD PTR SS:[EBP-50]
0041427C  XOR EAX,DWORD PTR SS:[EBP-5C]
0041427F  MOV ECX,DWORD PTR SS:[EBP+C]
00414282  ADD EAX,DWORD PTR DS:[ECX+1C]
00414285  ADD EAX,DWORD PTR SS:[EBP-74]
00414288  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl 6) or (e2 shr $1A) + d2;
0041428B  MOV EAX,DWORD PTR SS:[EBP-74]            
0041428E  SHL EAX,6
00414291  MOV ECX,DWORD PTR SS:[EBP-74]
00414294  SHR ECX,1A
00414297  OR EAX,ECX
00414299  ADD EAX,DWORD PTR SS:[EBP-68]
0041429C  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
0041429F  MOV EAX,DWORD PTR SS:[EBP-50]            
004142A2  SHL EAX,0A
004142A5  MOV ECX,DWORD PTR SS:[EBP-50]
004142A8  SHR ECX,16
004142AB  OR EAX,ECX
004142AD  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := e2 xor a2 xor b2 + Name_64[6] + d2;
004142B0  MOV EAX,DWORD PTR SS:[EBP-74]            
004142B3  XOR EAX,DWORD PTR SS:[EBP-44]
004142B6  XOR EAX,DWORD PTR SS:[EBP-50]
004142B9  MOV ECX,DWORD PTR SS:[EBP+C]
004142BC  ADD EAX,DWORD PTR DS:[ECX+18]
004142BF  ADD EAX,DWORD PTR SS:[EBP-68]
004142C2  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 8) or (d2 shr $18) + c2;
004142C5  MOV EAX,DWORD PTR SS:[EBP-68]            
004142C8  SHL EAX,8
004142CB  MOV ECX,DWORD PTR SS:[EBP-68]
004142CE  SHR ECX,18
004142D1  OR EAX,ECX
004142D3  ADD EAX,DWORD PTR SS:[EBP-5C]
004142D6  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
004142D9  MOV EAX,DWORD PTR SS:[EBP-44]            
004142DC  SHL EAX,0A
004142DF  MOV ECX,DWORD PTR SS:[EBP-44]
004142E2  SHR ECX,16
004142E5  OR EAX,ECX
004142E7  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := d2 xor e2 xor a2 + Name_64[2] + c2;
004142EA  MOV EAX,DWORD PTR SS:[EBP-68]            
004142ED  XOR EAX,DWORD PTR SS:[EBP-74]
004142F0  XOR EAX,DWORD PTR SS:[EBP-44]
004142F3  MOV ECX,DWORD PTR SS:[EBP+C]
004142F6  ADD EAX,DWORD PTR DS:[ECX+8]
004142F9  ADD EAX,DWORD PTR SS:[EBP-5C]
004142FC  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $D) or (c2 shr $13) + b2;
004142FF  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414302  SHL EAX,0D
00414305  MOV ECX,DWORD PTR SS:[EBP-5C]
00414308  SHR ECX,13
0041430B  OR EAX,ECX
0041430D  ADD EAX,DWORD PTR SS:[EBP-50]
00414310  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414313  MOV EAX,DWORD PTR SS:[EBP-74]            
00414316  SHL EAX,0A
00414319  MOV ECX,DWORD PTR SS:[EBP-74]
0041431C  SHR ECX,16
0041431F  OR EAX,ECX
00414321  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := c2 xor d2 xor e2 + Name_64[13] + b2;
00414324  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414327  XOR EAX,DWORD PTR SS:[EBP-68]
0041432A  XOR EAX,DWORD PTR SS:[EBP-74]
0041432D  MOV ECX,DWORD PTR SS:[EBP+C]
00414330  ADD EAX,DWORD PTR DS:[ECX+34]
00414333  ADD EAX,DWORD PTR SS:[EBP-50]
00414336  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl 6) or (b2 shr $1A) + a2;
00414339  MOV EAX,DWORD PTR SS:[EBP-50]            
0041433C  SHL EAX,6
0041433F  MOV ECX,DWORD PTR SS:[EBP-50]
00414342  SHR ECX,1A
00414345  OR EAX,ECX
00414347  ADD EAX,DWORD PTR SS:[EBP-44]
0041434A  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
0041434D  MOV EAX,DWORD PTR SS:[EBP-68]            
00414350  SHL EAX,0A
00414353  MOV ECX,DWORD PTR SS:[EBP-68]
00414356  SHR ECX,16
00414359  OR EAX,ECX
0041435B  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := b2 xor c2 xor d2 + Name_64[14] + a2;
0041435E  MOV EAX,DWORD PTR SS:[EBP-50]            
00414361  XOR EAX,DWORD PTR SS:[EBP-5C]
00414364  XOR EAX,DWORD PTR SS:[EBP-68]
00414367  MOV ECX,DWORD PTR SS:[EBP+C]
0041436A  ADD EAX,DWORD PTR DS:[ECX+38]
0041436D  ADD EAX,DWORD PTR SS:[EBP-44]
00414370  MOV DWORD PTR SS:[EBP-44],EAX

//e2 := (a2 shl 5) or (a2 shr $1B) + e2;
00414373  MOV EAX,DWORD PTR SS:[EBP-44]           
00414376  SHL EAX,5
00414379  MOV ECX,DWORD PTR SS:[EBP-44]
0041437C  SHR ECX,1B
0041437F  OR EAX,ECX
00414381  ADD EAX,DWORD PTR SS:[EBP-74]
00414384  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414387  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041438A  SHL EAX,0A
0041438D  MOV ECX,DWORD PTR SS:[EBP-5C]
00414390  SHR ECX,16
00414393  OR EAX,ECX
00414395  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := a2 xor b2 xor c2 + Name_64[0] + e2;
00414398  MOV EAX,DWORD PTR SS:[EBP-44]            
0041439B  XOR EAX,DWORD PTR SS:[EBP-50]
0041439E  XOR EAX,DWORD PTR SS:[EBP-5C]
004143A1  MOV ECX,DWORD PTR SS:[EBP+C]
004143A4  ADD EAX,DWORD PTR DS:[ECX]
004143A6  ADD EAX,DWORD PTR SS:[EBP-74]
004143A9  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl $0F) or (e2 shr $11) + d2;
004143AC  MOV EAX,DWORD PTR SS:[EBP-74]            
004143AF  SHL EAX,0F
004143B2  MOV ECX,DWORD PTR SS:[EBP-74]
004143B5  SHR ECX,11
004143B8  OR EAX,ECX
004143BA  ADD EAX,DWORD PTR SS:[EBP-68]
004143BD  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
004143C0  MOV EAX,DWORD PTR SS:[EBP-50]            
004143C3  SHL EAX,0A
004143C6  MOV ECX,DWORD PTR SS:[EBP-50]
004143C9  SHR ECX,16
004143CC  OR EAX,ECX
004143CE  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := e2 xor a2 xor b2 + Name_64[3] + d2;
004143D1  MOV EAX,DWORD PTR SS:[EBP-74]            
004143D4  XOR EAX,DWORD PTR SS:[EBP-44]
004143D7  XOR EAX,DWORD PTR SS:[EBP-50]
004143DA  MOV ECX,DWORD PTR SS:[EBP+C]
004143DD  ADD EAX,DWORD PTR DS:[ECX+C]
004143E0  ADD EAX,DWORD PTR SS:[EBP-68]
004143E3  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl $D) or (d2 shr $13) + c2;
004143E6  MOV EAX,DWORD PTR SS:[EBP-68]            
004143E9  SHL EAX,0D
004143EC  MOV ECX,DWORD PTR SS:[EBP-68]
004143EF  SHR ECX,13
004143F2  OR EAX,ECX
004143F4  ADD EAX,DWORD PTR SS:[EBP-5C]
004143F7  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
004143FA  MOV EAX,DWORD PTR SS:[EBP-44]            
004143FD  SHL EAX,0A
00414400  MOV ECX,DWORD PTR SS:[EBP-44]
00414403  SHR ECX,16
00414406  OR EAX,ECX
00414408  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := d2 xor e2 xor a2 + Name_64[9] + c2;
0041440B  MOV EAX,DWORD PTR SS:[EBP-68]            
0041440E  XOR EAX,DWORD PTR SS:[EBP-74]
00414411  XOR EAX,DWORD PTR SS:[EBP-44]
00414414  MOV ECX,DWORD PTR SS:[EBP+C]
00414417  ADD EAX,DWORD PTR DS:[ECX+24]
0041441A  ADD EAX,DWORD PTR SS:[EBP-5C]
0041441D  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $B) or (c2 shr $15) + b2;
00414420  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414423  SHL EAX,0B
00414426  MOV ECX,DWORD PTR SS:[EBP-5C]
00414429  SHR ECX,15
0041442C  OR EAX,ECX
0041442E  ADD EAX,DWORD PTR SS:[EBP-50]
00414431  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414434  MOV EAX,DWORD PTR SS:[EBP-74]            
00414437  SHL EAX,0A
0041443A  MOV ECX,DWORD PTR SS:[EBP-74]
0041443D  SHR ECX,16
00414440  OR EAX,ECX
00414442  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := c2 xor d2 xor e2 + Name_64[11] + b2;
00414445  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414448  XOR EAX,DWORD PTR SS:[EBP-68]
0041444B  XOR EAX,DWORD PTR SS:[EBP-74]
0041444E  MOV ECX,DWORD PTR SS:[EBP+C]
00414451  ADD EAX,DWORD PTR DS:[ECX+2C]
00414454  ADD EAX,DWORD PTR SS:[EBP-50]
00414457  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $B) or (b2 shr $15) + a2;
0041445A  MOV EAX,DWORD PTR SS:[EBP-50]            
0041445D  SHL EAX,0B
00414460  MOV ECX,DWORD PTR SS:[EBP-50]
00414463  SHR ECX,15
00414466  OR EAX,ECX
00414468  ADD EAX,DWORD PTR SS:[EBP-44]
0041446B  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
0041446E  MOV EAX,DWORD PTR SS:[EBP-68]            
00414471  SHL EAX,0A
00414474  MOV ECX,DWORD PTR SS:[EBP-68]
00414477  SHR ECX,16
0041447A  OR EAX,ECX
0041447C  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (not(a2) or e2) xor b2 + Name_64[15] + d2 + $6D703EF3;
0041447F  MOV EAX,DWORD PTR SS:[EBP-44]            
00414482  NOT EAX
00414484  OR EAX,DWORD PTR SS:[EBP-74]
00414487  XOR EAX,DWORD PTR SS:[EBP-50]
0041448A  MOV ECX,DWORD PTR SS:[EBP+C]
0041448D  ADD EAX,DWORD PTR DS:[ECX+3C]
00414490  MOV EDX,DWORD PTR SS:[EBP-68]
00414493  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
0041449A  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 9) or (d2 shr $17) + c2;
0041449D  MOV EAX,DWORD PTR SS:[EBP-68]   
004144A0  SHL EAX,9
004144A3  MOV ECX,DWORD PTR SS:[EBP-68]
004144A6  SHR ECX,17
004144A9  OR EAX,ECX
004144AB  ADD EAX,DWORD PTR SS:[EBP-5C]
004144AE  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
004144B1  MOV EAX,DWORD PTR SS:[EBP-44]            
004144B4  SHL EAX,0A
004144B7  MOV ECX,DWORD PTR SS:[EBP-44]
004144BA  SHR ECX,16
004144BD  OR EAX,ECX
004144BF  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(e2) or d2) xor a2 + Name_64[5] + c2 + $6D703EF3;
004144C2  MOV EAX,DWORD PTR SS:[EBP-74]            
004144C5  NOT EAX
004144C7  OR EAX,DWORD PTR SS:[EBP-68]
004144CA  XOR EAX,DWORD PTR SS:[EBP-44]
004144CD  MOV ECX,DWORD PTR SS:[EBP+C]
004144D0  ADD EAX,DWORD PTR DS:[ECX+14]
004144D3  MOV EDX,DWORD PTR SS:[EBP-5C]
004144D6  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004144DD  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl 7) or (c2 shr $19) + b2;
004144E0  MOV EAX,DWORD PTR SS:[EBP-5C]            
004144E3  SHL EAX,7
004144E6  MOV ECX,DWORD PTR SS:[EBP-5C]
004144E9  SHR ECX,19
004144EC  OR EAX,ECX
004144EE  ADD EAX,DWORD PTR SS:[EBP-50]
004144F1  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
004144F4  MOV EAX,DWORD PTR SS:[EBP-74]            
004144F7  SHL EAX,0A
004144FA  MOV ECX,DWORD PTR SS:[EBP-74]
004144FD  SHR ECX,16
00414500  OR EAX,ECX
00414502  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(d2) or c2) xor e2 + Name_64[1] + b2 + $6D703EF3;
00414505  MOV EAX,DWORD PTR SS:[EBP-68]            
00414508  NOT EAX
0041450A  OR EAX,DWORD PTR SS:[EBP-5C]
0041450D  XOR EAX,DWORD PTR SS:[EBP-74]
00414510  MOV ECX,DWORD PTR SS:[EBP+C]
00414513  ADD EAX,DWORD PTR DS:[ECX+4]
00414516  MOV EDX,DWORD PTR SS:[EBP-50]
00414519  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414520  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $F) or (b2 shr $11) + a2;
00414523  MOV EAX,DWORD PTR SS:[EBP-50]            
00414526  SHL EAX,0F
00414529  MOV ECX,DWORD PTR SS:[EBP-50]
0041452C  SHR ECX,11
0041452F  OR EAX,ECX
00414531  ADD EAX,DWORD PTR SS:[EBP-44]
00414534  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414537  MOV EAX,DWORD PTR SS:[EBP-68]            
0041453A  SHL EAX,0A
0041453D  MOV ECX,DWORD PTR SS:[EBP-68]
00414540  SHR ECX,16
00414543  OR EAX,ECX
00414545  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(c2) or b2) xor d2 + Name_64[3] + a2 + $6D703EF3;
00414548  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041454B  NOT EAX
0041454D  OR EAX,DWORD PTR SS:[EBP-50]
00414550  XOR EAX,DWORD PTR SS:[EBP-68]
00414553  MOV ECX,DWORD PTR SS:[EBP+C]
00414556  ADD EAX,DWORD PTR DS:[ECX+C]
00414559  MOV EDX,DWORD PTR SS:[EBP-44]
0041455C  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414563  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl $B) or (a2 shr $15) + e2;
00414566  MOV EAX,DWORD PTR SS:[EBP-44]            
00414569  SHL EAX,0B
0041456C  MOV ECX,DWORD PTR SS:[EBP-44]
0041456F  SHR ECX,15
00414572  OR EAX,ECX
00414574  ADD EAX,DWORD PTR SS:[EBP-74]
00414577  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
0041457A  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041457D  SHL EAX,0A
00414580  MOV ECX,DWORD PTR SS:[EBP-5C]
00414583  SHR ECX,16
00414586  OR EAX,ECX
00414588  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(b2) or a2) xor c2 + Name_64[7] + e2 + $6D703EF3;
0041458B  MOV EAX,DWORD PTR SS:[EBP-50]            
0041458E  NOT EAX
00414590  OR EAX,DWORD PTR SS:[EBP-44]
00414593  XOR EAX,DWORD PTR SS:[EBP-5C]
00414596  MOV ECX,DWORD PTR SS:[EBP+C]
00414599  ADD EAX,DWORD PTR DS:[ECX+1C]
0041459C  MOV EDX,DWORD PTR SS:[EBP-74]
0041459F  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004145A6  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl 8) or (e2 shr $18) + d2;
004145A9  MOV EAX,DWORD PTR SS:[EBP-74]            
004145AC  SHL EAX,8
004145AF  MOV ECX,DWORD PTR SS:[EBP-74]
004145B2  SHR ECX,18
004145B5  OR EAX,ECX
004145B7  ADD EAX,DWORD PTR SS:[EBP-68]
004145BA  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
004145BD  MOV EAX,DWORD PTR SS:[EBP-50]            
004145C0  SHL EAX,0A
004145C3  MOV ECX,DWORD PTR SS:[EBP-50]
004145C6  SHR ECX,16
004145C9  OR EAX,ECX
004145CB  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(a2) or e2) xor b2 + Name_64[14] + d2 + $6D703EF3;
004145CE  MOV EAX,DWORD PTR SS:[EBP-44]            
004145D1  NOT EAX
004145D3  OR EAX,DWORD PTR SS:[EBP-74]
004145D6  XOR EAX,DWORD PTR SS:[EBP-50]
004145D9  MOV ECX,DWORD PTR SS:[EBP+C]
004145DC  ADD EAX,DWORD PTR DS:[ECX+38]
004145DF  MOV EDX,DWORD PTR SS:[EBP-68]
004145E2  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004145E9  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 6) or (d2 shr $1A) + c2;
004145EC  MOV EAX,DWORD PTR SS:[EBP-68]            
004145EF  SHL EAX,6
004145F2  MOV ECX,DWORD PTR SS:[EBP-68]
004145F5  SHR ECX,1A
004145F8  OR EAX,ECX
004145FA  ADD EAX,DWORD PTR SS:[EBP-5C]
004145FD  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414600  MOV EAX,DWORD PTR SS:[EBP-44]            
00414603  SHL EAX,0A
00414606  MOV ECX,DWORD PTR SS:[EBP-44]
00414609  SHR ECX,16
0041460C  OR EAX,ECX
0041460E  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(e2) or d2) xor a2 + Name_64[6] + c2 + $6D703EF3;
00414611  MOV EAX,DWORD PTR SS:[EBP-74]            
00414614  NOT EAX
00414616  OR EAX,DWORD PTR SS:[EBP-68]
00414619  XOR EAX,DWORD PTR SS:[EBP-44]
0041461C  MOV ECX,DWORD PTR SS:[EBP+C]
0041461F  ADD EAX,DWORD PTR DS:[ECX+18]
00414622  MOV EDX,DWORD PTR SS:[EBP-5C]
00414625  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
0041462C  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl 6) or (c2 shr $1A) + b2;
0041462F  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414632  SHL EAX,6
00414635  MOV ECX,DWORD PTR SS:[EBP-5C]
00414638  SHR ECX,1A
0041463B  OR EAX,ECX
0041463D  ADD EAX,DWORD PTR SS:[EBP-50]
00414640  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414643  MOV EAX,DWORD PTR SS:[EBP-74]            
00414646  SHL EAX,0A
00414649  MOV ECX,DWORD PTR SS:[EBP-74]
0041464C  SHR ECX,16
0041464F  OR EAX,ECX
00414651  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(d2) or c2) xor e2 + Name_64[9] + b2 + $6D703EF3;
00414654  MOV EAX,DWORD PTR SS:[EBP-68]            
00414657  NOT EAX
00414659  OR EAX,DWORD PTR SS:[EBP-5C]
0041465C  XOR EAX,DWORD PTR SS:[EBP-74]
0041465F  MOV ECX,DWORD PTR SS:[EBP+C]
00414662  ADD EAX,DWORD PTR DS:[ECX+24]
00414665  MOV EDX,DWORD PTR SS:[EBP-50]
00414668  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
0041466F  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $E) or (b2 shr $12) + a2;
00414672  MOV EAX,DWORD PTR SS:[EBP-50]            
00414675  SHL EAX,0E
00414678  MOV ECX,DWORD PTR SS:[EBP-50]
0041467B  SHR ECX,12
0041467E  OR EAX,ECX
00414680  ADD EAX,DWORD PTR SS:[EBP-44]
00414683  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414686  MOV EAX,DWORD PTR SS:[EBP-68]            
00414689  SHL EAX,0A
0041468C  MOV ECX,DWORD PTR SS:[EBP-68]
0041468F  SHR ECX,16
00414692  OR EAX,ECX
00414694  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(c2) or b2) xor d2 + Name_64[11] + a2 + $6D703EF3;
00414697  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041469A  NOT EAX
0041469C  OR EAX,DWORD PTR SS:[EBP-50]
0041469F  XOR EAX,DWORD PTR SS:[EBP-68]
004146A2  MOV ECX,DWORD PTR SS:[EBP+C]
004146A5  ADD EAX,DWORD PTR DS:[ECX+2C]
004146A8  MOV EDX,DWORD PTR SS:[EBP-44]
004146AB  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004146B2  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl $C) or (a2 shr $14) + e2;
004146B5  MOV EAX,DWORD PTR SS:[EBP-44]            
004146B8  SHL EAX,0C
004146BB  MOV ECX,DWORD PTR SS:[EBP-44]
004146BE  SHR ECX,14
004146C1  OR EAX,ECX
004146C3  ADD EAX,DWORD PTR SS:[EBP-74]
004146C6  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
004146C9  MOV EAX,DWORD PTR SS:[EBP-5C]            
004146CC  SHL EAX,0A
004146CF  MOV ECX,DWORD PTR SS:[EBP-5C]
004146D2  SHR ECX,16
004146D5  OR EAX,ECX
004146D7  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(b2) or a2) xor c2 + Name_64[8] + e2 + $6D703EF3;
004146DA  MOV EAX,DWORD PTR SS:[EBP-50]            
004146DD  NOT EAX
004146DF  OR EAX,DWORD PTR SS:[EBP-44]
004146E2  XOR EAX,DWORD PTR SS:[EBP-5C]
004146E5  MOV ECX,DWORD PTR SS:[EBP+C]
004146E8  ADD EAX,DWORD PTR DS:[ECX+20]
004146EB  MOV EDX,DWORD PTR SS:[EBP-74]
004146EE  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004146F5  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl $D) or (e2 shr $13) + d2;
004146F8  MOV EAX,DWORD PTR SS:[EBP-74]            
004146FB  SHL EAX,0D
004146FE  MOV ECX,DWORD PTR SS:[EBP-74]
00414701  SHR ECX,13
00414704  OR EAX,ECX
00414706  ADD EAX,DWORD PTR SS:[EBP-68]
00414709  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
0041470C  MOV EAX,DWORD PTR SS:[EBP-50]            
0041470F  SHL EAX,0A
00414712  MOV ECX,DWORD PTR SS:[EBP-50]
00414715  SHR ECX,16
00414718  OR EAX,ECX
0041471A  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(a2) or e2) xor b2 + Name_64[12] + d2 + $6D703EF3;
0041471D  MOV EAX,DWORD PTR SS:[EBP-44]            
00414720  NOT EAX
00414722  OR EAX,DWORD PTR SS:[EBP-74]
00414725  XOR EAX,DWORD PTR SS:[EBP-50]
00414728  MOV ECX,DWORD PTR SS:[EBP+C]
0041472B  ADD EAX,DWORD PTR DS:[ECX+30]
0041472E  MOV EDX,DWORD PTR SS:[EBP-68]
00414731  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414738  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 5) or (d2 shr $1B) + c2;
0041473B  MOV EAX,DWORD PTR SS:[EBP-68]            
0041473E  SHL EAX,5
00414741  MOV ECX,DWORD PTR SS:[EBP-68]
00414744  SHR ECX,1B
00414747  OR EAX,ECX
00414749  ADD EAX,DWORD PTR SS:[EBP-5C]
0041474C  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
0041474F  MOV EAX,DWORD PTR SS:[EBP-44]            
00414752  SHL EAX,0A
00414755  MOV ECX,DWORD PTR SS:[EBP-44]
00414758  SHR ECX,16
0041475B  OR EAX,ECX
0041475D  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(e2) or d2) xor a2 + Name_64[2] + c2 + $6D703EF3;
00414760  MOV EAX,DWORD PTR SS:[EBP-74]            
00414763  NOT EAX
00414765  OR EAX,DWORD PTR SS:[EBP-68]
00414768  XOR EAX,DWORD PTR SS:[EBP-44]
0041476B  MOV ECX,DWORD PTR SS:[EBP+C]
0041476E  ADD EAX,DWORD PTR DS:[ECX+8]
00414771  MOV EDX,DWORD PTR SS:[EBP-5C]
00414774  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
0041477B  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $E) or (c2 shr $12) + b2;
0041477E  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414781  SHL EAX,0E
00414784  MOV ECX,DWORD PTR SS:[EBP-5C]
00414787  SHR ECX,12
0041478A  OR EAX,ECX
0041478C  ADD EAX,DWORD PTR SS:[EBP-50]
0041478F  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414792  MOV EAX,DWORD PTR SS:[EBP-74]            
00414795  SHL EAX,0A
00414798  MOV ECX,DWORD PTR SS:[EBP-74]
0041479B  SHR ECX,16
0041479E  OR EAX,ECX
004147A0  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(d2) or c2) xor e2 + Name_64[10] + b2 + $6D703EF3;
004147A3  MOV EAX,DWORD PTR SS:[EBP-68]            
004147A6  NOT EAX
004147A8  OR EAX,DWORD PTR SS:[EBP-5C]
004147AB  XOR EAX,DWORD PTR SS:[EBP-74]
004147AE  MOV ECX,DWORD PTR SS:[EBP+C]
004147B1  ADD EAX,DWORD PTR DS:[ECX+28]
004147B4  MOV EDX,DWORD PTR SS:[EBP-50]
004147B7  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
004147BE  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $D) or (b2 shr $13) + a2;
004147C1  MOV EAX,DWORD PTR SS:[EBP-50]            
004147C4  SHL EAX,0D
004147C7  MOV ECX,DWORD PTR SS:[EBP-50]
004147CA  SHR ECX,13
004147CD  OR EAX,ECX
004147CF  ADD EAX,DWORD PTR SS:[EBP-44]
004147D2  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
004147D5  MOV EAX,DWORD PTR SS:[EBP-68]            
004147D8  SHL EAX,0A
004147DB  MOV ECX,DWORD PTR SS:[EBP-68]
004147DE  SHR ECX,16
004147E1  OR EAX,ECX
004147E3  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(c2) or b2) xor d2 + Name_64[0] + a2 + $6D703EF3;
004147E6  MOV EAX,DWORD PTR SS:[EBP-5C]            
004147E9  NOT EAX
004147EB  OR EAX,DWORD PTR SS:[EBP-50]
004147EE  XOR EAX,DWORD PTR SS:[EBP-68]
004147F1  MOV ECX,DWORD PTR SS:[EBP+C]
004147F4  ADD EAX,DWORD PTR DS:[ECX]
004147F6  MOV EDX,DWORD PTR SS:[EBP-44]
004147F9  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414800  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl $D) or (a2 shr $13) + e2;
00414803  MOV EAX,DWORD PTR SS:[EBP-44]            
00414806  SHL EAX,0D
00414809  MOV ECX,DWORD PTR SS:[EBP-44]
0041480C  SHR ECX,13
0041480F  OR EAX,ECX
00414811  ADD EAX,DWORD PTR SS:[EBP-74]
00414814  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414817  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041481A  SHL EAX,0A
0041481D  MOV ECX,DWORD PTR SS:[EBP-5C]
00414820  SHR ECX,16
00414823  OR EAX,ECX
00414825  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(b2) or a2) xor c2 + Name_64[4] + e2 + $6D703EF3;
00414828  MOV EAX,DWORD PTR SS:[EBP-50]            
0041482B  NOT EAX
0041482D  OR EAX,DWORD PTR SS:[EBP-44]
00414830  XOR EAX,DWORD PTR SS:[EBP-5C]
00414833  MOV ECX,DWORD PTR SS:[EBP+C]
00414836  ADD EAX,DWORD PTR DS:[ECX+10]
00414839  MOV EDX,DWORD PTR SS:[EBP-74]
0041483C  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414843  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl 7) or (e2 shr $19) + d2;
00414846  MOV EAX,DWORD PTR SS:[EBP-74]            
00414849  SHL EAX,7
0041484C  MOV ECX,DWORD PTR SS:[EBP-74]
0041484F  SHR ECX,19
00414852  OR EAX,ECX
00414854  ADD EAX,DWORD PTR SS:[EBP-68]
00414857  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
0041485A  MOV EAX,DWORD PTR SS:[EBP-50]            
0041485D  SHL EAX,0A
00414860  MOV ECX,DWORD PTR SS:[EBP-50]
00414863  SHR ECX,16
00414866  OR EAX,ECX
00414868  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(a2) or e2) xor b2 + Name_64[13] + d2 + $6D703EF3;
0041486B  MOV EAX,DWORD PTR SS:[EBP-44]            
0041486E  NOT EAX
00414870  OR EAX,DWORD PTR SS:[EBP-74]
00414873  XOR EAX,DWORD PTR SS:[EBP-50]
00414876  MOV ECX,DWORD PTR SS:[EBP+C]
00414879  ADD EAX,DWORD PTR DS:[ECX+34]
0041487C  MOV EDX,DWORD PTR SS:[EBP-68]
0041487F  LEA EAX,DWORD PTR DS:[EDX+EAX+6D703EF3]
00414886  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 5) or (d2 shr $1B) + c2;
00414889  MOV EAX,DWORD PTR SS:[EBP-68]            
0041488C  SHL EAX,5
0041488F  MOV ECX,DWORD PTR SS:[EBP-68]
00414892  SHR ECX,1B
00414895  OR EAX,ECX
00414897  ADD EAX,DWORD PTR SS:[EBP-5C]
0041489A  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
0041489D  MOV EAX,DWORD PTR SS:[EBP-44]            
004148A0  SHL EAX,0A
004148A3  MOV ECX,DWORD PTR SS:[EBP-44]
004148A6  SHR ECX,16
004148A9  OR EAX,ECX
004148AB  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[8] + c2 + $7A6D76E9;
004148AE  MOV EAX,DWORD PTR SS:[EBP-68]            
004148B1  AND EAX,DWORD PTR SS:[EBP-74]
004148B4  MOV ECX,DWORD PTR SS:[EBP-68]
004148B7  NOT ECX
004148B9  AND ECX,DWORD PTR SS:[EBP-44]
004148BC  OR EAX,ECX
004148BE  MOV EDX,DWORD PTR SS:[EBP+C]
004148C1  ADD EAX,DWORD PTR DS:[EDX+20]
004148C4  MOV ECX,DWORD PTR SS:[EBP-5C]
004148C7  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
004148CE  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl $F) or (c2 shr $11) + b2;
004148D1  MOV EAX,DWORD PTR SS:[EBP-5C]            
004148D4  SHL EAX,0F
004148D7  MOV ECX,DWORD PTR SS:[EBP-5C]
004148DA  SHR ECX,11
004148DD  OR EAX,ECX
004148DF  ADD EAX,DWORD PTR SS:[EBP-50]
004148E2  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
004148E5  MOV EAX,DWORD PTR SS:[EBP-74]            
004148E8  SHL EAX,0A
004148EB  MOV ECX,DWORD PTR SS:[EBP-74]
004148EE  SHR ECX,16
004148F1  OR EAX,ECX
004148F3  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[6] + b2 + $7A6D76E9;
004148F6  MOV EAX,DWORD PTR SS:[EBP-5C]            
004148F9  AND EAX,DWORD PTR SS:[EBP-68]
004148FC  MOV ECX,DWORD PTR SS:[EBP-5C]
004148FF  NOT ECX
00414901  AND ECX,DWORD PTR SS:[EBP-74]
00414904  OR EAX,ECX
00414906  MOV EDX,DWORD PTR SS:[EBP+C]
00414909  ADD EAX,DWORD PTR DS:[EDX+18]
0041490C  MOV ECX,DWORD PTR SS:[EBP-50]
0041490F  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414916  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl 5) or (b2 shr $1B) + a2;
00414919  MOV EAX,DWORD PTR SS:[EBP-50]            
0041491C  SHL EAX,5
0041491F  MOV ECX,DWORD PTR SS:[EBP-50]
00414922  SHR ECX,1B
00414925  OR EAX,ECX
00414927  ADD EAX,DWORD PTR SS:[EBP-44]
0041492A  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
0041492D  MOV EAX,DWORD PTR SS:[EBP-68]            
00414930  SHL EAX,0A
00414933  MOV ECX,DWORD PTR SS:[EBP-68]
00414936  SHR ECX,16
00414939  OR EAX,ECX
0041493B  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[4] + a2 + $7A6D76E9;
0041493E  MOV EAX,DWORD PTR SS:[EBP-50]            
00414941  AND EAX,DWORD PTR SS:[EBP-5C]
00414944  MOV ECX,DWORD PTR SS:[EBP-50]
00414947  NOT ECX
00414949  AND ECX,DWORD PTR SS:[EBP-68]
0041494C  OR EAX,ECX
0041494E  MOV EDX,DWORD PTR SS:[EBP+C]
00414951  ADD EAX,DWORD PTR DS:[EDX+10]
00414954  MOV ECX,DWORD PTR SS:[EBP-44]
00414957  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
0041495E  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl 8) or (a2 shr $18) + e2;
00414961  MOV EAX,DWORD PTR SS:[EBP-44]            
00414964  SHL EAX,8
00414967  MOV ECX,DWORD PTR SS:[EBP-44]
0041496A  SHR ECX,18
0041496D  OR EAX,ECX
0041496F  ADD EAX,DWORD PTR SS:[EBP-74]
00414972  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414975  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414978  SHL EAX,0A
0041497B  MOV ECX,DWORD PTR SS:[EBP-5C]
0041497E  SHR ECX,16
00414981  OR EAX,ECX
00414983  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[1] + e2 + $7A6D76E9;
00414986  MOV EAX,DWORD PTR SS:[EBP-44]            
00414989  AND EAX,DWORD PTR SS:[EBP-50]
0041498C  MOV ECX,DWORD PTR SS:[EBP-44]
0041498F  NOT ECX
00414991  AND ECX,DWORD PTR SS:[EBP-5C]
00414994  OR EAX,ECX
00414996  MOV EDX,DWORD PTR SS:[EBP+C]
00414999  ADD EAX,DWORD PTR DS:[EDX+4]
0041499C  MOV ECX,DWORD PTR SS:[EBP-74]
0041499F  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
004149A6  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl $B) or (e2 shr $15) + d2;
004149A9  MOV EAX,DWORD PTR SS:[EBP-74]            
004149AC  SHL EAX,0B
004149AF  MOV ECX,DWORD PTR SS:[EBP-74]
004149B2  SHR ECX,15
004149B5  OR EAX,ECX
004149B7  ADD EAX,DWORD PTR SS:[EBP-68]
004149BA  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
004149BD  MOV EAX,DWORD PTR SS:[EBP-50]            
004149C0  SHL EAX,0A
004149C3  MOV ECX,DWORD PTR SS:[EBP-50]
004149C6  SHR ECX,16
004149C9  OR EAX,ECX
004149CB  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[3] + d2 + $7A6D76E9;
004149CE  MOV EAX,DWORD PTR SS:[EBP-74]            
004149D1  AND EAX,DWORD PTR SS:[EBP-44]
004149D4  MOV ECX,DWORD PTR SS:[EBP-74]
004149D7  NOT ECX
004149D9  AND ECX,DWORD PTR SS:[EBP-50]
004149DC  OR EAX,ECX
004149DE  MOV EDX,DWORD PTR SS:[EBP+C]
004149E1  ADD EAX,DWORD PTR DS:[EDX+C]
004149E4  MOV ECX,DWORD PTR SS:[EBP-68]
004149E7  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
004149EE  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl $E) or (d2 shr $12) + c2;
004149F1  MOV EAX,DWORD PTR SS:[EBP-68]            
004149F4  SHL EAX,0E
004149F7  MOV ECX,DWORD PTR SS:[EBP-68]
004149FA  SHR ECX,12
004149FD  OR EAX,ECX
004149FF  ADD EAX,DWORD PTR SS:[EBP-5C]
00414A02  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414A05  MOV EAX,DWORD PTR SS:[EBP-44]            
00414A08  SHL EAX,0A
00414A0B  MOV ECX,DWORD PTR SS:[EBP-44]
00414A0E  SHR ECX,16
00414A11  OR EAX,ECX
00414A13  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[11] + c2 + $7A6D76E9;
00414A16  MOV EAX,DWORD PTR SS:[EBP-68]            
00414A19  AND EAX,DWORD PTR SS:[EBP-74]
00414A1C  MOV ECX,DWORD PTR SS:[EBP-68]
00414A1F  NOT ECX
00414A21  AND ECX,DWORD PTR SS:[EBP-44]
00414A24  OR EAX,ECX
00414A26  MOV EDX,DWORD PTR SS:[EBP+C]
00414A29  ADD EAX,DWORD PTR DS:[EDX+2C]
00414A2C  MOV ECX,DWORD PTR SS:[EBP-5C]
00414A2F  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414A36  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl $E) or (c2 shr $12) + b2;
00414A39  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414A3C  SHL EAX,0E
00414A3F  MOV ECX,DWORD PTR SS:[EBP-5C]
00414A42  SHR ECX,12
00414A45  OR EAX,ECX
00414A47  ADD EAX,DWORD PTR SS:[EBP-50]
00414A4A  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414A4D  MOV EAX,DWORD PTR SS:[EBP-74]            
00414A50  SHL EAX,0A
00414A53  MOV ECX,DWORD PTR SS:[EBP-74]
00414A56  SHR ECX,16
00414A59  OR EAX,ECX
00414A5B  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[15] + b2 + $7A6D76E9;
00414A5E  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414A61  AND EAX,DWORD PTR SS:[EBP-68]
00414A64  MOV ECX,DWORD PTR SS:[EBP-5C]
00414A67  NOT ECX
00414A69  AND ECX,DWORD PTR SS:[EBP-74]
00414A6C  OR EAX,ECX
00414A6E  MOV EDX,DWORD PTR SS:[EBP+C]
00414A71  ADD EAX,DWORD PTR DS:[EDX+3C]
00414A74  MOV ECX,DWORD PTR SS:[EBP-50]
00414A77  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414A7E  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl 6) or (b2 shr $1A) + a2;
00414A81  MOV EAX,DWORD PTR SS:[EBP-50]            
00414A84  SHL EAX,6
00414A87  MOV ECX,DWORD PTR SS:[EBP-50]
00414A8A  SHR ECX,1A
00414A8D  OR EAX,ECX
00414A8F  ADD EAX,DWORD PTR SS:[EBP-44]
00414A92  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414A95  MOV EAX,DWORD PTR SS:[EBP-68]            
00414A98  SHL EAX,0A
00414A9B  MOV ECX,DWORD PTR SS:[EBP-68]
00414A9E  SHR ECX,16
00414AA1  OR EAX,ECX
00414AA3  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[0] + a2 + $7A6D76E9;
00414AA6  MOV EAX,DWORD PTR SS:[EBP-50]            
00414AA9  AND EAX,DWORD PTR SS:[EBP-5C]
00414AAC  MOV ECX,DWORD PTR SS:[EBP-50]
00414AAF  NOT ECX
00414AB1  AND ECX,DWORD PTR SS:[EBP-68]
00414AB4  OR EAX,ECX
00414AB6  MOV EDX,DWORD PTR SS:[EBP+C]
00414AB9  ADD EAX,DWORD PTR DS:[EDX]
00414ABB  MOV ECX,DWORD PTR SS:[EBP-44]
00414ABE  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414AC5  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl $E) or (a2 shr $12) + e2;
00414AC8  MOV EAX,DWORD PTR SS:[EBP-44]            
00414ACB  SHL EAX,0E
00414ACE  MOV ECX,DWORD PTR SS:[EBP-44]
00414AD1  SHR ECX,12
00414AD4  OR EAX,ECX
00414AD6  ADD EAX,DWORD PTR SS:[EBP-74]
00414AD9  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414ADC  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414ADF  SHL EAX,0A
00414AE2  MOV ECX,DWORD PTR SS:[EBP-5C]
00414AE5  SHR ECX,16
00414AE8  OR EAX,ECX
00414AEA  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[5] + e2 + $7A6D76E9;
00414AED  MOV EAX,DWORD PTR SS:[EBP-44]            
00414AF0  AND EAX,DWORD PTR SS:[EBP-50]
00414AF3  MOV ECX,DWORD PTR SS:[EBP-44]
00414AF6  NOT ECX
00414AF8  AND ECX,DWORD PTR SS:[EBP-5C]
00414AFB  OR EAX,ECX
00414AFD  MOV EDX,DWORD PTR SS:[EBP+C]
00414B00  ADD EAX,DWORD PTR DS:[EDX+14]
00414B03  MOV ECX,DWORD PTR SS:[EBP-74]
00414B06  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414B0D  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl 6) or (e2 shr $1A) + d2;
00414B10  MOV EAX,DWORD PTR SS:[EBP-74]            
00414B13  SHL EAX,6
00414B16  MOV ECX,DWORD PTR SS:[EBP-74]
00414B19  SHR ECX,1A
00414B1C  OR EAX,ECX
00414B1E  ADD EAX,DWORD PTR SS:[EBP-68]
00414B21  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00414B24  MOV EAX,DWORD PTR SS:[EBP-50]            
00414B27  SHL EAX,0A
00414B2A  MOV ECX,DWORD PTR SS:[EBP-50]
00414B2D  SHR ECX,16
00414B30  OR EAX,ECX
00414B32  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[12] + d2 + $7A6D76E9;
00414B35  MOV EAX,DWORD PTR SS:[EBP-74]            
00414B38  AND EAX,DWORD PTR SS:[EBP-44]
00414B3B  MOV ECX,DWORD PTR SS:[EBP-74]
00414B3E  NOT ECX
00414B40  AND ECX,DWORD PTR SS:[EBP-50]
00414B43  OR EAX,ECX
00414B45  MOV EDX,DWORD PTR SS:[EBP+C]
00414B48  ADD EAX,DWORD PTR DS:[EDX+30]
00414B4B  MOV ECX,DWORD PTR SS:[EBP-68]
00414B4E  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414B55  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl 9) or (d2 shr $17) + c2;
00414B58  MOV EAX,DWORD PTR SS:[EBP-68]            
00414B5B  SHL EAX,9
00414B5E  MOV ECX,DWORD PTR SS:[EBP-68]
00414B61  SHR ECX,17
00414B64  OR EAX,ECX
00414B66  ADD EAX,DWORD PTR SS:[EBP-5C]
00414B69  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414B6C  MOV EAX,DWORD PTR SS:[EBP-44]            
00414B6F  SHL EAX,0A
00414B72  MOV ECX,DWORD PTR SS:[EBP-44]
00414B75  SHR ECX,16
00414B78  OR EAX,ECX
00414B7A  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[2] + c2 + $7A6D76E9;
00414B7D  MOV EAX,DWORD PTR SS:[EBP-68]            
00414B80  AND EAX,DWORD PTR SS:[EBP-74]
00414B83  MOV ECX,DWORD PTR SS:[EBP-68]
00414B86  NOT ECX
00414B88  AND ECX,DWORD PTR SS:[EBP-44]
00414B8B  OR EAX,ECX
00414B8D  MOV EDX,DWORD PTR SS:[EBP+C]
00414B90  ADD EAX,DWORD PTR DS:[EDX+8]
00414B93  MOV ECX,DWORD PTR SS:[EBP-5C]
00414B96  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414B9D  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl $C) or (c2 shr $14) + b2;
00414BA0  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414BA3  SHL EAX,0C
00414BA6  MOV ECX,DWORD PTR SS:[EBP-5C]
00414BA9  SHR ECX,14
00414BAC  OR EAX,ECX
00414BAE  ADD EAX,DWORD PTR SS:[EBP-50]
00414BB1  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414BB4  MOV EAX,DWORD PTR SS:[EBP-74]            
00414BB7  SHL EAX,0A
00414BBA  MOV ECX,DWORD PTR SS:[EBP-74]
00414BBD  SHR ECX,16
00414BC0  OR EAX,ECX
00414BC2  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[13] + b2 + $7A6D76E9;
00414BC5  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414BC8  AND EAX,DWORD PTR SS:[EBP-68]
00414BCB  MOV ECX,DWORD PTR SS:[EBP-5C]
00414BCE  NOT ECX
00414BD0  AND ECX,DWORD PTR SS:[EBP-74]
00414BD3  OR EAX,ECX
00414BD5  MOV EDX,DWORD PTR SS:[EBP+C]
00414BD8  ADD EAX,DWORD PTR DS:[EDX+34]
00414BDB  MOV ECX,DWORD PTR SS:[EBP-50]
00414BDE  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414BE5  MOV DWORD PTR SS:[EBP-50],EDX

//b2 := (b2 shl 9) or (b2 shr $17) + a2;
00414BE8  MOV EAX,DWORD PTR SS:[EBP-50]            
00414BEB  SHL EAX,9
00414BEE  MOV ECX,DWORD PTR SS:[EBP-50]
00414BF1  SHR ECX,17
00414BF4  OR EAX,ECX
00414BF6  ADD EAX,DWORD PTR SS:[EBP-44]
00414BF9  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414BFC  MOV EAX,DWORD PTR SS:[EBP-68]            
00414BFF  SHL EAX,0A
00414C02  MOV ECX,DWORD PTR SS:[EBP-68]
00414C05  SHR ECX,16
00414C08  OR EAX,ECX
00414C0A  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[9] + a2 + $7A6D76E9;
00414C0D  MOV EAX,DWORD PTR SS:[EBP-50]            
00414C10  AND EAX,DWORD PTR SS:[EBP-5C]
00414C13  MOV ECX,DWORD PTR SS:[EBP-50]
00414C16  NOT ECX
00414C18  AND ECX,DWORD PTR SS:[EBP-68]
00414C1B  OR EAX,ECX
00414C1D  MOV EDX,DWORD PTR SS:[EBP+C]
00414C20  ADD EAX,DWORD PTR DS:[EDX+24]
00414C23  MOV ECX,DWORD PTR SS:[EBP-44]
00414C26  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414C2D  MOV DWORD PTR SS:[EBP-44],EDX

//a2 := (a2 shl $C) or (a2 shr $14) + e2;
00414C30  MOV EAX,DWORD PTR SS:[EBP-44]            
00414C33  SHL EAX,0C
00414C36  MOV ECX,DWORD PTR SS:[EBP-44]
00414C39  SHR ECX,14
00414C3C  OR EAX,ECX
00414C3E  ADD EAX,DWORD PTR SS:[EBP-74]
00414C41  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414C44  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414C47  SHL EAX,0A
00414C4A  MOV ECX,DWORD PTR SS:[EBP-5C]
00414C4D  SHR ECX,16
00414C50  OR EAX,ECX
00414C52  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[7] + e2 + $7A6D76E9;
00414C55  MOV EAX,DWORD PTR SS:[EBP-44]            
00414C58  AND EAX,DWORD PTR SS:[EBP-50]
00414C5B  MOV ECX,DWORD PTR SS:[EBP-44]
00414C5E  NOT ECX
00414C60  AND ECX,DWORD PTR SS:[EBP-5C]
00414C63  OR EAX,ECX
00414C65  MOV EDX,DWORD PTR SS:[EBP+C]
00414C68  ADD EAX,DWORD PTR DS:[EDX+1C]
00414C6B  MOV ECX,DWORD PTR SS:[EBP-74]
00414C6E  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414C75  MOV DWORD PTR SS:[EBP-74],EDX

//e2 := (e2 shl 5) or (e2 shr $1B) + d2;
00414C78  MOV EAX,DWORD PTR SS:[EBP-74]            
00414C7B  SHL EAX,5
00414C7E  MOV ECX,DWORD PTR SS:[EBP-74]
00414C81  SHR ECX,1B
00414C84  OR EAX,ECX
00414C86  ADD EAX,DWORD PTR SS:[EBP-68]
00414C89  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00414C8C  MOV EAX,DWORD PTR SS:[EBP-50]            
00414C8F  SHL EAX,0A
00414C92  MOV ECX,DWORD PTR SS:[EBP-50]
00414C95  SHR ECX,16
00414C98  OR EAX,ECX
00414C9A  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[10] + d2 + $7A6D76E9;
00414C9D  MOV EAX,DWORD PTR SS:[EBP-74]            
00414CA0  AND EAX,DWORD PTR SS:[EBP-44]
00414CA3  MOV ECX,DWORD PTR SS:[EBP-74]
00414CA6  NOT ECX
00414CA8  AND ECX,DWORD PTR SS:[EBP-50]
00414CAB  OR EAX,ECX
00414CAD  MOV EDX,DWORD PTR SS:[EBP+C]
00414CB0  ADD EAX,DWORD PTR DS:[EDX+28]
00414CB3  MOV ECX,DWORD PTR SS:[EBP-68]
00414CB6  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414CBD  MOV DWORD PTR SS:[EBP-68],EDX

//d2 := (d2 shl $F) or (d2 shr $11) + c2;
00414CC0  MOV EAX,DWORD PTR SS:[EBP-68]            
00414CC3  SHL EAX,0F
00414CC6  MOV ECX,DWORD PTR SS:[EBP-68]
00414CC9  SHR ECX,11
00414CCC  OR EAX,ECX
00414CCE  ADD EAX,DWORD PTR SS:[EBP-5C]
00414CD1  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414CD4  MOV EAX,DWORD PTR SS:[EBP-44]            
00414CD7  SHL EAX,0A
00414CDA  MOV ECX,DWORD PTR SS:[EBP-44]
00414CDD  SHR ECX,16
00414CE0  OR EAX,ECX
00414CE2  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[14] + c2 + $7A6D76E9;
00414CE5  MOV EAX,DWORD PTR SS:[EBP-68]            
00414CE8  AND EAX,DWORD PTR SS:[EBP-74]
00414CEB  MOV ECX,DWORD PTR SS:[EBP-68]
00414CEE  NOT ECX
00414CF0  AND ECX,DWORD PTR SS:[EBP-44]
00414CF3  OR EAX,ECX
00414CF5  MOV EDX,DWORD PTR SS:[EBP+C]
00414CF8  ADD EAX,DWORD PTR DS:[EDX+38]
00414CFB  MOV ECX,DWORD PTR SS:[EBP-5C]
00414CFE  LEA EDX,DWORD PTR DS:[ECX+EAX+7A6D76E9]
00414D05  MOV DWORD PTR SS:[EBP-5C],EDX

//c2 := (c2 shl 8) or (c2 shr $18) + b2;
00414D08  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414D0B  SHL EAX,8
00414D0E  MOV ECX,DWORD PTR SS:[EBP-5C]
00414D11  SHR ECX,18
00414D14  OR EAX,ECX
00414D16  ADD EAX,DWORD PTR SS:[EBP-50]
00414D19  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414D1C  MOV EAX,DWORD PTR SS:[EBP-74]            
00414D1F  SHL EAX,0A
00414D22  MOV ECX,DWORD PTR SS:[EBP-74]
00414D25  SHR ECX,16
00414D28  OR EAX,ECX
00414D2A  MOV DWORD PTR SS:[EBP-74],EAX

//a2 := (not(d2) or c2) xor b2 + Name_64[5] + a2 + $50A28BE6;
00414D2D  MOV EAX,DWORD PTR SS:[EBP-68]            
00414D30  NOT EAX
00414D32  OR EAX,DWORD PTR SS:[EBP-5C]
00414D35  XOR EAX,DWORD PTR SS:[EBP-50]
00414D38  MOV ECX,DWORD PTR SS:[EBP+C]
00414D3B  ADD EAX,DWORD PTR DS:[ECX+14]
00414D3E  MOV EDX,DWORD PTR SS:[EBP-44]
00414D41  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414D48  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl 8) or (a2 shr $18) + e2;
00414D4B  MOV EAX,DWORD PTR SS:[EBP-44]            
00414D4E  SHL EAX,8
00414D51  MOV ECX,DWORD PTR SS:[EBP-44]
00414D54  SHR ECX,18
00414D57  OR EAX,ECX
00414D59  ADD EAX,DWORD PTR SS:[EBP-74]
00414D5C  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414D5F  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414D62  SHL EAX,0A
00414D65  MOV ECX,DWORD PTR SS:[EBP-5C]
00414D68  SHR ECX,16
00414D6B  OR EAX,ECX
00414D6D  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(c2) or b2) xor a2 + Name_64[14] + e2 + $50A28BE6;
00414D70  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414D73  NOT EAX
00414D75  OR EAX,DWORD PTR SS:[EBP-50]
00414D78  XOR EAX,DWORD PTR SS:[EBP-44]
00414D7B  MOV ECX,DWORD PTR SS:[EBP+C]
00414D7E  ADD EAX,DWORD PTR DS:[ECX+38]
00414D81  MOV EDX,DWORD PTR SS:[EBP-74]
00414D84  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414D8B  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl 9) or (e2 shr $17) + d2;
00414D8E  MOV EAX,DWORD PTR SS:[EBP-74]            
00414D91  SHL EAX,9
00414D94  MOV ECX,DWORD PTR SS:[EBP-74]
00414D97  SHR ECX,17
00414D9A  OR EAX,ECX
00414D9C  ADD EAX,DWORD PTR SS:[EBP-68]
00414D9F  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00414DA2  MOV EAX,DWORD PTR SS:[EBP-50]            
00414DA5  SHL EAX,0A
00414DA8  MOV ECX,DWORD PTR SS:[EBP-50]
00414DAB  SHR ECX,16
00414DAE  OR EAX,ECX
00414DB0  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(b2) or a2) xor e2 + Name_64[7] + d2 + $50A28BE6;
00414DB3  MOV EAX,DWORD PTR SS:[EBP-50]            
00414DB6  NOT EAX
00414DB8  OR EAX,DWORD PTR SS:[EBP-44]
00414DBB  XOR EAX,DWORD PTR SS:[EBP-74]
00414DBE  MOV ECX,DWORD PTR SS:[EBP+C]
00414DC1  ADD EAX,DWORD PTR DS:[ECX+1C]
00414DC4  MOV EDX,DWORD PTR SS:[EBP-68]
00414DC7  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414DCE  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 9) or (d2 shr $17) + c2;
00414DD1  MOV EAX,DWORD PTR SS:[EBP-68]            
00414DD4  SHL EAX,9
00414DD7  MOV ECX,DWORD PTR SS:[EBP-68]
00414DDA  SHR ECX,17
00414DDD  OR EAX,ECX
00414DDF  ADD EAX,DWORD PTR SS:[EBP-5C]
00414DE2  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414DE5  MOV EAX,DWORD PTR SS:[EBP-44]            
00414DE8  SHL EAX,0A
00414DEB  MOV ECX,DWORD PTR SS:[EBP-44]
00414DEE  SHR ECX,16
00414DF1  OR EAX,ECX
00414DF3  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(a2) or e2) xor d2 + Name_64[0] + c2 + $50A28BE6;
00414DF6  MOV EAX,DWORD PTR SS:[EBP-44]            
00414DF9  NOT EAX
00414DFB  OR EAX,DWORD PTR SS:[EBP-74]
00414DFE  XOR EAX,DWORD PTR SS:[EBP-68]
00414E01  MOV ECX,DWORD PTR SS:[EBP+C]
00414E04  ADD EAX,DWORD PTR DS:[ECX]
00414E06  MOV EDX,DWORD PTR SS:[EBP-5C]
00414E09  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414E10  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $B) or (c2 shr $15) + b2;
00414E13  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414E16  SHL EAX,0B
00414E19  MOV ECX,DWORD PTR SS:[EBP-5C]
00414E1C  SHR ECX,15
00414E1F  OR EAX,ECX
00414E21  ADD EAX,DWORD PTR SS:[EBP-50]
00414E24  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414E27  MOV EAX,DWORD PTR SS:[EBP-74]            
00414E2A  SHL EAX,0A
00414E2D  MOV ECX,DWORD PTR SS:[EBP-74]
00414E30  SHR ECX,16
00414E33  OR EAX,ECX
00414E35  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(e2) or d2) xor c2 + Name_64[9] + b2 + $50A28BE6;
00414E38  MOV EAX,DWORD PTR SS:[EBP-74]            
00414E3B  NOT EAX
00414E3D  OR EAX,DWORD PTR SS:[EBP-68]
00414E40  XOR EAX,DWORD PTR SS:[EBP-5C]
00414E43  MOV ECX,DWORD PTR SS:[EBP+C]
00414E46  ADD EAX,DWORD PTR DS:[ECX+24]
00414E49  MOV EDX,DWORD PTR SS:[EBP-50]
00414E4C  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414E53  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $D) or (b2 shr $13) + a2;
00414E56  MOV EAX,DWORD PTR SS:[EBP-50]            
00414E59  SHL EAX,0D
00414E5C  MOV ECX,DWORD PTR SS:[EBP-50]
00414E5F  SHR ECX,13
00414E62  OR EAX,ECX
00414E64  ADD EAX,DWORD PTR SS:[EBP-44]
00414E67  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414E6A  MOV EAX,DWORD PTR SS:[EBP-68]            
00414E6D  SHL EAX,0A
00414E70  MOV ECX,DWORD PTR SS:[EBP-68]
00414E73  SHR ECX,16
00414E76  OR EAX,ECX
00414E78  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(d2) or c2) xor b2 + Name_64[2] + a2 + $50A28BE6;
00414E7B  MOV EAX,DWORD PTR SS:[EBP-68]            
00414E7E  NOT EAX
00414E80  OR EAX,DWORD PTR SS:[EBP-5C]
00414E83  XOR EAX,DWORD PTR SS:[EBP-50]
00414E86  MOV ECX,DWORD PTR SS:[EBP+C]
00414E89  ADD EAX,DWORD PTR DS:[ECX+8]
00414E8C  MOV EDX,DWORD PTR SS:[EBP-44]
00414E8F  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414E96  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl $F) or (a2 shr $11) + e2;
00414E99  MOV EAX,DWORD PTR SS:[EBP-44]            
00414E9C  SHL EAX,0F
00414E9F  MOV ECX,DWORD PTR SS:[EBP-44]
00414EA2  SHR ECX,11
00414EA5  OR EAX,ECX
00414EA7  ADD EAX,DWORD PTR SS:[EBP-74]
00414EAA  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414EAD  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414EB0  SHL EAX,0A
00414EB3  MOV ECX,DWORD PTR SS:[EBP-5C]
00414EB6  SHR ECX,16
00414EB9  OR EAX,ECX
00414EBB  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(c2) or b2) xor a2 + Name_64[11] + e2 + $50A28BE6;
00414EBE  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414EC1  NOT EAX
00414EC3  OR EAX,DWORD PTR SS:[EBP-50]
00414EC6  XOR EAX,DWORD PTR SS:[EBP-44]
00414EC9  MOV ECX,DWORD PTR SS:[EBP+C]
00414ECC  ADD EAX,DWORD PTR DS:[ECX+2C]
00414ECF  MOV EDX,DWORD PTR SS:[EBP-74]
00414ED2  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414ED9  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl $F) or (e2 shr $11) + d2;
00414EDC  MOV EAX,DWORD PTR SS:[EBP-74]            
00414EDF  SHL EAX,0F
00414EE2  MOV ECX,DWORD PTR SS:[EBP-74]
00414EE5  SHR ECX,11
00414EE8  OR EAX,ECX
00414EEA  ADD EAX,DWORD PTR SS:[EBP-68]
00414EED  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
00414EF0  MOV EAX,DWORD PTR SS:[EBP-50]            
00414EF3  SHL EAX,0A
00414EF6  MOV ECX,DWORD PTR SS:[EBP-50]
00414EF9  SHR ECX,16
00414EFC  OR EAX,ECX
00414EFE  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(b2) or a2) xor e2 + Name_64[4] + d2 + $50A28BE6;
00414F01  MOV EAX,DWORD PTR SS:[EBP-50]            
00414F04  NOT EAX
00414F06  OR EAX,DWORD PTR SS:[EBP-44]
00414F09  XOR EAX,DWORD PTR SS:[EBP-74]
00414F0C  MOV ECX,DWORD PTR SS:[EBP+C]
00414F0F  ADD EAX,DWORD PTR DS:[ECX+10]
00414F12  MOV EDX,DWORD PTR SS:[EBP-68]
00414F15  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414F1C  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl 5) or (d2 shr $1B) + c2;
00414F1F  MOV EAX,DWORD PTR SS:[EBP-68]            
00414F22  SHL EAX,5
00414F25  MOV ECX,DWORD PTR SS:[EBP-68]
00414F28  SHR ECX,1B
00414F2B  OR EAX,ECX
00414F2D  ADD EAX,DWORD PTR SS:[EBP-5C]
00414F30  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00414F33  MOV EAX,DWORD PTR SS:[EBP-44]            
00414F36  SHL EAX,0A
00414F39  MOV ECX,DWORD PTR SS:[EBP-44]
00414F3C  SHR ECX,16
00414F3F  OR EAX,ECX
00414F41  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(a2) or e2) xor d2 + Name_64[13] + c2 + $50A28BE6;
00414F44  MOV EAX,DWORD PTR SS:[EBP-44]            
00414F47  NOT EAX
00414F49  OR EAX,DWORD PTR SS:[EBP-74]
00414F4C  XOR EAX,DWORD PTR SS:[EBP-68]
00414F4F  MOV ECX,DWORD PTR SS:[EBP+C]
00414F52  ADD EAX,DWORD PTR DS:[ECX+34]
00414F55  MOV EDX,DWORD PTR SS:[EBP-5C]
00414F58  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414F5F  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl 7) or (c2 shr $19) + b2;
00414F62  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414F65  SHL EAX,7
00414F68  MOV ECX,DWORD PTR SS:[EBP-5C]
00414F6B  SHR ECX,19
00414F6E  OR EAX,ECX
00414F70  ADD EAX,DWORD PTR SS:[EBP-50]
00414F73  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
00414F76  MOV EAX,DWORD PTR SS:[EBP-74]            
00414F79  SHL EAX,0A
00414F7C  MOV ECX,DWORD PTR SS:[EBP-74]
00414F7F  SHR ECX,16
00414F82  OR EAX,ECX
00414F84  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(e2) or d2) xor c2 + Name_64[6] + b2 + $50A28BE6;
00414F87  MOV EAX,DWORD PTR SS:[EBP-74]            
00414F8A  NOT EAX
00414F8C  OR EAX,DWORD PTR SS:[EBP-68]
00414F8F  XOR EAX,DWORD PTR SS:[EBP-5C]
00414F92  MOV ECX,DWORD PTR SS:[EBP+C]
00414F95  ADD EAX,DWORD PTR DS:[ECX+18]
00414F98  MOV EDX,DWORD PTR SS:[EBP-50]
00414F9B  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414FA2  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl 7) or (b2 shr $19) + a2;
00414FA5  MOV EAX,DWORD PTR SS:[EBP-50]            
00414FA8  SHL EAX,7
00414FAB  MOV ECX,DWORD PTR SS:[EBP-50]
00414FAE  SHR ECX,19
00414FB1  OR EAX,ECX
00414FB3  ADD EAX,DWORD PTR SS:[EBP-44]
00414FB6  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00414FB9  MOV EAX,DWORD PTR SS:[EBP-68]            
00414FBC  SHL EAX,0A
00414FBF  MOV ECX,DWORD PTR SS:[EBP-68]
00414FC2  SHR ECX,16
00414FC5  OR EAX,ECX
00414FC7  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(d2) or c2) xor b2 + Name_64[15] + a2 + $50A28BE6;
00414FCA  MOV EAX,DWORD PTR SS:[EBP-68]            
00414FCD  NOT EAX
00414FCF  OR EAX,DWORD PTR SS:[EBP-5C]
00414FD2  XOR EAX,DWORD PTR SS:[EBP-50]
00414FD5  MOV ECX,DWORD PTR SS:[EBP+C]
00414FD8  ADD EAX,DWORD PTR DS:[ECX+3C]
00414FDB  MOV EDX,DWORD PTR SS:[EBP-44]
00414FDE  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00414FE5  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl 8) or (a2 shr $18) + e2;
00414FE8  MOV EAX,DWORD PTR SS:[EBP-44]            
00414FEB  SHL EAX,8
00414FEE  MOV ECX,DWORD PTR SS:[EBP-44]
00414FF1  SHR ECX,18
00414FF4  OR EAX,ECX
00414FF6  ADD EAX,DWORD PTR SS:[EBP-74]
00414FF9  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
00414FFC  MOV EAX,DWORD PTR SS:[EBP-5C]            
00414FFF  SHL EAX,0A
00415002  MOV ECX,DWORD PTR SS:[EBP-5C]
00415005  SHR ECX,16
00415008  OR EAX,ECX
0041500A  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (not(c2) or b2) xor a2 + Name_64[8] + e2 + $50A28BE6;
0041500D  MOV EAX,DWORD PTR SS:[EBP-5C]            
00415010  NOT EAX
00415012  OR EAX,DWORD PTR SS:[EBP-50]
00415015  XOR EAX,DWORD PTR SS:[EBP-44]
00415018  MOV ECX,DWORD PTR SS:[EBP+C]
0041501B  ADD EAX,DWORD PTR DS:[ECX+20]
0041501E  MOV EDX,DWORD PTR SS:[EBP-74]
00415021  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00415028  MOV DWORD PTR SS:[EBP-74],EAX

//e2 := (e2 shl $B) or (e2 shr $15) + d2;
0041502B  MOV EAX,DWORD PTR SS:[EBP-74]            
0041502E  SHL EAX,0B
00415031  MOV ECX,DWORD PTR SS:[EBP-74]
00415034  SHR ECX,15
00415037  OR EAX,ECX
00415039  ADD EAX,DWORD PTR SS:[EBP-68]
0041503C  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (b2 shl $A) or (b2 shr $16);
0041503F  MOV EAX,DWORD PTR SS:[EBP-50]            
00415042  SHL EAX,0A
00415045  MOV ECX,DWORD PTR SS:[EBP-50]
00415048  SHR ECX,16
0041504B  OR EAX,ECX
0041504D  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (not(b2) or a2) xor e2 + Name_64[1] + d2 + $50A28BE6;
00415050  MOV EAX,DWORD PTR SS:[EBP-50]            
00415053  NOT EAX
00415055  OR EAX,DWORD PTR SS:[EBP-44]
00415058  XOR EAX,DWORD PTR SS:[EBP-74]
0041505B  MOV ECX,DWORD PTR SS:[EBP+C]
0041505E  ADD EAX,DWORD PTR DS:[ECX+4]
00415061  MOV EDX,DWORD PTR SS:[EBP-68]
00415064  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
0041506B  MOV DWORD PTR SS:[EBP-68],EAX

//d2 := (d2 shl $E) or (d2 shr $12) + c2;
0041506E  MOV EAX,DWORD PTR SS:[EBP-68]            
00415071  SHL EAX,0E
00415074  MOV ECX,DWORD PTR SS:[EBP-68]
00415077  SHR ECX,12
0041507A  OR EAX,ECX
0041507C  ADD EAX,DWORD PTR SS:[EBP-5C]
0041507F  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (a2 shl $A) or (a2 shr $16);
00415082  MOV EAX,DWORD PTR SS:[EBP-44]            
00415085  SHL EAX,0A
00415088  MOV ECX,DWORD PTR SS:[EBP-44]
0041508B  SHR ECX,16
0041508E  OR EAX,ECX
00415090  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (not(a2) or e2) xor d2 + Name_64[10] + c2 + $50A28BE6;
00415093  MOV EAX,DWORD PTR SS:[EBP-44]            
00415096  NOT EAX
00415098  OR EAX,DWORD PTR SS:[EBP-74]
0041509B  XOR EAX,DWORD PTR SS:[EBP-68]
0041509E  MOV ECX,DWORD PTR SS:[EBP+C]
004150A1  ADD EAX,DWORD PTR DS:[ECX+28]
004150A4  MOV EDX,DWORD PTR SS:[EBP-5C]
004150A7  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
004150AE  MOV DWORD PTR SS:[EBP-5C],EAX

//c2 := (c2 shl $E) or (c2 shr $12) + b2;
004150B1  MOV EAX,DWORD PTR SS:[EBP-5C]            
004150B4  SHL EAX,0E
004150B7  MOV ECX,DWORD PTR SS:[EBP-5C]
004150BA  SHR ECX,12
004150BD  OR EAX,ECX
004150BF  ADD EAX,DWORD PTR SS:[EBP-50]
004150C2  MOV DWORD PTR SS:[EBP-5C],EAX

//e2 := (e2 shl $A) or (e2 shr $16);
004150C5  MOV EAX,DWORD PTR SS:[EBP-74]            
004150C8  SHL EAX,0A
004150CB  MOV ECX,DWORD PTR SS:[EBP-74]
004150CE  SHR ECX,16
004150D1  OR EAX,ECX
004150D3  MOV DWORD PTR SS:[EBP-74],EAX

//b2 := (not(e2) or d2) xor c2 + Name_64[3] + b2 + $50A28BE6;
004150D6  MOV EAX,DWORD PTR SS:[EBP-74]            
004150D9  NOT EAX
004150DB  OR EAX,DWORD PTR SS:[EBP-68]
004150DE  XOR EAX,DWORD PTR SS:[EBP-5C]
004150E1  MOV ECX,DWORD PTR SS:[EBP+C]
004150E4  ADD EAX,DWORD PTR DS:[ECX+C]
004150E7  MOV EDX,DWORD PTR SS:[EBP-50]
004150EA  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
004150F1  MOV DWORD PTR SS:[EBP-50],EAX

//b2 := (b2 shl $C) or (b2 shr $14) + a2;
004150F4  MOV EAX,DWORD PTR SS:[EBP-50]            
004150F7  SHL EAX,0C
004150FA  MOV ECX,DWORD PTR SS:[EBP-50]
004150FD  SHR ECX,14
00415100  OR EAX,ECX
00415102  ADD EAX,DWORD PTR SS:[EBP-44]
00415105  MOV DWORD PTR SS:[EBP-50],EAX

//d2 := (d2 shl $A) or (d2 shr $16);
00415108  MOV EAX,DWORD PTR SS:[EBP-68]            
0041510B  SHL EAX,0A
0041510E  MOV ECX,DWORD PTR SS:[EBP-68]
00415111  SHR ECX,16
00415114  OR EAX,ECX
00415116  MOV DWORD PTR SS:[EBP-68],EAX

//a2 := (not(d2) or c2) xor b2 + Name_64[12] + a2 + $50A28BE6;
00415119  MOV EAX,DWORD PTR SS:[EBP-68]            
0041511C  NOT EAX
0041511E  OR EAX,DWORD PTR SS:[EBP-5C]
00415121  XOR EAX,DWORD PTR SS:[EBP-50]
00415124  MOV ECX,DWORD PTR SS:[EBP+C]
00415127  ADD EAX,DWORD PTR DS:[ECX+30]
0041512A  MOV EDX,DWORD PTR SS:[EBP-44]
0041512D  LEA EAX,DWORD PTR DS:[EDX+EAX+50A28BE6]
00415134  MOV DWORD PTR SS:[EBP-44],EAX

//a2 := (a2 shl 6) or (a2 shr $1A) + e2;
00415137  MOV EAX,DWORD PTR SS:[EBP-44]            
0041513A  SHL EAX,6
0041513D  MOV ECX,DWORD PTR SS:[EBP-44]
00415140  SHR ECX,1A
00415143  OR EAX,ECX
00415145  ADD EAX,DWORD PTR SS:[EBP-74]
00415148  MOV DWORD PTR SS:[EBP-44],EAX

//c2 := (c2 shl $A) or (c2 shr $16);
0041514B  MOV EAX,DWORD PTR SS:[EBP-5C]            
0041514E  SHL EAX,0A
00415151  MOV ECX,DWORD PTR SS:[EBP-5C]
00415154  SHR ECX,16
00415157  OR EAX,ECX
00415159  MOV DWORD PTR SS:[EBP-5C],EAX

//d2 := SHA1_Key[1] + c1 + d2;
0041515C  MOV EAX,DWORD PTR SS:[EBP+8]            
0041515F  MOV ECX,DWORD PTR SS:[EBP-20]
00415162  ADD ECX,DWORD PTR DS:[EAX+4]
00415165  ADD ECX,DWORD PTR SS:[EBP-68]
00415168  MOV DWORD PTR SS:[EBP-68],ECX

//SHA1_Key[1] := SHA1_Key[2] + e1 + e2;
0041516B  MOV EAX,DWORD PTR SS:[EBP+8]            
0041516E  MOV ECX,DWORD PTR DS:[EAX+8]
00415171  ADD ECX,DWORD PTR SS:[EBP-38]
00415174  ADD ECX,DWORD PTR SS:[EBP-74]
00415177  MOV EDX,DWORD PTR SS:[EBP+8]
0041517A  MOV DWORD PTR DS:[EDX+4],ECX

//SHA1_Key[2] := SHA1_Key[3] + d1 + b2;
0041517D  MOV EAX,DWORD PTR SS:[EBP+8]            
00415180  MOV ECX,DWORD PTR DS:[EAX+C]
00415183  ADD ECX,DWORD PTR SS:[EBP-2C]
00415186  ADD ECX,DWORD PTR SS:[EBP-50]
00415189  MOV EDX,DWORD PTR SS:[EBP+8]
0041518C  MOV DWORD PTR DS:[EDX+8],ECX

//SHA1_Key[3] := SHA1_Key[4] + a1 + b2;
0041518F  MOV EAX,DWORD PTR SS:[EBP+8]            
00415192  MOV ECX,DWORD PTR DS:[EAX+10]
00415195  ADD ECX,DWORD PTR SS:[EBP-8]
00415198  ADD ECX,DWORD PTR SS:[EBP-50]
0041519B  MOV EDX,DWORD PTR SS:[EBP+8]
0041519E  MOV DWORD PTR DS:[EDX+C],ECX

//SHA1_Key[4] := SHA1_Key[0] + b1 + c2;
004151A1  MOV EAX,DWORD PTR SS:[EBP+8]            
004151A4  MOV ECX,DWORD PTR DS:[EAX]
004151A6  ADD ECX,DWORD PTR SS:[EBP-14]
004151A9  ADD ECX,DWORD PTR SS:[EBP-5C]
004151AC  MOV EDX,DWORD PTR SS:[EBP+8]
004151AF  MOV DWORD PTR DS:[EDX+10],ECX

//SHA1_Key[0] := d2;
004151B2  MOV EAX,DWORD PTR SS:[EBP+8]            
004151B5  MOV ECX,DWORD PTR SS:[EBP-68]
004151B8  MOV DWORD PTR DS:[EAX],ECX
004151BA  POP EDI
004151BB  POP ESI
004151BC  POP EBX
004151BD  MOV ESP,EBP
004151BF  POP EBP
004151C0  RETN
end;

到这里,我们将SHA1算法也逆向出来了(能看到这里,我相信你们已经和我一样,快晕倒了),长长的一段代码分析的好累,现在这里附上SHA1的源码,BlowFish算法稍后再分析,先休息休息。。。
Procedure SHA1(var SHA1_Key, Name_64:array of DWORD);
var
  a1, b1, c1, d1, e1, a2, b2, c2, d2, e2:DWORD;
begin
  a1 := SHA1_Key[0];
  b1 := SHA1_Key[1];
  c1 := SHA1_Key[2];
  d1 := SHA1_Key[3];
  e1 := SHA1_Key[4];
  a2 := SHA1_Key[0];
  b2 := SHA1_Key[1];
  c2 := SHA1_Key[2];
  d2 := SHA1_Key[3];
  e2 := SHA1_Key[4];
  a1 := b1 xor c1 xor d1 + Name_64[0] + a1;
  a1 := (a1 shl $0B) or (a1 shr $15) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := a1 xor b1 xor c1 + Name_64[1] + e1;
  e1 := (e1 shl $0E) or (e1 shr $12) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := e1 xor a1 xor b1 + Name_64[2] + d1;
  d1 := (d1 shl $0F) or (d1 shr $11) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := d1 xor e1 xor a1 + Name_64[3] + c1;
  c1 := (c1 shl $0C) or (c1 shr $14) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := c1 xor d1 xor e1 + Name_64[4] + b1;
  b1 := (b1 shl 5) or (b1 shr $1B) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := b1 xor c1 xor d1 + Name_64[5] + a1;
  a1 := (a1 shl 8) or (a1 shr $18) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := a1 xor b1 xor c1 + Name_64[6] + e1;
  e1 := (e1 shl 7) or (e1 shr $19) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := e1 xor a1 xor b1 + Name_64[7] + d1;
  d1 := (d1 shl 9) or (d1 shr $17) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := d1 xor e1 xor a1 + Name_64[8] + c1;
  c1 := (c1 shl $0B) or (c1 shr $15) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := c1 xor d1 xor e1 + Name_64[9] + b1;
  b1 := (b1 shl $0D) or (b1 shr $13) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := b1 xor c1 xor d1 + Name_64[10] + a1;
  a1 := (a1 shl $0E) or (a1 shr $12) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := a1 xor b1 xor c1 + Name_64[11] + e1;
  e1 := (e1 shl $0F) or (e1 shr $11) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := e1 xor a1 xor b1 + Name_64[12] + d1;
  d1 := (d1 shl 6) or (d1 shr $1A) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := d1 xor e1 xor a1 + Name_64[13] + c1;
  c1 := (c1 shl 7) or (c1 shr $19) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := c1 xor d1 xor e1 + Name_64[14] + b1;
  b1 := (b1 shl 9) or (b1 shr $17) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := b1 xor c1 xor d1 + Name_64[15] + a1;
  a1 := (a1 shl 8) or (a1 shr $18) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[7]) + e1 + $5A827999;
  e1 := (e1 shl 7) or (e1 shr $19) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[4]) + d1 + $5A827999;
  d1 := (d1 shl 6) or (d1 shr $1A) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[13]) + c1 + $5A827999;
  c1 := (c1 shl 8) or (c1 shr $18) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[1]) + b1 + $5A827999;
  b1 := (b1 shl $0D) or (b1 shr $13) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((b1 and c1) or (not(b1) and d1)) + Name_64[10] + a1 + $5A827999;
  a1 := (a1 shl $0B) or (a1 shr $15) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[7]) + e1 + $5A827999;
  e1 := (e1 shl 9) or (e1 shr $17) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[15]) + d1 + $5A827999;
  d1 := (d1 shl 7) or (d1 shr $19) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[3]) + c1 + $5A827999;
  c1 := (c1 shl $0F) or (c1 shr $11) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[5]) + b1 + $5A827999;
  b1 := (b1 shl 7) or (b1 shr $19) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := (((b1 and c1) or (not(b1) and d1)) + Name_64[0]) + a1 + $5A827999;
  a1 := (a1 shl $0C) or (a1 shr $14) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[9]) + e1 + $5A827999;
  e1 := (e1 shl $0F) or (e1 shr $11) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := (((e1 and a1) or (not(e1) and b1)) + Name_64[5]) + d1 + $5A827999;
  d1 := (d1 shl 9) or (d1 shr $17) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := (((d1 and e1) or (not(d1) and a1)) + Name_64[2]) + c1 + $5A827999;
  c1 := (c1 shl $0B) or (c1 shr $15) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := (((c1 and d1) or (not(c1) and e1)) + Name_64[14]) + b1 + $5A827999;
  b1 := (b1 shl 7) or (b1 shr $19) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := (((b1 and c1) or (not(b1) and d1)) + Name_64[11]) + a1 + $5A827999;
  a1 := (a1 shl $0D) or (a1 shr $13) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := (((a1 and b1) or (not(a1) and c1)) + Name_64[8]) + e1 + $5A827999;
  e1 := (e1 shl $0C) or (e1 shr $14) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((not(a1) or e1) xor b1 + Name_64[3]) + d1 + $6ED9EBA1;
  d1 := (d1 shl $0B) or (d1 shr $15) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((not(e1) or d1) xor a1 + Name_64[10]) + c1 + $6ED9EBA1;
  c1 := (c1 shl $0D) or (c1 shr $13) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((not(d1) or c1) xor e1 + Name_64[14]) + b1 + $6ED9EBA1;
  b1 := (b1 shl 6) or (b1 shr $1A) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((not(c1) or b1) xor d1 + Name_64[4]) + a1 + $6ED9EBA1;
  a1 := (a1 shl 7) or (a1 shr $19) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((not(b1) or a1) xor c1 + Name_64[9]) + e1 + $6ED9EBA1;
  e1 := (e1 shl $0E) or (e1 shr $12) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((not(a1) or e1) xor b1 + Name_64[15]) + d1 + $6ED9EBA1;
  d1 := (d1 shl 9) or (d1 shr $17) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((not(e1) or d1) xor a1 + Name_64[8]) + c1 + $6ED9EBA1;
  c1 := (c1 shl $0D) or (c1 shr $13) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((not(d1) or c1) xor e1 + Name_64[1]) + b1 + $6ED9EBA1;
  b1 := (b1 shl $0F) or (b1 shr $11) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((not(c1) or b1) xor d1 + Name_64[2]) + a1 + $6ED9EBA1;
  a1 := (a1 shl $0E) or (a1 shr $12) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((not(b1) or a1) xor c1 + Name_64[7]) + e1 + $6ED9EBA1;
  e1 := (e1 shl 8) or (e1 shr $18) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((not(a1) or e1) xor b1 + Name_64[0]) + d1 + $6ED9EBA1;
  d1 := (d1 shl $0D) or (d1 shr $13) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((not(e1) or d1) xor a1 + Name_64[6]) + c1 + $6ED9EBA1;
  c1 := (c1 shl 6) or (c1 shr $1A) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((not(d1) or c1) xor e1 + Name_64[13]) + b1 + $6ED9EBA1;
  b1 := (b1 shl 5) or (b1 shr $1B) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((not(c1) or b1) xor d1 + Name_64[11]) + a1 + $6ED9EBA1;
  a1 := (a1 shl $0C) or (a1 shr $14) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((not(b1) or a1) xor c1 + Name_64[5]) + e1 + $6ED9EBA1;
  e1 := (e1 shl 7) or (e1 shr $19) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((not(a1) or e1) xor b1 + Name_64[12]) + d1 + $6ED9EBA1;
  d1 := (d1 shl 5) or (d1 shr $1B) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[1] + c1 + $8F1BBCDC;
  c1 := (c1 shl $0B) or (c1 shr $15) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[9] + b1 + $8F1BBCDC;
  b1 := (b1 shl $0C) or (b1 shr $14) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[11] + a1 + $8F1BBCDC;
  a1 := (a1 shl $0E) or (a1 shr $12) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((a1 and c1) or (not(c1) and b1)) + Name_64[10] + e1 + $8F1BBCDC;
  e1 := (e1 shl $0F) or (e1 shr $11) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 :=((e1 and b1) or (not(b1) and a1)) + Name_64[0] + d1 + $8F1BBCDC;
  d1 := (d1 shl $0E) or (d1 shr $12) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[8] + c1 + $8F1BBCDC;
  c1 := (c1 shl $0F) or (c1 shr $11) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[12] + b1 + $8F1BBCDC;
  b1 := (b1 shl 9) or (b1 shr $17) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[4] + a1 + $8F1BBCDC;
  a1 := (a1 shl 8) or (a1 shr $18) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((a1 and c1) or (not(c1) and b1)) + Name_64[13] + e1 + $8F1BBCDC;
  e1 := (e1 shl 9) or (e1 shr $17) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((e1 and b1) or (not(b1) and a1)) + Name_64[3] + d1 + $8F1BBCDC;
  d1 := (d1 shl $0E) or (d1 shr $12) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[7] + c1 + $8F1BBCDC;
  c1 := (c1 shl 5) or (c1 shr $1B) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := ((c1 and e1) or (not(e1) and d1)) + Name_64[15] + b1 + $8F1BBCDC;
  b1 := (b1 shl 6) or (b1 shr $1A) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := ((b1 and d1) or (not(d1) and c1)) + Name_64[14] + a1 + $8F1BBCDC;
  a1 := (a1 shl 8) or (a1 shr $18) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := ((a1 and c1) or (not(c1) and b1)) + Name_64[5] + e1 + $8F1BBCDC;
  e1 := (e1 shl 6) or (e1 shr $1A) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := ((e1 and b1) or (not(b1) and a1)) + Name_64[6] + d1 + $8F1BBCDC;
  d1 := (d1 shl 5) or (d1 shr $1B) + c1;
  a1 := (a1 shl $0A) or (a1 shr $16);
  c1 := ((d1 and a1) or (not(a1) and e1)) + Name_64[2] + c1 + $8F1BBCDC;
  c1 := (c1 shl $0C) or (c1 shr $14) + b1;
  e1 := (e1 shl $0A) or (e1 shr $16);
  b1 := (not(e1) or d1) xor c1 + Name_64[4] + b1 + $A953FD4E;
  b1 := (b1 shl 9) or (b1 shr $17) + a1;
  d1 := (d1 shl $0A) or (d1 shr $16);
  a1 := (not(d1) or c1) xor b1 + Name_64[0] + a1 + $A953FD4E;
  a1 := (a1 shl $0F) or (a1 shr $11) + e1;
  c1 := (c1 shl $0A) or (c1 shr $16);
  e1 := (not(c1) or b1) xor a1 + Name_64[5] + e1 + $A953FD4E;
  e1 := (e1 shl 5) or (e1 shr $1B) + d1;
  b1 := (b1 shl $0A) or (b1 shr $16);
  d1 := (not(b1) or a1) xor e1 + Name_64[9] + d1 + $A953FD4E;
  d1 := (d1 shl $B) or (d1 shr $15) + c1;
  a1 := (a1 shl $A) or (a1 shr $16);
  c1 := (not(a1) or e1) xor d1 + Name_64[8] + c1 + $A953FD4E;
  c1 := (c1 shl 6) or (c1 shr $1A) + b1;
  e1 := (e1 shl $A) or (e1 shr $16);
  b1 := (not(e1) or d1) xor c1 + Name_64[12] + b1 + $A953FD4E;
  b1 := (b1 shl 8) or (b1 shr $18) + a1;
  d1 := (d1 shl $A) or (d1 shr $16);
  a1 := (not(d1) or c1) xor b1 + Name_64[2] + a1 + $A953FD4E;
  a1 := (a1 shl $D) or (a1 shr $13) + e1;
  c1 := (c1 shl $A) or (c1 shr $16);
  e1 := (not(c1) or b1) xor a1 + Name_64[10] + e1 + $A953FD4E;
  e1 := (e1 shl $C) or (e1 shr $14) + d1;
  b1 := (b1 shl $A) or (b1 shr $16);
  d1 := (not(b1) or a1) xor e1 + Name_64[14] + d1 + $A953FD4E;
  d1 := (d1 shl 5) or (d1 shr $1B) + c1;
  a1 := (a1 shl $A) or (a1 shr $16);
  c1 := (not(a1) or e1) xor d1 + Name_64[1] + c1 + $A953FD4E;
  c1 := (c1 shl $C) or (c1 shr $14) + b1;
  e1 := (e1 shl $A) or (e1 shr $16);
  b1 := (not(e1) or d1) xor c1 + Name_64[3] + b1 + $A953FD4E;
  b1 := (b1 shl $D) or (b1 shr $13) + a1;
  d1 := (d1 shl $A) or (d1 shr $16);
  a1 := (not(d1) or c1) xor b1 + Name_64[8] + a1 + $A953FD4E;
  a1 := (a1 shl $E) or (a1 shr $12) + e1;
  c1 := (c1 shl $A) or (c1 shr $16);
  e1 := (not(c1) or b1) xor a1 + Name_64[11] + e1 + $A953FD4E;
  e1 := (e1 shl $B) or (e1 shr $15) + d1;
  b1 := (b1 shl $A) or (b1 shr $16);
  d1 := (not(b1) or a1) xor e1 + Name_64[6] + d1 + $A953FD4E;
  d1 := (d1 shl 8) or (d1 shr $18) + c1;
  a1 := (a1 shl $A) or (a1 shr $16);
  c1 := (not(a1) or e1) xor d1 + Name_64[15] + c1 + $A953FD4E;
  c1 := (c1 shl 5) or (c1 shr $1B) + b1;
  e1 := (e1 shl $A) or (e1 shr $16);
  b1 := (not(e1) or d1) xor c1 + Name_64[13] + b1 + $A953FD4E;
  b1 := (b1 shl 6) or (b1 shr $1A) + a1;
  d1 := (d1 shl $A) or (d1 shr $16);
  e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[6] + e2 + $5C4DD124;
  e2 := (e2 shl 9) or (e2 shr $17) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[11] + d2 + $5C4DD124;
  d2 := (d2 shl $D) or (d2 shr $13) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[3] + c2 + $5C4DD124;
  c2 := (c2 shl $F) or (c2 shr $11) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[7] + b2 + $5C4DD124;
  b2 := (b2 shl $7) or (b2 shr $19) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[0] + a2 + $5C4DD124;
  a2 := (a2 shl $C) or (a2 shr $14) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[13] + e2 + $5C4DD124;
  e2 := (e2 shl 8) or (e2 shr $18) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[5] + d2 + $5C4DD124;
  d2 := (d2 shl 9) or (d2 shr $17) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[10] + c2 + $5C4DD124;
  c2 := (c2 shl $B) or (c2 shr $15) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[14] + b2 + $5C4DD124;
  b2 := (b2 shl 7) or (b2 shr $19) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[15] + a2 + $5C4DD124;
  a2 := (a2 shl 7) or (a2 shr $19) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[8] + e2 + $5C4DD124;
  e2 := (e2 shl $C) or (e2 shr $14) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and b2) or (not(b2) and a2)) + Name_64[12] + d2 + $5C4DD124;
  d2 := (d2 shl 7) or (d2 shr $19) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and a2) or (not(a2) and e2)) + Name_64[4] + c2 + $5C4DD124;
  c2 := (c2 shl 6) or (c2 shr $1A) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and e2) or (not(e2) and d2)) + Name_64[9] + b2 + $5C4DD124;
  b2 := (b2 shl $F) or (b2 shr $11) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and d2) or (not(d2) and c2)) + Name_64[1] + a2 + $5C4DD124;
  a2 := (a2 shl $D) or (a2 shr $13) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and c2) or (not(c2) and b2)) + Name_64[2] + e2 + $5C4DD124;
  e2 := (e2 shl $B) or (e2 shr $15) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  b2 := c2 xor d2 xor e2 + Name_64[12] + b2;
  b2 := (b2 shl 8) or (b2 shr $18) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := b2 xor c2 xor d2 + Name_64[15] + a2;
  a2 := (a2 shl 5) or (a2 shr $1B) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := a2 xor b2 xor c2 + Name_64[10] + e2;
  e2 := (e2 shl $C) or (e2 shr $14) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := e2 xor a2 xor b2 + Name_64[4] + d2;
  d2 := (d2 shl 9) or (d2 shr $17) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := d2 xor e2 xor a2 + Name_64[1] + c2;
  c2 := (c2 shl $C) or (c2 shr $14) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := c2 xor d2 xor e2 + Name_64[5] + b2;
  b2 := (b2 shl 5) or (b2 shr $1B) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := b2 xor c2 xor d2 + Name_64[8] + a2;
  a2 := (a2 shl $E) or (a2 shr $12) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := a2 xor b2 xor c2 + Name_64[7] + e2;
  e2 := (e2 shl 6) or (e2 shr $1A) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := e2 xor a2 xor b2 + Name_64[6] + d2;
  d2 := (d2 shl 8) or (d2 shr $18) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := d2 xor e2 xor a2 + Name_64[2] + c2;
  c2 := (c2 shl $D) or (c2 shr $13) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := c2 xor d2 xor e2 + Name_64[13] + b2;
  b2 := (b2 shl 6) or (b2 shr $1A) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := b2 xor c2 xor d2 + Name_64[14] + a2;
  a2 := (a2 shl 5) or (a2 shr $1B) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := a2 xor b2 xor c2 + Name_64[0] + e2;
  e2 := (e2 shl $0F) or (e2 shr $11) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := e2 xor a2 xor b2 + Name_64[3] + d2;
  d2 := (d2 shl $D) or (d2 shr $13) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := d2 xor e2 xor a2 + Name_64[9] + c2;
  c2 := (c2 shl $B) or (c2 shr $15) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := c2 xor d2 xor e2 + Name_64[11] + b2;
  b2 := (b2 shl $B) or (b2 shr $15) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  d2 := (not(a2) or e2) xor b2 + Name_64[15] + d2 + $6D703EF3;
  d2 := (d2 shl 9) or (d2 shr $17) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(e2) or d2) xor a2 + Name_64[5] + c2 + $6D703EF3;
  c2 := (c2 shl 7) or (c2 shr $19) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(d2) or c2) xor e2 + Name_64[1] + b2 + $6D703EF3;
  b2 := (b2 shl $F) or (b2 shr $11) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := (not(c2) or b2) xor d2 + Name_64[3] + a2 + $6D703EF3;
  a2 := (a2 shl $B) or (a2 shr $15) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(b2) or a2) xor c2 + Name_64[7] + e2 + $6D703EF3;
  e2 := (e2 shl 8) or (e2 shr $18) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(a2) or e2) xor b2 + Name_64[14] + d2 + $6D703EF3;
  d2 := (d2 shl 6) or (d2 shr $1A) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(e2) or d2) xor a2 + Name_64[6] + c2 + $6D703EF3;
  c2 := (c2 shl 6) or (c2 shr $1A) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(d2) or c2) xor e2 + Name_64[9] + b2 + $6D703EF3;
  b2 := (b2 shl $E) or (b2 shr $12) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := (not(c2) or b2) xor d2 + Name_64[11] + a2 + $6D703EF3;
  a2 := (a2 shl $C) or (a2 shr $14) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(b2) or a2) xor c2 + Name_64[8] + e2 + $6D703EF3;
  e2 := (e2 shl $D) or (e2 shr $13) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(a2) or e2) xor b2 + Name_64[12] + d2 + $6D703EF3;
  d2 := (d2 shl 5) or (d2 shr $1B) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(e2) or d2) xor a2 + Name_64[2] + c2 + $6D703EF3;
  c2 := (c2 shl $E) or (c2 shr $12) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(d2) or c2) xor e2 + Name_64[10] + b2 + $6D703EF3;
  b2 := (b2 shl $D) or (b2 shr $13) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := (not(c2) or b2) xor d2 + Name_64[0] + a2 + $6D703EF3;
  a2 := (a2 shl $D) or (a2 shr $13) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(b2) or a2) xor c2 + Name_64[4] + e2 + $6D703EF3;
  e2 := (e2 shl 7) or (e2 shr $19) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(a2) or e2) xor b2 + Name_64[13] + d2 + $6D703EF3;
  d2 := (d2 shl 5) or (d2 shr $1B) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[8] + c2 + $7A6D76E9;
  c2 := (c2 shl $F) or (c2 shr $11) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[6] + b2 + $7A6D76E9;
  b2 := (b2 shl 5) or (b2 shr $1B) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[4] + a2 + $7A6D76E9;
  a2 := (a2 shl 8) or (a2 shr $18) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[1] + e2 + $7A6D76E9;
  e2 := (e2 shl $B) or (e2 shr $15) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[3] + d2 + $7A6D76E9;
  d2 := (d2 shl $E) or (d2 shr $12) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[11] + c2 + $7A6D76E9;
  c2 := (c2 shl $E) or (c2 shr $12) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[15] + b2 + $7A6D76E9;
  b2 := (b2 shl 6) or (b2 shr $1A) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[0] + a2 + $7A6D76E9;
  a2 := (a2 shl $E) or (a2 shr $12) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[5] + e2 + $7A6D76E9;
  e2 := (e2 shl 6) or (e2 shr $1A) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[12] + d2 + $7A6D76E9;
  d2 := (d2 shl 9) or (d2 shr $17) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[2] + c2 + $7A6D76E9;
  c2 := (c2 shl $C) or (c2 shr $14) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := ((c2 and d2) or (not(c2) and e2)) + Name_64[13] + b2 + $7A6D76E9;
  b2 := (b2 shl 9) or (b2 shr $17) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := ((b2 and c2) or (not(b2) and d2)) + Name_64[9] + a2 + $7A6D76E9;
  a2 := (a2 shl $C) or (a2 shr $14) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := ((a2 and b2) or (not(a2) and c2)) + Name_64[7] + e2 + $7A6D76E9;
  e2 := (e2 shl 5) or (e2 shr $1B) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := ((e2 and a2) or (not(e2) and b2)) + Name_64[10] + d2 + $7A6D76E9;
  d2 := (d2 shl $F) or (d2 shr $11) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := ((d2 and e2) or (not(d2) and a2)) + Name_64[14] + c2 + $7A6D76E9;
  c2 := (c2 shl 8) or (c2 shr $18) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  a2 := (not(d2) or c2) xor b2 + Name_64[5] + a2 + $50A28BE6;
  a2 := (a2 shl 8) or (a2 shr $18) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(c2) or b2) xor a2 + Name_64[14] + e2 + $50A28BE6;
  e2 := (e2 shl 9) or (e2 shr $17) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(b2) or a2) xor e2 + Name_64[7] + d2 + $50A28BE6;
  d2 := (d2 shl 9) or (d2 shr $17) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(a2) or e2) xor d2 + Name_64[0] + c2 + $50A28BE6;
  c2 := (c2 shl $B) or (c2 shr $15) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(e2) or d2) xor c2 + Name_64[9] + b2 + $50A28BE6;
  b2 := (b2 shl $D) or (b2 shr $13) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := (not(d2) or c2) xor b2 + Name_64[2] + a2 + $50A28BE6;
  a2 := (a2 shl $F) or (a2 shr $11) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(c2) or b2) xor a2 + Name_64[11] + e2 + $50A28BE6;
  e2 := (e2 shl $F) or (e2 shr $11) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(b2) or a2) xor e2 + Name_64[4] + d2 + $50A28BE6;
  d2 := (d2 shl 5) or (d2 shr $1B) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(a2) or e2) xor d2 + Name_64[13] + c2 + $50A28BE6;
  c2 := (c2 shl 7) or (c2 shr $19) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(e2) or d2) xor c2 + Name_64[6] + b2 + $50A28BE6;
  b2 := (b2 shl 7) or (b2 shr $19) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
  a2 := (not(d2) or c2) xor b2 + Name_64[15] + a2 + $50A28BE6;
  a2 := (a2 shl 8) or (a2 shr $18) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  e2 := (not(c2) or b2) xor a2 + Name_64[8] + e2 + $50A28BE6;
  e2 := (e2 shl $B) or (e2 shr $15) + d2;
  b2 := (b2 shl $A) or (b2 shr $16);
  d2 := (not(b2) or a2) xor e2 + Name_64[1] + d2 + $50A28BE6;
  d2 := (d2 shl $E) or (d2 shr $12) + c2;
  a2 := (a2 shl $A) or (a2 shr $16);
  c2 := (not(a2) or e2) xor d2 + Name_64[10] + c2 + $50A28BE6;
  c2 := (c2 shl $E) or (c2 shr $12) + b2;
  e2 := (e2 shl $A) or (e2 shr $16);
  b2 := (not(e2) or d2) xor c2 + Name_64[3] + b2 + $50A28BE6;
  b2 := (b2 shl $C) or (b2 shr $14) + a2;
  d2 := (d2 shl $A) or (d2 shr $16);
//下面这两句的数据因为程序并没有用到,所以Delphi会将这两句优化掉,但没关系,因为不会影响程序的正常结果,所以这里我将这两句注释掉,写出来是和大家一起研究。
//  a2 := (not(d2) or c2) xor b2 + Name_64[12] + a2 + $50A28BE6;
//  a2 := (a2 shl 6) or (a2 shr $1A) + e2;
  c2 := (c2 shl $A) or (c2 shr $16);
  d2 := SHA1_Key[1] + c1 + d2;
//开始保存运算的数据。
  SHA1_Key[1] := SHA1_Key[2] + e1 + e2;
  SHA1_Key[2] := SHA1_Key[3] + d1 + b2;
  SHA1_Key[3] := SHA1_Key[4] + a1 + b2;
  SHA1_Key[4] := SHA1_Key[0] + b1 + c2;
  SHA1_Key[0] := d2;
end;

到此,SHA1算法是分析完毕了,接下来是分析BlowFish算法了。今天就分析到这里,休息去了。。。

----本文只能作为内部研究之用,如需转载请保持文章的完整性,谢谢!----小虾(战神[DFCG]),2005/2/13
2005-2-15 00:11
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
ikki_CrackMe变形SHA和变形BlowFish逆向分析(四)----BlowFish算法
大家好,我们又见面了,这次我们继续分析这个CrackMe,这次分析最后一道工程BlowFish算法。首先当然还是先来看看下面的BlowFish函数的初始化部分了。函数参考原型如下:
------------Procedure BlowFish_Init(var sBox_Key:MyArray;---------------------------------------
                                    var pBox_Key:array of DWORD;
                                    var Name_64:array of DWORD);
00411DE4     LEA EAX,DWORD PTR SS:[EBP-114]
00411DEA     PUSH EAX                                        ;  var SHA1_Init_En[1..5] of DWORD;
00411DEB     LEA ECX,DWORD PTR SS:[EBP-11AC]
00411DF1     PUSH ECX                                        ;  var BlowFish_Init:array[1..1024] of DWORD;
00411DF2     CALL CRACKME_.004112A8                          ;  CALL BlowFish_Init;

-----------------------CALL BlowFish_Init-------------------------------------------------------
00412410      PUSH EBP
00412411      MOV EBP,ESP
00412413      SUB ESP,0F0
00412419      PUSH EBX
0041241A      PUSH ESI
0041241B      PUSH EDI
0041241C      LEA EDI,DWORD PTR SS:[EBP-F0]
00412422      MOV ECX,3C
00412427      MOV EAX,CCCCCCCC                         ;  又是程序惯例初始化,不管他。
0041242C      REP STOS DWORD PTR ES:[EDI]
0041242E      MOV DWORD PTR SS:[EBP-8],0               ;  var i:DWORD = 0;
00412435      JMP SHORT CRACKME_.00412440

下面一大段循环没什么好说的,就是将全局上的BlowFish的sBox转存到局部变量中sBox_Key。用高级语言表达如下:
for i := 0 to 3 do
begin
for j := 0 to $FF do
begin
   sBox_Key[i,j] := sBox[i,j]; //将全局的sBox连续填充转到局部变量sBox_Key中。
end;
end;
00412437      /MOV EAX,DWORD PTR SS:[EBP-8]            ;  i := i + 1;
0041243A      |ADD EAX,1
0041243D      |MOV DWORD PTR SS:[EBP-8],EAX
00412440       CMP DWORD PTR SS:[EBP-8],4              ;  For i := 0 to 4 do
00412444      |JGE SHORT CRACKME_.0041248B
00412446      |MOV DWORD PTR SS:[EBP-14],0             ;  var j:DWORD = 0;
0041244D      |JMP SHORT CRACKME_.00412458
0041244F      |/MOV EAX,DWORD PTR SS:[EBP-14]          ;  j := j + 1;
00412452      ||ADD EAX,1
00412455      ||MOV DWORD PTR SS:[EBP-14],EAX
00412458      | CMP DWORD PTR SS:[EBP-14],100          ;  For j := 0 to $100 do
0041245F      ||JGE SHORT CRACKME_.00412489
00412461      ||MOV EAX,DWORD PTR SS:[EBP-8]           ;  k := i shl $A;
00412464      ||SHL EAX,0A
00412467      ||MOV ECX,DWORD PTR SS:[EBP-8]           ;  k := i shl $A;
0041246A      ||SHL ECX,0A
0041246D      ||MOV EDX,DWORD PTR SS:[EBP+8]
00412470      ||LEA ECX,DWORD PTR DS:[EDX+ECX+80]      ;  sBox_Key[k + j] := sBox[k + j];
00412477      ||MOV EDX,DWORD PTR SS:[EBP-14]
0041247A      ||MOV ESI,DWORD PTR SS:[EBP-14]
0041247D      ||MOV EAX,DWORD PTR DS:[EAX+ESI*4+4281B0>
00412484      ||MOV DWORD PTR DS:[ECX+EDX*4],EAX
00412487      |\JMP SHORT CRACKME_.0041244F
00412489      \JMP SHORT CRACKME_.00412437

这里开始加密pBox,转成pBox_Key。高级语言表达如下:
For i := 0 to $1F do  //加密连续填充pBox_Key
begin
  k := 4 - (i mod 5);
  pBox_Key[i] := Name_64[k] xor pBox[i];
end;
0041248B      MOV DWORD PTR SS:[EBP-8],0
00412492      JMP SHORT CRACKME_.0041249D
00412494      /MOV EAX,DWORD PTR SS:[EBP-8]
00412497      |ADD EAX,1
0041249A      |MOV DWORD PTR SS:[EBP-8],EAX
0041249D       CMP DWORD PTR SS:[EBP-8],20
004124A1      |JGE SHORT CRACKME_.004124D0
004124A3      |MOV EAX,DWORD PTR SS:[EBP-8]            ;  j := 4 - (i mod 5);
004124A6      |CDQ
004124A7      |MOV ECX,5
004124AC      |IDIV ECX
004124AE      |MOV EAX,4
004124B3      |SUB EAX,EDX
004124B5      |MOV ECX,DWORD PTR SS:[EBP-8]            ;  pBox_Key[i] := Name_64_Key[j] xor pBox[i];
004124B8      |MOV EDX,DWORD PTR SS:[EBP+C]
004124BB      |MOV ECX,DWORD PTR DS:[ECX*4+428130]
004124C2      |XOR ECX,DWORD PTR DS:[EDX+EAX*4]
004124C5      |MOV EDX,DWORD PTR SS:[EBP-8]
004124C8      |MOV EAX,DWORD PTR SS:[EBP+8]
004124CB      |MOV DWORD PTR DS:[EAX+EDX*4],ECX
004124CE      \JMP SHORT CRACKME_.00412494

这里加密两个全0的消息(xL, xR)再次对pBox_Key进行加密,高级语言表达如下:
xL := 0;
xR := 0;
j := 0;
For i := 0 to $F do  //第二次加密填充pBox_Key
begin
  BlowFish_En_Init(xL,xR,pBox_Key,sBox_Key);
  pBox_key[j] := xL;
  pBox_Key[j + 1] := xR;
  j := j + 2;
end;
004124D0      MOV DWORD PTR SS:[EBP-20],0              ;  xL := 0;
004124D7      MOV DWORD PTR SS:[EBP-2C],0              ;  xR := 0;
004124DE      MOV DWORD PTR SS:[EBP-20],0
004124E5      MOV DWORD PTR SS:[EBP-2C],0
004124EC      MOV DWORD PTR SS:[EBP-8],0               ;  i := 0;
004124F3      JMP SHORT CRACKME_.004124FE
004124F5      /MOV EAX,DWORD PTR SS:[EBP-8]
004124F8      |ADD EAX,2
004124FB      |MOV DWORD PTR SS:[EBP-8],EAX
004124FE       CMP DWORD PTR SS:[EBP-8],20
00412502      |JGE SHORT CRACKME_.00412533

这个函数其实是BlowFish的加密函数,不过这个加密函数的这个CrackMe对注册码加密的函数运算顺序不同,而且只是用来作中间运算,现在先不分析他,稍后再分析。
Procedure BlowFish_En_Init(var xL, xR:DWORD; var pBox_Key:array of DWORD; var sBox_Key:MyArray);
00412504      |LEA EAX,DWORD PTR SS:[EBP-2C]
00412507      |PUSH EAX                                ;  Push XR
00412508      |LEA ECX,DWORD PTR SS:[EBP-20]
0041250B      |PUSH ECX                                ;  Push xL
0041250C      |MOV EDX,DWORD PTR SS:[EBP+8]
0041250F      |PUSH EDX                                ;  push pBox_key
00412510      |CALL CRACKME_.00411591                  ;  CALL BlowFish_En_Init
00412515      |ADD ESP,0C

将加密后的xL和xR连续填充pBox_Key。
00412518      |MOV EAX,DWORD PTR SS:[EBP-8]
0041251B      |MOV ECX,DWORD PTR SS:[EBP+8]
0041251E      |MOV EDX,DWORD PTR SS:[EBP-20]
00412521      |MOV DWORD PTR DS:[ECX+EAX*4],EDX        ;  pBox[j] := xL;
00412524      |MOV EAX,DWORD PTR SS:[EBP-8]
00412527      |MOV ECX,DWORD PTR SS:[EBP+8]
0041252A      |MOV EDX,DWORD PTR SS:[EBP-2C]
0041252D      |MOV DWORD PTR DS:[ECX+EAX*4+4],EDX      ;  pBox[j + 1] := xR;
00412531      \JMP SHORT CRACKME_.004124F5

到这里,程序开始对sBox_Key进行连续加密填充。这段代码用高级语言表达如下:
For i := 0 to 3 do  //连续加密填充sBox_Key
begin
  k := 0;
  For j := 0 to $7F do
  begin
    BlowFish_En_Init(xL,xR,pBox_Key,sBox_Key);
    sBox_Key[i,k] := xL;
    sBox_key[i,k + 1] := xR;
    k := k + 2;
  end;
end;
00412533      MOV DWORD PTR SS:[EBP-8],0               ;  i := 0;
0041253A      JMP SHORT CRACKME_.00412545
0041253C      /MOV EAX,DWORD PTR SS:[EBP-8]
0041253F      |ADD EAX,1
00412542      |MOV DWORD PTR SS:[EBP-8],EAX
00412545       CMP DWORD PTR SS:[EBP-8],4
00412549      |JGE SHORT CRACKME_.004125B1
0041254B      |MOV DWORD PTR SS:[EBP-14],0             ;  j := 0;
00412552      |JMP SHORT CRACKME_.0041255D
00412554      |/MOV EAX,DWORD PTR SS:[EBP-14]         
00412557      ||ADD EAX,2
0041255A      ||MOV DWORD PTR SS:[EBP-14],EAX
0041255D      | CMP DWORD PTR SS:[EBP-14],100
00412564      ||JGE SHORT CRACKME_.004125AF

Procedure BlowFish_En_Init(var xL, xR:DWORD; var pBox_Key:array of DWORD; var sBox_Key:MyArray);
00412566      ||LEA EAX,DWORD PTR SS:[EBP-2C]
00412569      ||PUSH EAX                               ;  push xR
0041256A      ||LEA ECX,DWORD PTR SS:[EBP-20]
0041256D      ||PUSH ECX                               ;  push xL
0041256E      ||MOV EDX,DWORD PTR SS:[EBP+8]
00412571      ||PUSH EDX                               ;  push pBox_Key
00412572      ||CALL CRACKME_.00411591                 ;  CALL BlowFish_En_Init
00412577      ||ADD ESP,0C

sBox_Key[i,k] := xL;
0041257A      ||MOV EAX,DWORD PTR SS:[EBP-8]
0041257D      ||SHL EAX,0A
00412580      ||MOV ECX,DWORD PTR SS:[EBP+8]
00412583      ||LEA EDX,DWORD PTR DS:[ECX+EAX+80]
0041258A      ||MOV EAX,DWORD PTR SS:[EBP-14]
0041258D      ||MOV ECX,DWORD PTR SS:[EBP-20]
00412590      ||MOV DWORD PTR DS:[EDX+EAX*4],ECX

sBox_Key[i,k] := xR;
00412593      ||MOV EAX,DWORD PTR SS:[EBP-8]
00412596      ||SHL EAX,0A
00412599      ||MOV ECX,DWORD PTR SS:[EBP+8]
0041259C      ||LEA EDX,DWORD PTR DS:[ECX+EAX+80]
004125A3      ||MOV EAX,DWORD PTR SS:[EBP-14]
004125A6      ||MOV ECX,DWORD PTR SS:[EBP-2C]
004125A9      ||MOV DWORD PTR DS:[EDX+EAX*4+4],ECX
004125AD      |\JMP SHORT CRACKME_.00412554
004125AF      \JMP SHORT CRACKME_.0041253C

到这里以后不管他们了。
004125B1      PUSH EDX
004125B2      MOV ECX,EBP
004125B4      PUSH EAX
004125B5      LEA EDX,DWORD PTR DS:[4125D6]
004125BB      CALL CRACKME_.004111D1
004125C0      POP EAX
004125C1      POP EDX
004125C2      POP EDI
004125C3      POP ESI
004125C4      POP EBX
004125C5      ADD ESP,0F0
004125CB      CMP EBP,ESP
004125CD      CALL CRACKME_.004113FC
004125D2      MOV ESP,EBP
004125D4      POP EBP
004125D5      RETN

根据上面的分析,我们已经可以用高级语言写出功能相像的代码出来了(附源码):
Procedure BlowFish_Init(var sBox_Key:MyArray; var pBox_Key:array of DWORD; Name_64:array of DWORD);
var
  i, j, k, xL, xR:DWORD;
begin
  for i := 0 to 3 do  //初始化sBox_Key
  begin
    for j := 0 to $FF do
    begin
      sBox_Key[i,j] := sBox[i,j];
    end;
  end;
  For i := 0 to $1F do  //加密填充pBox_Key
  begin
    k := 4 - (i mod 5);
    pBox_Key[i] := Name_64[k] xor pBox[i];
  end;
  xL := 0;
  xR := 0;
  j := 0;
  For i := 0 to $F do  //第二次加密填充pBox_Key
  begin
    BlowFish_En_Init(xL,xR,pBox_Key,sBox_Key);
    pBox_key[j] := xL;
    pBox_Key[j + 1] := xR;
    j := j + 2;
  end;
  For i := 0 to 3 do  //连续加密填充sBox_Key
  begin
    k := 0;
    For j := 0 to $7F do
    begin
      BlowFish_En_Init(xL,xR,pBox_Key,sBox_Key);
      sBox_Key[i,k] := xL;
      sBox_key[i,k + 1] := xR;
      k := k + 2;
    end;
  end;
end;

---------------------Procedure BlowFish_En_Init(var xL, xR:DWORD;-------------------------------
                                                var pBox_Key:array of DWORD;
                                                var sBox_Key:MyArray);
00412566      ||LEA EAX,DWORD PTR SS:[EBP-2C]
00412569      ||PUSH EAX                               ;  push xR
0041256A      ||LEA ECX,DWORD PTR SS:[EBP-20]
0041256D      ||PUSH ECX                               ;  push xL
0041256E      ||MOV EDX,DWORD PTR SS:[EBP+8]
00412571      ||PUSH EDX                               ;  push pBox_Key
00412572      ||CALL CRACKME_.00411591                 ;  CALL BlowFish_En_Init

--------------------CALL BlowFish_En_Init-------------------------------------------------------
00412110      PUSH EBP
00412111      MOV EBP,ESP
00412113      SUB ESP,0F0
00412119      PUSH EBX
0041211A      PUSH ESI
0041211B      PUSH EDI
0041211C      LEA EDI,DWORD PTR SS:[EBP-F0]
00412122      MOV ECX,3C
00412127      MOV EAX,CCCCCCCC
0041212C      REP STOS DWORD PTR ES:[EDI]
0041212E      MOV EAX,DWORD PTR SS:[EBP+C]
00412131      MOV ECX,DWORD PTR DS:[EAX]
00412133      MOV DWORD PTR SS:[EBP-8],ECX
00412136      MOV EAX,DWORD PTR SS:[EBP+10]
00412139      MOV ECX,DWORD PTR DS:[EAX]
0041213B      MOV DWORD PTR SS:[EBP-14],ECX
0041213E      MOV WORD PTR SS:[EBP-2C],0               ;  var i:DWORD = 0;
00412144      JMP SHORT CRACKME_.00412152

下面的一段循环用高级语言表达如下:
For i := 0 to $1D do
begin
  xL := xL xor pBox_Key[i];
  xR := xR xor BlowFish_Func(xl,sBox_Key);
  tmp := xL;
  xL := xR;
  xR := tmp;
end;
00412146      /MOV AX,WORD PTR SS:[EBP-2C]
0041214A      |ADD AX,1
0041214E      |MOV WORD PTR SS:[EBP-2C],AX
00412152       MOVSX EAX,WORD PTR SS:[EBP-2C]
00412156      |CMP EAX,1E
00412159      |JGE SHORT CRACKME_.00412195

xL := xL xor pBox_Key[0];
0041215B      |MOVSX EAX,WORD PTR SS:[EBP-2C]          ;  eax := i         
0041215F      |MOV ECX,DWORD PTR SS:[EBP+8]            ;  ecx := pBox_Key;
00412162      |MOV EDX,DWORD PTR SS:[EBP-8]            ;  edx := xL;
00412165      |XOR EDX,DWORD PTR DS:[ECX+EAX*4]        ;  xL := xL xor pBox_Key[i];
00412168      |MOV DWORD PTR SS:[EBP-8],EDX

BlowFish加密的中间运算函数。函数原型参考如下:
Function BlowFish_Func(tmp:DWORD; sBox_Key:MyArray):DWORD;
0041216B      |MOV EAX,DWORD PTR SS:[EBP-8]
0041216E      |PUSH EAX                                ; /Arg2
0041216F      |MOV ECX,DWORD PTR SS:[EBP+8]            ; |
00412172      |PUSH ECX                                ; |Arg1
00412173      |CALL CRACKME_.00412220                  ; \CRACKME_.00412220
00412178      |ADD ESP,8

tmp := xL;
xL := xR;
xR := tmp;
0041217B      |XOR EAX,DWORD PTR SS:[EBP-14]           
0041217E      |MOV DWORD PTR SS:[EBP-14],EAX
00412181      |MOV EAX,DWORD PTR SS:[EBP-8]
00412184      |MOV DWORD PTR SS:[EBP-20],EAX
00412187      |MOV EAX,DWORD PTR SS:[EBP-14]
0041218A      |MOV DWORD PTR SS:[EBP-8],EAX
0041218D      |MOV EAX,DWORD PTR SS:[EBP-20]
00412190      |MOV DWORD PTR SS:[EBP-14],EAX
00412193      \JMP SHORT CRACKME_.00412146

这里再一次转换位置。
tmp := xL;
xL := xR;
xR := tmp;
00412195      MOV EAX,DWORD PTR SS:[EBP-8]
00412198      MOV DWORD PTR SS:[EBP-20],EAX
0041219B      MOV EAX,DWORD PTR SS:[EBP-14]
0041219E      MOV DWORD PTR SS:[EBP-8],EAX
004121A1      MOV EAX,DWORD PTR SS:[EBP-20]
004121A4      MOV DWORD PTR SS:[EBP-14],EAX

xL := xL xor pBox_key[$1E];
004121A7      MOV EAX,DWORD PTR SS:[EBP+8]
004121AA      MOV ECX,DWORD PTR SS:[EBP-14]
004121AD      XOR ECX,DWORD PTR DS:[EAX+78]
004121B0      MOV DWORD PTR SS:[EBP-14],ECX

xR := xR xor pBox_Key[$1F];
004121B3      MOV EAX,DWORD PTR SS:[EBP+8]
004121B6      MOV ECX,DWORD PTR SS:[EBP-8]
004121B9      XOR ECX,DWORD PTR DS:[EAX+7C]
004121BC      MOV DWORD PTR SS:[EBP-8],ECX

到这里就没什么写了,只是保存运算结果。
004121BF      MOV EAX,DWORD PTR SS:[EBP+C]
004121C2      MOV ECX,DWORD PTR SS:[EBP-8]
004121C5      MOV DWORD PTR DS:[EAX],ECX
004121C7      MOV EAX,DWORD PTR SS:[EBP+10]
004121CA      MOV ECX,DWORD PTR SS:[EBP-14]
004121CD      MOV DWORD PTR DS:[EAX],ECX
004121CF      POP EDI
004121D0      POP ESI
004121D1      POP EBX
004121D2      ADD ESP,0F0
004121D8      CMP EBP,ESP
004121DA      CALL CRACKME_.004113FC
004121DF      MOV ESP,EBP
004121E1      POP EBP
004121E2      RETN

到这里,我们又分析出一个函数的过程了。过程如下:
Procedure BlowFish_En_Init(var xL, xR:DWORD; var pBox_Key:array of DWORD; var sBox_Key:MyArray);
var
  i, tmp:DWORD;
begin
  For i := 0 to $1D do
  begin
    xL := xL xor pBox_Key[i];
    xR := xR xor BlowFish_Func(xl,sBox_Key);
    tmp := xL;
    xL := xR;
    xR := tmp;
  end;
  tmp := xL;
  xL := xR;
  xR := tmp;
  xR := xR xor pBox_Key[$1E];
  xL := xL xor pBox_Key[$1F];
end;

现在我们接着分析BlowFish_Func函数,这个是BlowFish加解密函数要用到的中间函数。加密和解密都用他,所以我在这里分析一次,下面的加密函数中就略过不分析了。这个函数参考原型如下:
----------------Function BlowFish_Func(tmp:DWORD; sBox_Key:MyArray):DWORD;----------------------
0041216B      |MOV EAX,DWORD PTR SS:[EBP-8]
0041216E      |PUSH EAX                                ; /Arg2
0041216F      |MOV ECX,DWORD PTR SS:[EBP+8]            ; |
00412172      |PUSH ECX                                ; |Arg1
00412173      |CALL CRACKME_.00412220                  ; \CRACKME_.00412220

------------------CALL BlowFish_Func------------------------------------------------------------
00412220    push ebp
00412221    mov ebp,esp
00412223    sub esp,0F0
00412229    push ebx
0041222A    push esi
0041222B    push edi
0041222C    lea edi,dword ptr ss:[ebp-F0]
00412232    mov ecx,3C
00412237    mov eax,CCCCCCCC
0041223C    rep stos dword ptr es:[edi]

下面一大段代码是将xL转换成Byte类型,高级语言表达如下:
a := Byte(xL and $000000FF);
b := Byte((xL and $0000FF00) shr 8);
c := Byte((xL and $00FF0000) shr $10);
d := Byte((xL and $FF000000) shr $18);
0041223E    movzx eax,word ptr ss:[ebp+C]
00412242    and eax,0FF
00412247    mov word ptr ss:[ebp-2C],ax
0041224B    mov eax,dword ptr ss:[ebp+C]
0041224E    shr eax,8
00412251    mov dword ptr ss:[ebp+C],eax
00412254    movzx eax,word ptr ss:[ebp+C]
00412258    and eax,0FF
0041225D    mov word ptr ss:[ebp-20],ax
00412261    mov eax,dword ptr ss:[ebp+C]
00412264    shr eax,8
00412267    mov dword ptr ss:[ebp+C],eax
0041226A    movzx eax,word ptr ss:[ebp+C]
0041226E    and eax,0FF
00412273    mov word ptr ss:[ebp-14],ax
00412277    mov eax,dword ptr ss:[ebp+C]
0041227A    shr eax,8
0041227D    mov dword ptr ss:[ebp+C],eax
00412280    movzx eax,word ptr ss:[ebp+C]
00412284    and eax,0FF
00412289    mov word ptr ss:[ebp-8],ax

开始加密:高级语言表达如下:
xL := (sBox_Key[2, a] - sBox_Key[1, c]) xor (sBox_Key[0, b] + sBox_Key[3, d]);
最后返回xL(Result := xL);
0041228D    movzx eax,word ptr ss:[ebp-2C]
00412291    movzx ecx,word ptr ss:[ebp-14]
00412295    mov edx,dword ptr ss:[ebp+8]
00412298    mov esi,dword ptr ss:[ebp+8]
0041229B    mov eax,dword ptr ds:[edx+eax*4+8>
004122A2    sub eax,dword ptr ds:[esi+ecx*4+4>
004122A9    movzx ecx,word ptr ss:[ebp-20]
004122AD    movzx edx,word ptr ss:[ebp-8]
004122B1    mov esi,dword ptr ss:[ebp+8]
004122B4    mov ecx,dword ptr ds:[esi+ecx*4+8>
004122BB    mov esi,dword ptr ss:[ebp+8]
004122BE    add ecx,dword ptr ds:[esi+edx*4+C>
004122C5    xor eax,ecx
004122C7    pop edi
004122C8    pop esi
004122C9    pop ebx
004122CA    mov esp,ebp
004122CC    pop ebp
004122CD    retn

到此,我们又得到一个函数:源码如下:
Function BlowFish_Func(xL:DWORD; sBox_Key:MyArray):DWORD;
var
  a, b, c, d:Byte;
begin
  a := Byte(xL and $000000FF);
  b := Byte((xL and $0000FF00) shr 8);
  c := Byte((xL and $00FF0000) shr $10);
  d := Byte((xL and $FF000000) shr $18);
  Result := (sBox_Key[2, a] - sBox_Key[1, c]) xor (sBox_Key[0, b] + sBox_Key[3, d]);
end;

最后,我们终于来到最关键处了,BlowFish加密算法上,其实这个加密算法和上面的BlowFish加密算法操作是一样的,只是上面的操作方法是从0~$1F依次循环加密的,而这个是反过来,从$1F~0依次循环加密的,因为这样,所以这个算法我就不细分析了。

这里开始对Sn1和Sn2进行BlowFish_En加密。参考函数原型如下:
------procedure BlowFish_En(var BlowFish_Init_En:array of DWORD; var Sn1, Sn2:DWORD);------------
00411E3E     LEA EAX,DWORD PTR SS:[EBP-120]
00411E44     PUSH EAX                                        ;  var Sn2:DWORD;
00411E45     LEA ECX,DWORD PTR SS:[EBP-124]
00411E4B     PUSH ECX                                        ;  var Sn1:DWORD;
00411E4C     LEA EDX,DWORD PTR SS:[EBP-11AC]
00411E52     PUSH EDX                           ;  var BlowFish_Init_En:array[1..1024] of DWORD;
00411E53     CALL CRACKME_.004114D3                          ;  CALL BlowFish_En;

------------------------CALL BlowFish_En--------------------------------------------------------
00412300    push ebp
00412301    mov ebp,esp
00412303    sub esp,0F0
00412309    push ebx
0041230A    push esi
0041230B    push edi
0041230C    lea edi,dword ptr ss:[ebp-F0]
00412312    mov ecx,3C
00412317    mov eax,CCCCCCCC
0041231C    rep stos dword ptr es:[edi]
0041231E    mov eax,dword ptr ss:[ebp+C]
00412321    mov ecx,dword ptr ds:[eax]
00412323    mov dword ptr ss:[ebp-8],ecx      ;  var xL;
00412326    mov eax,dword ptr ss:[ebp+10]
00412329    mov ecx,dword ptr ds:[eax]
0041232B    mov dword ptr ss:[ebp-14],ecx     ;  var xR;
0041232E    mov word ptr ss:[ebp-2C],1F       ;  i := $1F;
00412334    jmp short CRACKME_.00412342

For i := $1F downto 2 do
begin
  xL := xL xor pBox_Key[i];
  xR := xR xor BlowFish_Func(xl, sBox_Key);
  tmp := xL;
  xL := xR;
  xR := tmp;
end;
00412336    /mov ax,word ptr ss:[ebp-2C]
0041233A    |sub ax,1
0041233E    |mov word ptr ss:[ebp-2C],ax
00412342     movsx eax,word ptr ss:[ebp-2C]
00412346    |cmp eax,1
00412349    |jle short CRACKME_.00412385

xL := xL xor pBox_Key[i];
0041234B    |movsx eax,word ptr ss:[ebp-2C]
0041234F    |mov ecx,dword ptr ss:[ebp+8]
00412352    |mov edx,dword ptr ss:[ebp-8]
00412355    |xor edx,dword ptr ds:[ecx+eax*4]
00412358    |mov dword ptr ss:[ebp-8],edx

这个Call BlowFish_Func和上面的一模一样,所以这里不分析了,大家可以看前面的分析。
xR := xR xor BlowFish_Func(xl, sBox_Key);
0041235B    |mov eax,dword ptr ss:[ebp-8]
0041235E    |push eax                         ; /Arg2
0041235F    |mov ecx,dword ptr ss:[ebp+8]     ; |
00412362    |push ecx                         ; |Arg1
00412363    |call CRACKME_.00412220           ; \CRACKME_.00412220
00412368    |add esp,8
0041236B    |xor eax,dword ptr ss:[ebp-14]
0041236E    |mov dword ptr ss:[ebp-14],eax

tmp := xL;
xL := xR;
xR := tmp;
00412371    |mov eax,dword ptr ss:[ebp-8]
00412374    |mov dword ptr ss:[ebp-20],eax
00412377    |mov eax,dword ptr ss:[ebp-14]
0041237A    |mov dword ptr ss:[ebp-8],eax
0041237D    |mov eax,dword ptr ss:[ebp-20]
00412380    |mov dword ptr ss:[ebp-14],eax
00412383    \jmp short CRACKME_.00412336

tmp := xL;
xL := xR;
xR := tmp;
00412385    mov eax,dword ptr ss:[ebp-8]
00412388    mov dword ptr ss:[ebp-20],eax
0041238B    mov eax,dword ptr ss:[ebp-14]
0041238E    mov dword ptr ss:[ebp-8],eax
00412391    mov eax,dword ptr ss:[ebp-20]
00412394    mov dword ptr ss:[ebp-14],eax

xR := xR xor pBox_Key[1];
00412397    mov eax,dword ptr ss:[ebp+8]
0041239A    mov ecx,dword ptr ss:[ebp-14]
0041239D    xor ecx,dword ptr ds:[eax+4]
004123A0    mov dword ptr ss:[ebp-14],ecx

xL := xL xor pBox_Key[0];
004123A3    mov eax,dword ptr ss:[ebp+8]
004123A6    mov ecx,dword ptr ss:[ebp-8]
004123A9    xor ecx,dword ptr ds:[eax]
004123AB    mov dword ptr ss:[ebp-8],ecx

保存结果运算结果。
004123AE    mov eax,dword ptr ss:[ebp+C]
004123B1    mov ecx,dword ptr ss:[ebp-8]
004123B4    mov dword ptr ds:[eax],ecx
004123B6    mov eax,dword ptr ss:[ebp+10]
004123B9    mov ecx,dword ptr ss:[ebp-14]
004123BC    mov dword ptr ds:[eax],ecx
004123BE    pop edi
004123BF    pop esi
004123C0    pop ebx
004123C1    add esp,0F0
004123C7    cmp ebp,esp
004123C9    call CRACKME_.004113FC
004123CE    mov esp,ebp
004123D0    pop ebp
004123D1    retn

到这里后,这个CrackMe总算是分析完毕了。附上BlowFish的加密函数源码和解密函数源码作为最后的结束。

BlowFish_En加密函数:
Procedure BlowFish_En(var xL, xR:DWORD; var pBox_Key:array of DWORD; var sBox_Key:MyArray);
var
  i, tmp:DWORD;
begin
  For i := $1F downto 2 do
  begin
    xL := xL xor pBox_Key[i];
    xR := xR xor BlowFish_Func(xl, sBox_Key);
    tmp := xL;
    xL := xR;
    xR := tmp;
  end;
  tmp := xL;
  xL := xR;
  xR := tmp;
  xR := xR xor pBox_Key[1];
  xL := xL xor pBox_Key[0];
end;

BlowFish_De解密函数,BlowFish的解密函数也很简单,只须将加密函数倒转过来使用就行了。

BlowFish_De解密函数:
Procedure BlowFish_De(var xL, xR:DWORD; pBox_Key:array of DWORD; sBox_key:MyArray);
var
  i, tmp:DWORD;
begin
  xL := xL xor pBox_Key[0];
  xR := xR xor pBox_Key[1];
  tmp := xL;
  xL := xR;
  xR := tmp;
  For i := 2 to $1F do
  begin
    tmp := xL;
    xL := xR;
    xR := tmp;
    xR := xR xor BlowFish_Func(xL,sBox_Key);
    xL := xL xor pBox_Key[i];
  end;
end;

到这里,终于写完了,因为是边分析边写的(分析和写笔记共用了一个星期),可能写的比较乱,大家就将就点吧。希望对大家有点帮助。呵呵。

--------本文只能作为内部研究之用,如需转载请保持文章的完整性,谢谢!----小虾(战神[DFCG]),2005/2/14
2005-2-15 00:12
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
最后附KeyGen全部源码下载。
附件:KeyGen.rar
2005-2-15 00:15
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
7
不错,继续努力
2005-2-15 00:37
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
8
强!
支持你!
2005-2-15 12:09
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持...
2005-2-15 12:22
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持...
2005-2-15 12:23
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持...
2005-2-15 12:23
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
支持...
2005-2-15 12:23
0
雪    币: 244
活跃值: (265)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
13
厉害!
2005-2-15 12:40
0
雪    币: 3688
活跃值: (4242)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
14
晕,兄弟神速啊,偶还在暴力阶段,郁闷ing。
2005-2-15 16:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
经典的东西!
收藏+研究
2005-2-15 16:17
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
16
小虾文章确实精彩十分!
为了以后收藏及搜索方便,故将4个主题合并了,这样精华数少了,还请谅解。但在我们心里的,你精华数有增无减。
2005-2-15 20:21
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
17
多谢看雪老大挂心。
2005-2-15 21:27
0
雪    币: 272
活跃值: (470)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
18
收藏!虽然现在看不大懂!另外楼主文中代码部分的着色是如何实现的,教教我啊!
2005-2-19 14:52
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
19
用代码着色器xTiNt着的色,因为我的代码是Delphi的,所以在着色的时候我选择了Delphi。
2005-2-19 15:12
0
雪    币: 272
活跃值: (470)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
20
最初由 小虾 发布
用代码着色器xTiNt着的色,因为我的代码是Delphi的,所以在着色的时候我选择了Delphi。


恕我愚钝,没说清楚!我是说论坛上发贴时,Html代码为禁止,只能用VB代码,我是说用VB代码如何实现代码着色,我用[php] [/php]也不行!
2005-2-21 08:50
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
21
我说的是用代码着色器上的色,说不太清楚,看图吧。
附图一:其中要将处理空格的选项去掉(论坛不支持这个),默认是选上的:

附图二:这是转换后的代码:

最后将转换后的代码复制发上来就可以了。
例子代码:
function Dlglogfunc(Wnd: HWND; Msg:UINT; wParam: WPARAM; lParam: LPARAM):lParam; stdcall;
var
  Code:array[0..512] of Char;
  Serial:String;
  ea:DWORD;
  aa:DWORD;
begin
  Case Msg of
    WM_CLOSE:
      EndDialog(Wnd,0);
    WM_INITDIALOG:
    begin
      ea := LoadIcon(hInstance, PChar(DLG_ICO1));
      SendMessage(Wnd, WM_SETICON, ICON_SMALL, ea);
    end;
    WM_COMMAND:
    begin
      aa := wParam;
      if aa = DLG_BUTTON_ABOUT then
        MessageBox(0, '版权所有:战神[DFCG]', '关于...', MB_OK)
      else if aa = DLG_BUTTON_OK then
      begin
        GetDlgItemText(Wnd, DLG_EDIT1, Code, 512);
        Serial := MyKeyGen(Code);
        SetDlgItemText(Wnd, DLG_EDIT2, PChar(Serial));
      end
      else if aa = DLG_BUTTON_EXIT then
        SendMessage(Wnd, WM_CLOSE, 0, 0);
    end;
  end;
  Result := 0;
end;
2005-2-21 10:48
0
雪    币: 272
活跃值: (470)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
22
呵呵,现在明白了,多谢!原来我没把处理TAB、空格项去掉!
2005-2-22 15:24
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
好贴正如美女,是要 顶 弟,我顶
2005-2-22 17:07
0
雪    币: 538
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
强啊..偶只有学习的份
2005-2-23 12:56
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
25
厉害,真是厉害,保存下来慢慢看,就是delphi不会,郁闷ing......
2005-2-25 17:17
0
游客
登录 | 注册 方可回帖
返回
//