Netexpert FAQ 网络分析专家学习建议入口 @netexpert成员申请指南
网络分析时代 netexpert积分规则的说明 Netis招贤纳士(2008年11月22日更新)
发新话题
打印

skype形成私钥与共钥的程序部分及分析[RAS]

本主题由 scz 于 2008-6-16 09:38 解除置顶

skype形成私钥与共钥的程序部分及分析[RAS]

;;;=====================创建自己账户的公共密钥部分====================
007643A0  6AFF               |PUSH      FF
007643A2  68DBCD9E00         |PUSH      009ECDDB
007643A7  64A100000000       |MOV       EAX,FS:[00000000]
007643AD  50                 |PUSH      EAX
007643AE  64892500000000     |MOV       FS:[00000000],ESP
007643B5  81EC84020000       |SUB       ESP,00000284
007643BB  55                 |PUSH      EBP
007643BC  56                 |PUSH      ESI
007643BD  57                 |PUSH      EDI
007643BE  8BE9               |MOV       EBP,ECX
007643C0  C784249802000000000|MOV       DWORD PTR [ESP+00000298],00000000
007643CB  8D74240C           |LEA       ESI,[ESP+0C]
007643CF  BF05000000         |MOV       EDI,00000005
007643D4  E8F73F0700         |CALL      007D83D0 ;特征码MD5校验返回D0-7
007643D9  8906               |MOV       [ESI],EAX
007643DB  895604             |MOV       [ESI+04],EDX
007643DE  83C608             |ADD       ESI,08
007643E1  4F                 |DEC       EDI
007643E2  75F0               |JNZ       007643D4
007643E4  C684248C01000000   |MOV       BYTE PTR [ESP+0000018C],00
007643EC  C684248D01000000   |MOV       BYTE PTR [ESP+0000018D],00
007643F4  33C0               |XOR       EAX,EAX
007643F6  8884048C000000     |MOV       [EAX+ESP+0000008C],AL
007643FD  40                 |INC       EAX
007643FE  3D00010000         |CMP       EAX,00000100 ;清256数据
00764403  72F1               |JB        007643F6
00764405  33C9               |XOR       ECX,ECX
00764407  33F6               |XOR       ESI,ESI
00764409  33FF               |XOR       EDI,EDI
0076440B  8A540C0C           |MOV       DL,[ECX+ESP+0C]
0076440F  33C0               |XOR       EAX,EAX
00764411  8A843C8C000000     |MOV       AL,[EDI+ESP+0000008C]
00764418  03D0               |ADD       EDX,EAX
0076441A  03D6               |ADD       EDX,ESI
0076441C  81E2FF000000       |AND       EDX,000000FF
00764422  41                 |INC       ECX
00764423  8BF2               |MOV       ESI,EDX
00764425  83F928             |CMP       ECX,28
00764428  8A94348C000000     |MOV       DL,[ESI+ESP+0000008C]
0076442F  88943C8C000000     |MOV       [EDI+ESP+0000008C],DL
00764436  8884348C000000     |MOV       [ESI+ESP+0000008C],AL
0076443D  7202               |JB        00764441
0076443F  33C9               |XOR       ECX,ECX      ;形成数据
00764441  47                 |INC       EDI          ;随机的256B
00764442  81FF00010000       |CMP       EDI,00000100
00764448  72C1               |JB        0076440B
0076444A  6A05               |PUSH      05
0076444C  8D842490000000     |LEA       EAX,[ESP+00000090]
00764453  6801000100         |PUSH      00010001
00764458  50                 |PUSH      EAX
00764459  6830427600         |PUSH      00764230 ;256密码表取数部分
0076445E  8D4C245C           |LEA       ECX,[ESP+5C]
00764462  E879D00000         |CALL      007714E0 ;算私钥的部分
00764467  6A05               |PUSH      05
00764469  8D8C2490000000     |LEA       ECX,[ESP+00000090]
00764470  6801000100         |PUSH      00010001
00764475  51                 |PUSH      ECX
00764476  6830427600         |PUSH      00764230 ;256密码表取数部分
0076447B  8D4C241C           |LEA       ECX,[ESP+1C]
0076447F  E85CD00000         |CALL      007714E0 ;算私钥的部分
00764484  8D54240C           |LEA       EDX,[ESP+0C]
00764488  8D44244C           |LEA       EAX,[ESP+4C]
0076448C  52                 |PUSH      EDX
0076448D  8D8C2494010000     |LEA       ECX,[ESP+00000194]
00764494  50                 |PUSH      EAX
00764495  51                 |PUSH      ECX
00764496  6A10               |PUSH      10
00764498  E8E3000000         |CALL      00764580 ;C_ A1=A2*A3
0076449D  83C410             |ADD       ESP,10
007644A0  8D4C244C           |LEA       ECX,[ESP+4C]
007644A4  6A01               |PUSH      01
007644A6  E805D00000         |CALL      007714B0 ;ECX[64B] -1
007644AB  6A01               |PUSH      01
007644AD  8D4C2410           |LEA       ECX,[ESP+10]
007644B1  E8FACF0000         |CALL      007714B0 ;ECX[64B] -1
007644B6  8D54240C           |LEA       EDX,[ESP+0C]
007644BA  8D44244C           |LEA       EAX,[ESP+4C]
007644BE  52                 |PUSH      EDX
007644BF  8D8C2414020000     |LEA       ECX,[ESP+00000214]
007644C6  50                 |PUSH      EAX
007644C7  51                 |PUSH      ECX
007644C8  6A10               |PUSH      10
007644CA  E8B1000000         |CALL      00764580 ;C_ A1=A2*A3
007644CF  83EC70             |SUB       ESP,70
007644D2  8BCC               |MOV       ECX,ESP
007644D4  6801000100         |PUSH      00010001
007644D9  E8C2B40000         |CALL      0076F9A0 ;初始化80H字节10001->ECX
007644DE  8D8C2490020000     |LEA       ECX,[ESP+00000290]
007644E5  E8D6C40000         |CALL      007709C0
007644EA  85C0               |TEST      EAX,EAX
007644EC  0F8458FFFFFF       |JZ        0076444A
007644F2  8DB561040000       |LEA       ESI,[EBP+00000461]       ;128
007644F8  33C0               |XOR       EAX,EAX                  ;Byte
007644FA  8BD0               |MOV       EDX,EAX                  ;解密
007644FC  8BC8               |MOV       ECX,EAX                  ;数据
007644FE  C1EA02             |SHR       EDX,02                   ;
00764501  83E103             |AND       ECX,03                   ;可以
00764504  8B949410020000     |MOV       EDX,[EDX*4+ESP+00000210] ;看作
0076450B  C1E103             |SHL       ECX,03                   ;私钥
0076450E  D3EA               |SHR       EDX,CL                   ;的
00764510  40                 |INC       EAX                      ;生成
00764511  4E                 |DEC       ESI                      ;过程
00764512  3D80000000         |CMP       EAX,00000080             ;
00764517  885601             |MOV       [ESI+01],DL              ;
0076451A  72DE               |JB        007644FA
0076451C  8B8424A0020000     |MOV       EAX,[ESP+000002A0]
00764523  8D707F             |LEA       ESI,[EAX+7F]             ;128
00764526  33C0               |XOR       EAX,EAX                  ;Byte
00764528  8BD0               |MOV       EDX,EAX                  ;解密
0076452A  8BC8               |MOV       ECX,EAX                  ;数据
0076452C  C1EA02             |SHR       EDX,02                   ;   
0076452F  83E103             |AND       ECX,03                   ;可以
00764532  8B949490010000     |MOV       EDX,[EDX*4+ESP+00000190] ;看作
00764539  C1E103             |SHL       ECX,03                   ;私钥
0076453C  D3EA               |SHR       EDX,CL                   ;的  
0076453E  40                 |INC       EAX                      ;生成
0076453F  4E                 |DEC       ESI                      ;过程
00764540  3D80000000         |CMP       EAX,00000080             ;   
00764545  885601             |MOV       [ESI+01],DL              ;   
00764548  72DE               |JB        00764528 ;account_manager_t: key
0076454A  68A4E1AD00         |PUSH      00ADE1A4 ; generation complete
0076454F  E87C96FCFF         |CALL      0072DBD0 ;显示提示信息
00764554  8B8C2494020000     |MOV       ECX,[ESP+00000294]
0076455B  83C404             |ADD       ESP,04
0076455E  64890D00000000     |MOV       FS:[00000000],ECX
00764565  5F                 |POP       EDI
00764566  5E                 |POP       ESI
00764567  5D                 |POP       EBP
00764568  81C490020000       |ADD       ESP,00000290
0076456E  C20400             |RET       0004
;;;===================利用机器自身的特征码生成MD5校验码的D0-D7返回=======
007D83D0  81ECC0040000       |SUB       ESP,000004C0
007D83D6  6A14               |PUSH      14
007D83D8  8D442460           |LEA       EAX,[ESP+60]
007D83DC  685843B200         |PUSH      00B24358
007D83E1  50                 |PUSH      EAX
007D83E2  E899222000         |CALL      009DA680 ;复制数据
007D83E7  83C40C             |ADD       ESP,0C
007D83EA  8D4C2470           |LEA       ECX,[ESP+70]
007D83EE  51                 |PUSH      ECX
007D83EF  FF15E8AEA000       |CALL      [KERNEL32!GlobalMemoryStatus]
007D83F5  8D942490000000     |LEA       EDX,[ESP+00000090]
007D83FC  52                 |PUSH      EDX
007D83FD  FF15C4AFA000       |CALL      [00A0AFC4]
007D8403  8D8424A0000000     |LEA       EAX,[ESP+000000A0]
007D840A  50                 |PUSH      EAX
007D840B  FF1518B0A000       |CALL      [USER32!GetCursorPos]
007D8411  FF15B0ADA000       |CALL      [KERNEL32!GetTickCount]
007D8417  898424A8000000     |MOV       [ESP+000000A8],EAX
007D841E  FF1514B0A000       |CALL      [USER32!GetMessageTime]
007D8424  898424AC000000     |MOV       [ESP+000000AC],EAX
007D842B  FF15A0ADA000       |CALL      [KERNEL32!GetCurrentThreadId]
007D8431  898424B0000000     |MOV       [ESP+000000B0],EAX
007D8438  FF15E4AEA000       |CALL      [KERNEL32!GetCurrentProcessId]
007D843E  8D8C24B8000000     |LEA       ECX,[ESP+000000B8]
007D8445  898424B4000000     |MOV       [ESP+000000B4],EAX
007D844C  51                 |PUSH      ECX
007D844D  FF15E0AEA000       |CALL      [KERNEL32!QueryPerformanceCounter]
007D8453  8D4C2400           |LEA       ECX,[ESP+00]
007D8457  E834420C00         |CALL      0089C690 ;MD5的初始化
007D845C  8D54245C           |LEA       EDX,[ESP+5C]
007D8460  6864040000         |PUSH      00000464
007D8465  52                 |PUSH      EDX
007D8466  8D4C2408           |LEA       ECX,[ESP+08]
007D846A  E851420C00         |CALL      0089C6C0 ;计算数据的MD5校验
007D846F  6A13               |PUSH      13
007D8471  68186FAE00         |PUSH      00AE6F18
007D8476  8D4C2408           |LEA       ECX,[ESP+08]
007D847A  E841420C00         |CALL      0089C6C0 ;计算数据的MD5校验
007D847F  685843B200         |PUSH      00B24358
007D8484  8D4C2404           |LEA       ECX,[ESP+04]
007D8488  E813430C00         |CALL      0089C7A0 ;生成MD5校验码
007D848D  8D44245C           |LEA       EAX,[ESP+5C]
007D8491  6864040000         |PUSH      00000464
007D8496  50                 |PUSH      EAX
007D8497  E834FCFFFF         |CALL      007D80D0 ;生成MD5校验码
007D849C  81C4C8040000       |ADD       ESP,000004C8 ;返回d0--d7
007D84A2  C3                 |RET
;;;=====================随机算出私钥的数据=================================
007714E0  81ECCC050000       |SUB       ESP,000005CC
007714E6  53                 |PUSH      EBX
007714E7  8B9C24D8050000     |MOV       EBX,[ESP+000005D8]
007714EE  55                 |PUSH      EBP
007714EF  8BAC24D8050000     |MOV       EBP,[ESP+000005D8]
007714F6  56                 |PUSH      ESI
007714F7  33C0               |XOR       EAX,EAX
007714F9  57                 |PUSH      EDI
007714FA  894C2410           |MOV       [ESP+10],ECX
007714FE  89442418           |MOV       [ESP+18],EAX
00771502  8BF9               |MOV       EDI,ECX
00771504  83F810             |CMP       EAX,10
00771507  C70700000000       |MOV       DWORD PTR [EDI],00000000
0077150D  7327               |JAE       00771536
0077150F  33F6               |XOR       ESI,ESI
00771511  53                 |PUSH      EBX
00771512  FFD5               |CALL      EBP ;取256密码表中的随机数
00771514  8B17               |MOV       EDX,[EDI]
00771516  25FF000000         |AND       EAX,000000FF
0077151B  8BCE               |MOV       ECX,ESI
0077151D  83C608             |ADD       ESI,08
00771520  D3E0               |SHL       EAX,CL
00771522  83C404             |ADD       ESP,04
00771525  0BD0               |OR        EDX,EAX
00771527  83FE20             |CMP       ESI,20
0077152A  8917               |MOV       [EDI],EDX
0077152C  72E3               |JB        00771511
0077152E  8B4C2410           |MOV       ECX,[ESP+10]
00771532  8B442418           |MOV       EAX,[ESP+18]
00771536  40                 |INC       EAX
00771537  83C704             |ADD       EDI,04
0077153A  83F810             |CMP       EAX,10
0077153D  89442418           |MOV       [ESP+18],EAX
00771541  72C1               |JB        00771504
00771543  8B513C             |MOV       EDX,[ECX+3C]
00771546  81CA000000C0       |OR        EDX,C0000000
0077154C  89513C             |MOV       [ECX+3C],EDX
0077154F  8B01               |MOV       EAX,[ECX]
00771551  0C03               |OR        AL,03
00771553  8901               |MOV       [ECX],EAX
00771555  B810000000         |MOV       EAX,00000010
0077155A  83C124             |ADD       ECX,24
0077155D  8B5118             |MOV       EDX,[ECX+18]
00771560  8B5914             |MOV       EBX,[ECX+14]
00771563  8B7910             |MOV       EDI,[ECX+10]
00771566  8B710C             |MOV       ESI,[ECX+0C]
00771569  8B6908             |MOV       EBP,[ECX+08]
0077156C  0BD3               |OR        EDX,EBX
0077156E  8B59FC             |MOV       EBX,[ECX-04]
00771571  0BD7               |OR        EDX,EDI
00771573  8B7904             |MOV       EDI,[ECX+04]
00771576  0BD6               |OR        EDX,ESI
00771578  8B31               |MOV       ESI,[ECX]
0077157A  0BD5               |OR        EDX,EBP
0077157C  0BD3               |OR        EDX,EBX
0077157E  0BD7               |OR        EDX,EDI
00771580  0BD6               |OR        EDX,ESI
00771582  750B               |JNZ       0077158F
00771584  83E808             |SUB       EAX,08
00771587  83E920             |SUB       ECX,20
0077158A  83F808             |CMP       EAX,08
0077158D  73CE               |JAE       0077155D
0077158F  33C9               |XOR       ECX,ECX
00771591  8BD0               |MOV       EDX,EAX
00771593  48                 |DEC       EAX
00771594  85D2               |TEST      EDX,EDX
00771596  7435               |JZ        007715CD
00771598  8B542410           |MOV       EDX,[ESP+10]
0077159C  8D7001             |LEA       ESI,[EAX+01]
0077159F  8D3C82             |LEA       EDI,[EAX*4+EDX]
007715A2  6A01               |PUSH      01
007715A4  6A00               |PUSH      00
007715A6  6A00               |PUSH      00
007715A8  51                 |PUSH      ECX
007715A9  E8B2A42600         |CALL      009DBA60 ;算两64bit数的积EDX:EAX返回
007715AE  8B0F               |MOV       ECX,[EDI]
007715B0  33DB               |XOR       EBX,EBX
007715B2  03C1               |ADD       EAX,ECX
007715B4  53                 |PUSH      EBX
007715B5  13D3               |ADC       EDX,EBX
007715B7  68A73A0000         |PUSH      00003AA7
007715BC  52                 |PUSH      EDX
007715BD  50                 |PUSH      EAX
007715BE  E89DA72600         |CALL      009DBD60 ;A1:A2/A3:A4的余数
007715C3  4E                 |DEC       ESI
007715C4  83EF04             |SUB       EDI,04
007715C7  85F6               |TEST      ESI,ESI
007715C9  8BC8               |MOV       ECX,EAX
007715CB  77D5               |JA        007715A2
007715CD  8BC1               |MOV       EAX,ECX
007715CF  33D2               |XOR       EDX,EDX
007715D1  BE03000000         |MOV       ESI,00000003
007715D6  F7F6               |DIV       ESI
007715D8  85D2               |TEST      EDX,EDX
007715DA  0F84E4040000       |JZ        00771AC4
007715E0  8BC1               |MOV       EAX,ECX
007715E2  33D2               |XOR       EDX,EDX
007715E4  BE05000000         |MOV       ESI,00000005
007715E9  F7F6               |DIV       ESI
007715EB  85D2               |TEST      EDX,EDX
007715ED  0F84D1040000       |JZ        00771AC4
007715F3  8BC1               |MOV       EAX,ECX
007715F5  33D2               |XOR       EDX,EDX
007715F7  BE07000000         |MOV       ESI,00000007
007715FC  F7F6               |DIV       ESI
007715FE  85D2               |TEST      EDX,EDX
00771600  0F84BE040000       |JZ        00771AC4
00771606  8BC1               |MOV       EAX,ECX
00771608  33D2               |XOR       EDX,EDX
0077160A  BE0B000000         |MOV       ESI,0000000B
0077160F  F7F6               |DIV       ESI
00771611  85D2               |TEST      EDX,EDX
00771613  0F84AB040000       |JZ        00771AC4
00771619  8BC1               |MOV       EAX,ECX
0077161B  33D2               |XOR       EDX,EDX
0077161D  B90D000000         |MOV       ECX,0000000D
00771622  F7F1               |DIV       ECX
00771624  85D2               |TEST      EDX,EDX
00771626  0F8498040000       |JZ        00771AC4
0077162C  33ED               |XOR       EBP,EBP
0077162E  BE01000000         |MOV       ESI,00000001
00771633  BF11000000         |MOV       EDI,00000011
00771638  896C241C           |MOV       [ESP+1C],EBP
0077163C  89742418           |MOV       [ESP+18],ESI
00771640  897C2414           |MOV       [ESP+14],EDI
00771644  B8ABAAAAAA         |MOV       EAX,AAAAAAAB
00771649  B903000000         |MOV       ECX,00000003
0077164E  F7E7               |MUL       EDI
00771650  8BC2               |MOV       EAX,EDX
00771652  D1E8               |SHR       EAX,1
00771654  3BC1               |CMP       EAX,ECX
00771656  7218               |JB        00771670
00771658  0FAFC1             |IMUL      EAX,ECX
0077165B  3BF8               |CMP       EDI,EAX
0077165D  0F86EE000000       |JBE       00771751
00771663  83C102             |ADD       ECX,02
00771666  8BC7               |MOV       EAX,EDI
00771668  33D2               |XOR       EDX,EDX
0077166A  F7F1               |DIV       ECX
0077166C  3BC1               |CMP       EAX,ECX
0077166E  73E8               |JAE       00771658
00771670  33DB               |XOR       EBX,EBX
00771672  53                 |PUSH      EBX
00771673  56                 |PUSH      ESI
00771674  53                 |PUSH      EBX
00771675  57                 |PUSH      EDI
00771676  E8E5A32600         |CALL      009DBA60 ;算两64bit数的积EDX:EAX返回
0077167B  85D2               |TEST      EDX,EDX
0077167D  7717               |JA        00771696
0077167F  7205               |JB        00771686
00771681  83F8FF             |CMP       EAX,-01
00771684  7710               |JA        00771696
00771686  83FD0F             |CMP       EBP,0F
00771689  730B               |JAE       00771696
0077168B  8BF0               |MOV       ESI,EAX
0077168D  89742418           |MOV       [ESP+18],ESI
00771691  E9AF000000         |JMP       00771745
00771696  8B542410           |MOV       EDX,[ESP+10]
0077169A  B810000000         |MOV       EAX,00000010
0077169F  8D4A24             |LEA       ECX,[EDX+24]
007716A2  8B5118             |MOV       EDX,[ECX+18]
007716A5  8B7114             |MOV       ESI,[ECX+14]
007716A8  0BD6               |OR        EDX,ESI
007716AA  8B7110             |MOV       ESI,[ECX+10]
007716AD  0BD6               |OR        EDX,ESI
007716AF  8B710C             |MOV       ESI,[ECX+0C]
007716B2  0BD6               |OR        EDX,ESI
007716B4  8B7108             |MOV       ESI,[ECX+08]
007716B7  0BD6               |OR        EDX,ESI
007716B9  8B71FC             |MOV       ESI,[ECX-04]
007716BC  0BD6               |OR        EDX,ESI
007716BE  8B7104             |MOV       ESI,[ECX+04]
007716C1  0BD6               |OR        EDX,ESI
007716C3  8B31               |MOV       ESI,[ECX]
007716C5  0BD6               |OR        EDX,ESI
007716C7  750B               |JNZ       007716D4
007716C9  83E808             |SUB       EAX,08
007716CC  83E920             |SUB       ECX,20
007716CF  83F808             |CMP       EAX,08
007716D2  73CE               |JAE       007716A2
007716D4  33C9               |XOR       ECX,ECX
007716D6  8BD0               |MOV       EDX,EAX
007716D8  48                 |DEC       EAX
007716D9  85D2               |TEST      EDX,EDX
007716DB  743D               |JZ        0077171A
007716DD  8B542410           |MOV       EDX,[ESP+10]
007716E1  8D7001             |LEA       ESI,[EAX+01]
007716E4  8D3C82             |LEA       EDI,[EAX*4+EDX]
007716E7  6A01               |PUSH      01
007716E9  6A00               |PUSH      00
007716EB  6A00               |PUSH      00
007716ED  51                 |PUSH      ECX
007716EE  E86DA32600         |CALL      009DBA60 ;算两64bit数的积EDX:EAX返回
007716F3  8B0F               |MOV       ECX,[EDI]
007716F5  33ED               |XOR       EBP,EBP
007716F7  03C1               |ADD       EAX,ECX
007716F9  8B4C2418           |MOV       ECX,[ESP+18]
007716FD  13D5               |ADC       EDX,EBP
007716FF  53                 |PUSH      EBX
00771700  51                 |PUSH      ECX
00771701  52                 |PUSH      EDX
00771702  50                 |PUSH      EAX
00771703  E858A62600         |CALL      009DBD60 ;A1:A2/A3:A4的余数
00771708  4E                 |DEC       ESI
00771709  83EF04             |SUB       EDI,04
0077170C  85F6               |TEST      ESI,ESI
0077170E  8BC8               |MOV       ECX,EAX
00771710  77D5               |JA        007716E7
00771712  8B6C241C           |MOV       EBP,[ESP+1C]
00771716  8B7C2414           |MOV       EDI,[ESP+14]
0077171A  33F6               |XOR       ESI,ESI
0077171C  85ED               |TEST      EBP,EBP
0077171E  761D               |JBE       0077173D
00771720  8D9C2460010000     |LEA       EBX,[ESP+00000160]
00771727  8BC1               |MOV       EAX,ECX
00771729  33D2               |XOR       EDX,EDX
0077172B  F733               |DIV       DWORD PTR [EBX]
0077172D  85D2               |TEST      EDX,EDX
0077172F  0F848F030000       |JZ        00771AC4
00771735  46                 |INC       ESI
00771736  83C304             |ADD       EBX,04
00771739  3BF5               |CMP       ESI,EBP
0077173B  72EA               |JB        00771727
0077173D  8BF7               |MOV       ESI,EDI
0077173F  33ED               |XOR       EBP,EBP
00771741  89742418           |MOV       [ESP+18],ESI
00771745  89BCAC60010000     |MOV       [EBP*4+ESP+00000160],EDI
0077174C  45                 |INC       EBP
0077174D  896C241C           |MOV       [ESP+1C],EBP
00771751  83C702             |ADD       EDI,02
00771754  81FF20030000       |CMP       EDI,00000320
0077175A  897C2414           |MOV       [ESP+14],EDI
0077175E  0F82E0FEFFFF       |JB        00771644
00771764  8B742410           |MOV       ESI,[ESP+10]
00771768  8B9424E8050000     |MOV       EDX,[ESP+000005E8]
0077176F  B910000000         |MOV       ECX,00000010
00771774  8D7C2460           |LEA       EDI,[ESP+60]
00771778  F3A5               |REPZ MOVSD
0077177A  8B7C2460           |MOV       EDI,[ESP+60]
0077177E  52                 |PUSH      EDX
0077177F  4F                 |DEC       EDI
00771780  8D4C2464           |LEA       ECX,[ESP+64]
00771784  897C2464           |MOV       [ESP+64],EDI
00771788  E8B3040000         |CALL      00771C40 ;ECX[64B]/EDX[4B]的余数
0077178D  85C0               |TEST      EAX,EAX
0077178F  0F842F030000       |JZ        00771AC4 ;余数为零转移
00771795  B910000000         |MOV       ECX,00000010
0077179A  33C0               |XOR       EAX,EAX
0077179C  8D7C2420           |LEA       EDI,[ESP+20]
007717A0  BD00020000         |MOV       EBP,00000200
007717A5  F3AB               |REPZ STOSD
007717A7  C7442420D2000000   |MOV       DWORD PTR [ESP+20],000000D2
007717AF  8D45FF             |LEA       EAX,[EBP-01]
007717B2  8BD0               |MOV       EDX,EAX
007717B4  8BC8               |MOV       ECX,EAX
007717B6  C1EA05             |SHR       EDX,05
007717B9  83E11F             |AND       ECX,1F
007717BC  8B549460           |MOV       EDX,[EDX*4+ESP+60]
007717C0  D3EA               |SHR       EDX,CL
007717C2  F6C201             |TEST      DL,01
007717C5  7506               |JNZ       007717CD
007717C7  8BE8               |MOV       EBP,EAX
007717C9  85ED               |TEST      EBP,EBP
007717CB  75E2               |JNZ       007717AF
007717CD  6800F58700         |PUSH      0087F500 ; ECX-->EAX
007717D2  6A10               |PUSH      10
007717D4  8D8424E4010000     |LEA       EAX,[ESP+000001E4]
007717DB  6A40               |PUSH      40
007717DD  50                 |PUSH      EAX
007717DE  E89DE9FFFF         |CALL      00770180 ;计算地址-->EAX
007717E3  B910000000         |MOV       ECX,00000010
007717E8  8D742420           |LEA       ESI,[ESP+20]
007717EC  8DBC24DC010000     |LEA       EDI,[ESP+000001DC]
007717F3  83FD3C             |CMP       EBP,3C
007717F6  F3A5               |REPZ MOVSD
007717F8  736D               |JAE       00771867
007717FA  85ED               |TEST      EBP,EBP
007717FC  7520               |JNZ       0077181E
007717FE  6A01               |PUSH      01
00771800  8D8C24A0010000     |LEA       ECX,[ESP+000001A0]
00771807  E8F4030000         |CALL      00771C00 ;初始化数据64B
0077180C  B910000000         |MOV       ECX,00000010
00771811  8BF0               |MOV       ESI,EAX
00771813  8D7C2420           |LEA       EDI,[ESP+20]
00771817  F3A5               |REPZ MOVSD
00771819  E96E010000         |JMP       0077198C
0077181E  8D75FF             |LEA       ESI,[EBP-01]
00771821  85F6               |TEST      ESI,ESI
00771823  0F8463010000       |JZ        0077198C
00771829  8B7C2410           |MOV       EDI,[ESP+10]
0077182D  57                 |PUSH      EDI
0077182E  8D4C2424           |LEA       ECX,[ESP+24]
00771832  E8090C0000         |CALL      00772440 ; 计算的东西与积相关
00771837  4E                 |DEC       ESI
00771838  8BD6               |MOV       EDX,ESI
0077183A  8BCE               |MOV       ECX,ESI
0077183C  C1EA05             |SHR       EDX,05
0077183F  83E11F             |AND       ECX,1F
00771842  8B449460           |MOV       EAX,[EDX*4+ESP+60]
00771846  D3E8               |SHR       EAX,CL
00771848  A801               |TEST      AL,01
0077184A  7412               |JZ        0077185E
0077184C  8D8C24DC010000     |LEA       ECX,[ESP+000001DC]
00771853  57                 |PUSH      EDI
00771854  51                 |PUSH      ECX
00771855  8D4C2428           |LEA       ECX,[ESP+28]
00771859  E8B2090000         |CALL      00772210 ; 相乘后再除
0077185E  85F6               |TEST      ESI,ESI
00771860  75CB               |JNZ       0077182D
00771862  E925010000         |JMP       0077198C
00771867  8B542410           |MOV       EDX,[ESP+10]
0077186B  B910000000         |MOV       ECX,00000010
00771870  8D742420           |LEA       ESI,[ESP+20]
00771874  8DBC24E0000000     |LEA       EDI,[ESP+000000E0]
0077187B  F3A5               |REPZ MOVSD
0077187D  52                 |PUSH      EDX
0077187E  8D8C24E4000000     |LEA       ECX,[ESP+000000E4]
00771885  E8B60B0000         |CALL      00772440 ; 计算的东西与积相关
0077188A  8D9C241C020000     |LEA       EBX,[ESP+0000021C]
00771891  C74424140F000000   |MOV       DWORD PTR [ESP+14],0000000F
00771899  8B442410           |MOV       EAX,[ESP+10]
0077189D  8D73C0             |LEA       ESI,[EBX-40]
007718A0  B910000000         |MOV       ECX,00000010
007718A5  8BFB               |MOV       EDI,EBX
007718A7  F3A5               |REPZ MOVSD
007718A9  8D8C24E0000000     |LEA       ECX,[ESP+000000E0]
007718B0  50                 |PUSH      EAX
007718B1  51                 |PUSH      ECX
007718B2  8BCB               |MOV       ECX,EBX
007718B4  E857090000         |CALL      00772210 ; 相乘后再除
007718B9  8B442414           |MOV       EAX,[ESP+14]
007718BD  83C340             |ADD       EBX,40
007718C0  48                 |DEC       EAX
007718C1  89442414           |MOV       [ESP+14],EAX
007718C5  75D2               |JNZ       00771899
007718C7  8D75FF             |LEA       ESI,[EBP-01]
007718CA  85F6               |TEST      ESI,ESI
007718CC  0F84BA000000       |JZ        0077198C
007718D2  8B542410           |MOV       EDX,[ESP+10]
007718D6  8D4C2420           |LEA       ECX,[ESP+20]
007718DA  52                 |PUSH      EDX
007718DB  E8600B0000         |CALL      00772440 ; 计算的东西与积相关
007718E0  4E                 |DEC       ESI
007718E1  8BC6               |MOV       EAX,ESI
007718E3  8BCE               |MOV       ECX,ESI
007718E5  C1E805             |SHR       EAX,05
007718E8  83E11F             |AND       ECX,1F
007718EB  8B548460           |MOV       EDX,[EAX*4+ESP+60]
007718EF  D3EA               |SHR       EDX,CL
007718F1  F6C201             |TEST      DL,01
007718F4  0F848A000000       |JZ        00771984
007718FA  BB01000000         |MOV       EBX,00000001
007718FF  8BC3               |MOV       EAX,EBX
00771901  85F6               |TEST      ESI,ESI
00771903  741D               |JZ        00771922
00771905  4E                 |DEC       ESI
00771906  8BD6               |MOV       EDX,ESI
00771908  8BCE               |MOV       ECX,ESI
0077190A  C1EA05             |SHR       EDX,05
0077190D  83E11F             |AND       ECX,1F
00771910  8B549460           |MOV       EDX,[EDX*4+ESP+60]
00771914  D3EA               |SHR       EDX,CL
00771916  83E201             |AND       EDX,01
00771919  40                 |INC       EAX
0077191A  83F805             |CMP       EAX,05
0077191D  8D1C5A             |LEA       EBX,[EBX*2+EDX]
00771920  72DF               |JB        00771901
00771922  33FF               |XOR       EDI,EDI
00771924  F6C301             |TEST      BL,01
00771927  7509               |JNZ       00771932
00771929  D1EB               |SHR       EBX,1
0077192B  47                 |INC       EDI
0077192C  48                 |DEC       EAX
0077192D  F6C301             |TEST      BL,01
00771930  74F7               |JZ        00771929
00771932  48                 |DEC       EAX
00771933  741F               |JZ        00771954
00771935  8B6C2410           |MOV       EBP,[ESP+10]
00771939  89442414           |MOV       [ESP+14],EAX
0077193D  55                 |PUSH      EBP
0077193E  8D4C2424           |LEA       ECX,[ESP+24]
00771942  E8F90A0000         |CALL      00772440 ; 计算的东西与积相关
00771947  8B442414           |MOV       EAX,[ESP+14]
0077194B  48                 |DEC       EAX
0077194C  89442414           |MOV       [ESP+14],EAX
00771950  75EB               |JNZ       0077193D
00771952  EB04               |JMP       00771958
00771954  8B6C2410           |MOV       EBP,[ESP+10]
00771958  D1EB               |SHR       EBX,1
0077195A  C1E306             |SHL       EBX,06
0077195D  55                 |PUSH      EBP
0077195E  8D4C2424           |LEA       ECX,[ESP+24]
00771962  8D841CE0010000     |LEA       EAX,[EBX+ESP+000001E0]
00771969  50                 |PUSH      EAX
0077196A  E8A1080000         |CALL      00772210 ; 相乘后再除
0077196F  8BCF               |MOV       ECX,EDI
00771971  4F                 |DEC       EDI
00771972  85C9               |TEST      ECX,ECX
00771974  740E               |JZ        00771984
00771976  47                 |INC       EDI
00771977  55                 |PUSH      EBP
00771978  8D4C2424           |LEA       ECX,[ESP+24]
0077197C  E8BF0A0000         |CALL      00772440 ; 计算的东西与积相关
00771981  4F                 |DEC       EDI
00771982  75F3               |JNZ       00771977
00771984  85F6               |TEST      ESI,ESI
00771986  0F8546FFFFFF       |JNZ       007718D2
0077198C  B810000000         |MOV       EAX,00000010
00771991  8D4C245C           |LEA       ECX,[ESP+5C]
00771995  833900             |CMP       DWORD PTR [ECX],00
00771998  7508               |JNZ       007719A2
0077199A  48                 |DEC       EAX
0077199B  83E904             |SUB       ECX,04
0077199E  85C0               |TEST      EAX,EAX
007719A0  75F3               |JNZ       00771995
007719A2  83F801             |CMP       EAX,01
007719A5  0F8519010000       |JNZ       00771AC4
007719AB  837C242001         |CMP       DWORD PTR [ESP+20],01
007719B0  0F850E010000       |JNZ       00771AC4
007719B6  B910000000         |MOV       ECX,00000010
007719BB  8D742460           |LEA       ESI,[ESP+60]
007719BF  8DBC2420010000     |LEA       EDI,[ESP+00000120]
007719C6  33D2               |XOR       EDX,EDX
007719C8  F3A5               |REPZ MOVSD
007719CA  8D842420010000     |LEA       EAX,[ESP+00000120]
007719D1  8B08               |MOV       ECX,[EAX]
007719D3  D1E9               |SHR       ECX,1
007719D5  83FA0F             |CMP       EDX,0F
007719D8  8908               |MOV       [EAX],ECX
007719DA  730C               |JAE       007719E8
007719DC  8B7004             |MOV       ESI,[EAX+04]
007719DF  F7DE               |NEG       ESI
007719E1  C1E61F             |SHL       ESI,1F
007719E4  03F1               |ADD       ESI,ECX
007719E6  8930               |MOV       [EAX],ESI
007719E8  42                 |INC       EDX
007719E9  83C004             |ADD       EAX,04
007719EC  83FA10             |CMP       EDX,10
007719EF  72E0               |JB        007719D1
007719F1  8BB424E4050000     |MOV       ESI,[ESP+000005E4]
007719F8  8BBC24E0050000     |MOV       EDI,[ESP+000005E0]
007719FF  33ED               |XOR       EBP,EBP
00771A01  BB01000000         |MOV       EBX,00000001
00771A06  3BAC24EC050000     |CMP       EBP,[ESP+000005EC]
00771A0D  0F83C5000000       |JAE       00771AD8
00771A13  56                 |PUSH      ESI
00771A14  57                 |PUSH      EDI
00771A15  6A10               |PUSH      10
00771A17  8D8C24AC000000     |LEA       ECX,[ESP+000000AC]
00771A1E  E8ED060000         |CALL      00772110 ;取64个随机数
00771A23  8D542460           |LEA       EDX,[ESP+60]
00771A27  8D8424A0000000     |LEA       EAX,[ESP+000000A0]
00771A2E  52                 |PUSH      EDX
00771A2F  50                 |PUSH      EAX
00771A30  6A10               |PUSH      10       ;两数的大小
00771A32  E8B9000000         |CALL      00771AF0 ;比较数据合法否?
00771A37  83C40C             |ADD       ESP,0C
00771A3A  85C0               |TEST      EAX,EAX
00771A3C  74D5               |JZ        00771A13
00771A3E  B810000000         |MOV       EAX,00000010
00771A43  8D8C24DC000000     |LEA       ECX,[ESP+000000DC]
00771A4A  833900             |CMP       DWORD PTR [ECX],00
00771A4D  7508               |JNZ       00771A57
00771A4F  48                 |DEC       EAX
00771A50  83E904             |SUB       ECX,04
00771A53  85C0               |TEST      EAX,EAX
00771A55  75F3               |JNZ       00771A4A
00771A57  3BC3               |CMP       EAX,EBX
00771A59  7709               |JA        00771A64
00771A5B  399C24A0000000     |CMP       [ESP+000000A0],EBX
00771A62  76AF               |JBE       00771A13
00771A64  8B4C2410           |MOV       ECX,[ESP+10]
00771A68  8D942420010000     |LEA       EDX,[ESP+00000120]
00771A6F  51                 |PUSH      ECX
00771A70  52                 |PUSH      EDX
00771A71  8D8C24A8000000     |LEA       ECX,[ESP+000000A8]
00771A78  E853020000         |CALL      00771CD0 ;两大数乘除运算
00771A7D  8D8C24A0000000     |LEA       ECX,[ESP+000000A0]
00771A84  E897010000         |CALL      00771C20 ;64B数据的有效位数
00771A89  3BC3               |CMP       EAX,EBX
00771A8B  7509               |JNZ       00771A96
00771A8D  399C24A0000000     |CMP       [ESP+000000A0],EBX
00771A94  7428               |JZ        00771ABE
00771A96  8D442460           |LEA       EAX,[ESP+60]
00771A9A  8D8C24A0000000     |LEA       ECX,[ESP+000000A0]
00771AA1  50                 |PUSH      EAX
00771AA2  E839060000         |CALL      007720E0 ;64B数据相等否 1:否,0:是
00771AA7  85C0               |TEST      EAX,EAX
00771AA9  7519               |JNZ       00771AC4
00771AAB  8BB424E4050000     |MOV       ESI,[ESP+000005E4]
00771AB2  8BBC24E0050000     |MOV       EDI,[ESP+000005E0]
00771AB9  BB01000000         |MOV       EBX,00000001
00771ABE  45                 |INC       EBP
00771ABF  E942FFFFFF         |JMP       00771A06
00771AC4  8B4C2410           |MOV       ECX,[ESP+10]
00771AC8  6A04               |PUSH      04
00771ACA  E8E1050000         |CALL      007720B0 ;ECX[64B]+4[4B]-->ECX[64B]
00771ACF  8B4C2410           |MOV       ECX,[ESP+10]
00771AD3  E96BFAFFFF         |JMP       00771543
00771AD8  5F                 |POP       EDI
00771AD9  5E                 |POP       ESI
00771ADA  5D                 |POP       EBP
00771ADB  5B                 |POP       EBX
00771ADC  81C4CC050000       |ADD       ESP,000005CC
00771AE2  C21000             |RET       0010
;;;=====================计算两大数的乘积=A1=A2*A3========================
入口参数:数据长度,A1,A2,A3  ----->   A1=A2*A3
00764580  55                 |PUSH      EBP
00764581  8BEC               |MOV       EBP,ESP
00764583  83EC0C             |SUB       ESP,0C
00764586  8B550C             |MOV       EDX,[EBP+0C]
00764589  53                 |PUSH      EBX
0076458A  56                 |PUSH      ESI
0076458B  8B7508             |MOV       ESI,[EBP+08]
0076458E  57                 |PUSH      EDI
0076458F  33C0               |XOR       EAX,EAX
00764591  8D0CF500000000     |LEA       ECX,[ESI*8+00000000]
00764598  8BFA               |MOV       EDI,EDX
0076459A  8BD9               |MOV       EBX,ECX
0076459C  C1E902             |SHR       ECX,02
0076459F  F3AB               |REPZ STOSD
007645A1  8BCB               |MOV       ECX,EBX
007645A3  83E103             |AND       ECX,03
007645A6  85F6               |TEST      ESI,ESI
007645A8  F3AA               |REPZ STOSB
007645AA  0F8684000000       |JBE       00764634
007645B0  8B4D10             |MOV       ECX,[EBP+10]
007645B3  8BC2               |MOV       EAX,EDX
007645B5  2BCA               |SUB       ECX,EDX
007645B7  89450C             |MOV       [EBP+0C],EAX
007645BA  894DF4             |MOV       [EBP-0C],ECX
007645BD  8975F8             |MOV       [EBP-08],ESI
007645C0  EB06               |JMP       007645C8
007645C2  8B450C             |MOV       EAX,[EBP+0C]
007645C5  8B4DF4             |MOV       ECX,[EBP-0C]
007645C8  8B0C01             |MOV       ECX,[EAX+ECX]
007645CB  8945FC             |MOV       [EBP-04],EAX
007645CE  894D10             |MOV       [EBP+10],ECX
007645D1  8B7514             |MOV       ESI,[EBP+14]
007645D4  33DB               |XOR       EBX,EBX
007645D6  8B7DFC             |MOV       EDI,[EBP-04]
007645D9  33D2               |XOR       EDX,EDX
007645DB  F7450801000000     |TEST      DWORD PTR [EBP+08],00000001
007645E2  740B               |JZ        007645EF
007645E4  8B06               |MOV       EAX,[ESI]
007645E6  BB01000000         |MOV       EBX,00000001
007645EB  33C9               |XOR       ECX,ECX
007645ED  EB1C               |JMP       0076460B
007645EF  8B049E             |MOV       EAX,[EBX*4+ESI]
007645F2  8BCA               |MOV       ECX,EDX
007645F4  F76510             |MUL       DWORD PTR [EBP+10]
007645F7  03C8               |ADD       ECX,EAX
007645F9  8B449E04           |MOV       EAX,[EBX*4+ESI+04]
007645FD  83D200             |ADC       EDX,00
00764600  010C9F             |ADD       [EBX*4+EDI],ECX
00764603  8BCA               |MOV       ECX,EDX
00764605  83D100             |ADC       ECX,00
00764608  83C302             |ADD       EBX,02
0076460B  F76510             |MUL       DWORD PTR [EBP+10]
0076460E  03C8               |ADD       ECX,EAX
00764610  83D200             |ADC       EDX,00
00764613  014C9FFC           |ADD       [EBX*4+EDI-04],ECX
00764617  83D200             |ADC       EDX,00
0076461A  3B5D08             |CMP       EBX,[EBP+08]
0076461D  72D0               |JB        007645EF
0076461F  89149F             |MOV       [EBX*4+EDI],EDX
00764622  8B4D0C             |MOV       ECX,[EBP+0C]
00764625  8B45F8             |MOV       EAX,[EBP-08]
00764628  83C104             |ADD       ECX,04
0076462B  48                 |DEC       EAX
0076462C  894D0C             |MOV       [EBP+0C],ECX
0076462F  8945F8             |MOV       [EBP-08],EAX
00764632  758E               |JNZ       007645C2
00764634  5F                 |POP       EDI
00764635  5E                 |POP       ESI
00764636  5B                 |POP       EBX
00764637  8BE5               |MOV       ESP,EBP
00764639  5D                 |POP       EBP
0076463A  C3                 |RET
;;;==================ECX[64B]减去一个4B的数据====================
入口:减数4B[DWORD],ECX:被减数[64B]  ECX[64B]-A1[4B]-->ECX[64B]
007714B0  53                 |PUSH      EBX
007714B1  55                 |PUSH      EBP
007714B2  8B6C240C           |MOV       EBP,[ESP+0C]
007714B6  8BC1               |MOV       EAX,ECX
007714B8  56                 |PUSH      ESI
007714B9  57                 |PUSH      EDI
007714BA  33DB               |XOR       EBX,EBX
007714BC  8BF0               |MOV       ESI,EAX
007714BE  8B3E               |MOV       EDI,[ESI]
007714C0  8BD7               |MOV       EDX,EDI
007714C2  2BD5               |SUB       EDX,EBP
007714C4  3BD7               |CMP       EDX,EDI
007714C6  8916               |MOV       [ESI],EDX
007714C8  760E               |JBE       007714D8
007714CA  43                 |INC       EBX
007714CB  83C604             |ADD       ESI,04
007714CE  83FB10             |CMP       EBX,10
007714D1  BD01000000         |MOV       EBP,00000001
007714D6  72E6               |JB        007714BE
007714D8  5F                 |POP       EDI
007714D9  5E                 |POP       ESI
007714DA  5D                 |POP       EBP
007714DB  5B                 |POP       EBX
007714DC  C20400             |RET       0004

[ 本帖最后由 softice_debug 于 2006-10-24 21:58 编辑 ]
本帖最近评分记录
  • scz 威望 +15 2006-10-25 15:05

TOP

;;;===============初始化80H的数据===============================
0076F9A0  8BD1               |MOV       EDX,ECX
0076F9A2  57                 |PUSH      EDI
0076F9A3  B920000000         |MOV       ECX,00000020
0076F9A8  33C0               |XOR       EAX,EAX
0076F9AA  8BFA               |MOV       EDI,EDX
0076F9AC  F3AB               |REPZ STOSD
0076F9AE  8B442408           |MOV       EAX,[ESP+08]
0076F9B2  5F                 |POP       EDI
0076F9B3  8902               |MOV       [EDX],EAX
0076F9B5  8BC2               |MOV       EAX,EDX
0076F9B7  C20400             |RET       0004
007709C0  55                  PUSH      EBP
007709C1  8BEC                MOV       EBP,ESP
007709C3  81ECF8070000        SUB       ESP,000007F8
007709C9  53                  PUSH      EBX
007709CA  56                  PUSH      ESI
007709CB  8BD9                MOV       EBX,ECX
007709CD  57                  PUSH      EDI
007709CE  B920000000          MOV       ECX,00000020
007709D3  8BF3                MOV       ESI,EBX
007709D5  8DBD48FFFFFF        LEA       EDI,[EBP-00B8]
007709DB  33C0                XOR       EAX,EAX
007709DD  F3A5                REPZ MOVSD
007709DF  B921000000          MOV       ECX,00000021
007709E4  8DBD40FEFFFF        LEA       EDI,[EBP-01C0]
007709EA  F3AB                REPZ STOSD
007709EC  B921000000          MOV       ECX,00000021
007709F1  8DBDC4FEFFFF        LEA       EDI,[EBP-013C]
007709F7  898540FEFFFF        MOV       [EBP-01C0],EAX
007709FD  895DC8              MOV       [EBP-38],EBX
00770A00  F3AB                REPZ STOSD
00770A02  B801000000          MOV       EAX,00000001
00770A07  8985C4FEFFFF        MOV       [EBP-013C],EAX
00770A0D  8945D0              MOV       [EBP-30],EAX
00770A10  B820000000          MOV       EAX,00000020
00770A15  8D4DC4              LEA       ECX,[EBP-3C]
00770A18  8945D8              MOV       [EBP-28],EAX
00770A1B  833900              CMP       DWORD PTR [ECX],00
00770A1E  7508                JNZ       00770A28
00770A20  48                  DEC       EAX
00770A21  83E904              SUB       ECX,04
00770A24  85C0                TEST      EAX,EAX
00770A26  75F3                JNZ       00770A1B
00770A28  8945D8              MOV       [EBP-28],EAX
00770A2B  8945E4              MOV       [EBP-1C],EAX
00770A2E  B920000000          MOV       ECX,00000020
00770A33  8D9584000000        LEA       EDX,[EBP+00000084]
00770A39  833A00              CMP       DWORD PTR [EDX],00
00770A3C  7508                JNZ       00770A46
00770A3E  49                  DEC       ECX
00770A3F  83EA04              SUB       EDX,04
00770A42  85C9                TEST      ECX,ECX
00770A44  75F3                JNZ       00770A39
00770A46  83F902              CMP       ECX,02
00770A49  894DE0              MOV       [EBP-20],ECX
00770A4C  0F82AA060000        JB        007710FC
00770A52  8BBC8544FFFFFF      MOV       EDI,[EAX*4+EBP-00BC]
00770A59  8B548504            MOV       EDX,[EAX*4+EBP+04]
00770A5D  33C9                XOR       ECX,ECX
00770A5F  33F6                XOR       ESI,ESI
00770A61  81FFFFFFFF7F        CMP       EDI,7FFFFFFF
00770A67  8955E8              MOV       [EBP-18],EDX
00770A6A  7733                JA        00770A9F
00770A6C  D1E7                SHL       EDI,1
00770A6E  D1E2                SHL       EDX,1
00770A70  46                  INC       ESI
00770A71  81FFFFFFFF7F        CMP       EDI,7FFFFFFF
00770A77  76F3                JBE       00770A6C
00770A79  3BF1                CMP       ESI,ECX
00770A7B  8955E8              MOV       [EBP-18],EDX
00770A7E  741F                JZ        00770A9F
00770A80  B920000000          MOV       ECX,00000020
00770A85  2BCE                SUB       ECX,ESI
00770A87  8BB48540FFFFFF      MOV       ESI,[EAX*4+EBP-00C0]
00770A8E  8B448500            MOV       EAX,[EAX*4+EBP+00]
00770A92  D3E8                SHR       EAX,CL
00770A94  D3EE                SHR       ESI,CL
00770A96  03D0                ADD       EDX,EAX
00770A98  03FE                ADD       EDI,ESI
00770A9A  8955E8              MOV       [EBP-18],EDX
00770A9D  33C9                XOR       ECX,ECX
00770A9F  B801000000          MOV       EAX,00000001
00770AA4  894DD4              MOV       [EBP-2C],ECX
00770AA7  8945CC              MOV       [EBP-34],EAX
00770AAA  894DDC              MOV       [EBP-24],ECX
00770AAD  8945D8              MOV       [EBP-28],EAX
00770AB0  894DF8              MOV       [EBP-08],ECX
00770AB3  8B45DC              MOV       EAX,[EBP-24]
00770AB6  8BF2                MOV       ESI,EDX
00770AB8  2BF0                SUB       ESI,EAX
00770ABA  0F84BC000000        JZ        00770B7C
00770AC0  8B4DD8              MOV       ECX,[EBP-28]
00770AC3  03CA                ADD       ECX,EDX
00770AC5  85C9                TEST      ECX,ECX
00770AC7&nb