- UID
- 242
注册时间2005-3-6
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
发表于 2009-5-23 00:38:40
|
显示全部楼层
这个 CM 的算法真的搞不定
下面是对固码连接name后加密的一段,IDA 反出后大家看看,其实可以用点时间
整理一下套入一个函数里,就可以不用了解也有结果了,可惜我连这个劲都提不起了
点评一下(不成熟意见),一个如此复杂的设计,但对抗解密却完全无力
unsigned int __cdecl sub_402841(unsigned int a1, unsigned int a2)
{
unsigned int result; // eax@1
int v3; // edx@1
int v4; // ecx@1
int v5; // esi@1
int v6; // edi@1
int v7; // ebx@1
unsigned int v8; // ecx@1
int v9; // edx@1
int v10; // esi@1
unsigned int v11; // edx@1
int v12; // edi@1
int v13; // ebx@1
int v14; // esi@1
unsigned int v15; // esi@1
int v16; // edi@1
unsigned int v17; // edi@1
unsigned int v18; // edx@1
int v19; // edi@1
unsigned int v20; // esi@1
int v21; // edi@1
unsigned int v22; // edi@1
unsigned int v23; // edi@1
unsigned int v24; // edx@1
int v25; // edi@1
unsigned int v26; // esi@1
int v27; // edi@1
unsigned int v28; // edi@1
unsigned int v29; // edi@1
unsigned int v30; // edx@1
int v31; // edi@1
unsigned int v32; // esi@1
int v33; // edi@1
unsigned int v34; // edi@1
unsigned int v35; // edi@1
unsigned int v36; // edx@1
int v37; // esi@1
int v38; // edi@1
unsigned int v39; // esi@1
int v40; // edi@1
int v41; // ebx@1
unsigned int v42; // edi@1
unsigned int v43; // ebx@1
unsigned int v44; // edi@1
unsigned int v45; // esi@1
int v46; // edx@1
unsigned int v47; // edx@1
int v48; // edi@1
unsigned int v49; // esi@1
unsigned int v50; // edi@1
unsigned int v51; // esi@1
int v52; // ebx@1
unsigned int v53; // edx@1
int v54; // esi@1
int v55; // edi@1
unsigned int v56; // esi@1
int v57; // edi@1
unsigned int v58; // edi@1
unsigned int v59; // ebx@1
unsigned int v60; // edi@1
unsigned int v61; // edx@1
int v62; // esi@1
int v63; // edi@1
unsigned int v64; // esi@1
int v65; // edi@1
int v66; // ebx@1
unsigned int v67; // edi@1
unsigned int v68; // ebx@1
unsigned int v69; // edi@1
int v70; // edi@1
int v71; // ebx@1
unsigned int v72; // edx@1
int v73; // esi@1
unsigned int v74; // esi@1
int v75; // edi@1
unsigned int v76; // edi@1
unsigned int v77; // ebx@1
unsigned int v78; // edi@1
unsigned int v79; // edx@1
int v80; // esi@1
int v81; // ebx@1
unsigned int v82; // esi@1
int v83; // edi@1
unsigned int v84; // edi@1
unsigned int v85; // ebx@1
unsigned int v86; // edi@1
unsigned int v87; // edx@1
int v88; // edi@1
int v89; // edx@1
int v90; // esi@1
unsigned int v91; // esi@1
int v92; // edi@1
unsigned int v93; // edi@1
unsigned int v94; // ebx@1
unsigned int v95; // edi@1
int v96; // edi@1
int v97; // ebx@1
unsigned int v98; // edx@1
int v99; // edi@1
int v100; // edx@1
int v101; // esi@1
unsigned int v102; // esi@1
int v103; // edi@1
unsigned int v104; // edi@1
unsigned int v105; // ebx@1
unsigned int v106; // edi@1
unsigned int v107; // edx@1
int v108; // edi@1
int v109; // esi@1
int v110; // edx@1
int v111; // ebx@1
unsigned int v112; // edx@1
int v113; // edi@1
unsigned int v114; // edi@1
unsigned int v115; // ebx@1
unsigned int v116; // edi@1
int v117; // edx@1
int v118; // ebx@1
unsigned int v119; // esi@1
int v120; // edx@1
unsigned int v121; // edx@1
int v122; // edi@1
unsigned int v123; // edi@1
unsigned int v124; // ebx@1
unsigned int v125; // edi@1
unsigned int v126; // esi@1
int v127; // edx@1
unsigned int v128; // edx@1
int v129; // edi@1
unsigned int v130; // edi@1
unsigned int v131; // ebx@1
unsigned int v132; // edi@1
unsigned int v133; // esi@1
int v134; // edx@1
unsigned int v135; // edx@1
int v136; // edi@1
unsigned int v137; // edi@1
unsigned int v138; // ebx@1
unsigned int v139; // edi@1
unsigned int v140; // edx@1
int v141; // [sp+10h] [bp-Ch]@1
int v142; // [sp+14h] [bp-8h]@1
int v143; // [sp+18h] [bp-4h]@1
int v144; // [sp+Ch] [bp-10h]@1
result = a1;
v3 = *(_DWORD *)(a1 + 12);
v4 = *(_DWORD *)(a1 + 16);
v5 = *(_DWORD *)(a1 + 20);
v6 = *(_DWORD *)(a1 + 8);
v141 = *(_DWORD *)(a1 + 16);
v7 = v3 & v4 | v5 & ~v3;
v8 = a2;
v142 = v3;
v9 = *(_DWORD *)a2;
v143 = v6;
v144 = v5;
v10 = *(_DWORD *)(a1 + 12);
v11 = (((v6 + v7 + v9 + 350093208) << 7) | ((unsigned int)(v6 + v7 + v9 + 350093208) >> 25)) + v10;
v12 = *(_DWORD *)(a1 + 16) & ~v11;
v13 = v10 & v11;
v14 = *(_DWORD *)(a1 + 20);
*(_DWORD *)(a1 + 8) = v11;
v15 = (((*(_DWORD *)(v8 + 4) + (v13 | v12) + v14 - 926434212) << 12) | ((*(_DWORD *)(v8 + 4)
+ (v13 | (unsigned int)v12)
+ v14
- 926434212) >> 20))
+ v11;
v16 = *(_DWORD *)(a1 + 12) & ~v15;
*(_DWORD *)(a1 + 20) = v15;
v17 = (((*(_DWORD *)(a1 + 16) + (v15 & v11 | v16) + *(_DWORD *)(v8 + 8) - 1540525858) << 17) | ((*(_DWORD *)(a1 + 16)
+ (v15 & v11 | v16)
+ *(_DWORD *)(v8 + 8)
- 1540525858) >> 15))
+ v15;
*(_DWORD *)(a1 + 16) = v17;
v18 = (((*(_DWORD *)(a1 + 12) + (v15 & v17 | v11 & ~v17) + *(_DWORD *)(v8 + 12) + 297586431) >> 10) | ((*(_DWORD *)(a1 + 12) + (v15 & v17 | v11 & ~v17) + *(_DWORD *)(v8 + 12) + 297586431) << 22))
+ v17;
v19 = *(_DWORD *)(a1 + 16) & v18;
*(_DWORD *)(a1 + 12) = v18;
v20 = (((*(_DWORD *)(v8 + 16) + (v19 | *(_DWORD *)(a1 + 20) & ~v18) + *(_DWORD *)(a1 + 8) - 170128223) << 7) | ((*(_DWORD *)(v8 + 16) + (v19 | *(_DWORD *)(a1 + 20) & ~v18) + *(_DWORD *)(a1 + 8) - 170128223) >> 25))
+ v18;
v21 = *(_DWORD *)(a1 + 16) & ~v20;
*(_DWORD *)(a1 + 8) = v20;
v22 = (((*(_DWORD *)(a1 + 20) + (v18 & v20 | v21) + *(_DWORD *)(v8 + 20) + 1132938790) << 12) | ((*(_DWORD *)(a1 + 20)
+ (v18 & v20 | v21)
+ *(_DWORD *)(v8 + 20)
+ 1132938790) >> 20))
+ v20;
a1 = v22;
*(_DWORD *)(result + 20) = v22;
v23 = (((*(_DWORD *)(result + 16) + (v20 & v22 | v18 & ~v22) + *(_DWORD *)(v8 + 24) - 130203119) << 17) | ((*(_DWORD *)(result + 16) + (v20 & v22 | v18 & ~v22) + *(_DWORD *)(v8 + 24) - 130203119) >> 15))
+ a1;
a2 = v23;
*(_DWORD *)(result + 16) = v23;
v24 = (((v18 + (a1 & v23 | v20 & ~v23) + *(_DWORD *)(v8 + 28) + 500604172) >> 10) | ((v18
+ (a1 & v23 | v20 & ~v23)
+ *(_DWORD *)(v8 + 28)
+ 500604172) << 22))
+ a2;
v25 = *(_DWORD *)(result + 16) & v24;
*(_DWORD *)(result + 12) = v24;
v26 = (((*(_DWORD *)(v8 + 32) + (v25 | *(_DWORD *)(result + 20) & ~v24) + *(_DWORD *)(result + 8) - 1175390019) << 7) | ((*(_DWORD *)(v8 + 32) + (v25 | *(_DWORD *)(result + 20) & ~v24) + *(_DWORD *)(result + 8) - 1175390019) >> 25))
+ v24;
v27 = *(_DWORD *)(result + 16) & ~v26;
*(_DWORD *)(result + 8) = v26;
v28 = (((*(_DWORD *)(result + 20) + (v24 & v26 | v27) + *(_DWORD *)(v8 + 36) + 1809119167) << 12) | ((*(_DWORD *)(result + 20) + (v24 & v26 | v27) + *(_DWORD *)(v8 + 36) + 1809119167) >> 20))
+ v26;
*(_DWORD *)(result + 20) = v28;
a1 = v28;
v29 = (((*(_DWORD *)(v8 + 40) + (v26 & v28 | v24 & ~v28) + *(_DWORD *)(result + 16) - 1888531532) << 17) | ((*(_DWORD *)(v8 + 40) + (v26 & v28 | v24 & ~v28) + *(_DWORD *)(result + 16) - 1888531532) >> 15))
+ v28;
a2 = v29;
*(_DWORD *)(result + 16) = v29;
v30 = (((v24 + (a1 & v29 | v26 & ~v29) + *(_DWORD *)(v8 + 44) + 824893345) >> 10) | ((v24
+ (a1 & v29 | v26 & ~v29)
+ *(_DWORD *)(v8 + 44)
+ 824893345) << 22))
+ a2;
v31 = *(_DWORD *)(result + 16) & v30;
*(_DWORD *)(result + 12) = v30;
v32 = (((*(_DWORD *)(v8 + 48) + (v31 | *(_DWORD *)(result + 20) & ~v30) + *(_DWORD *)(result + 8) + 328229330) << 7) | ((*(_DWORD *)(v8 + 48) + (v31 | *(_DWORD *)(result + 20) & ~v30) + *(_DWORD *)(result + 8) + 328229330) >> 25))
+ v30;
v33 = *(_DWORD *)(result + 16) & ~v32;
*(_DWORD *)(result + 8) = v32;
v34 = (((*(_DWORD *)(result + 20) + (v30 & v32 | v33) + *(_DWORD *)(v8 + 52) + 983052789) << 12) | ((*(_DWORD *)(result + 20) + (v30 & v32 | v33) + *(_DWORD *)(v8 + 52) + 983052789) >> 20))
+ v32;
a1 = v34;
*(_DWORD *)(result + 20) = v34;
v35 = (((*(_DWORD *)(v8 + 56) + (v32 & v34 | v30 & ~v34) + *(_DWORD *)(result + 16) + 385633406) << 17) | ((*(_DWORD *)(v8 + 56) + (v32 & v34 | v30 & ~v34) + *(_DWORD *)(result + 16) + 385633406) >> 15))
+ a1;
a2 = v35;
*(_DWORD *)(result + 16) = v35;
v36 = (((v30 + (a1 & v35 | v32 & ~v35) + *(_DWORD *)(v8 + 60) + 800377041) >> 10) | ((v30
+ (a1 & v35 | v32 & ~v35)
+ *(_DWORD *)(v8 + 60)
+ 800377041) << 22))
+ a2;
v37 = v36 & *(_DWORD *)(result + 20);
v38 = *(_DWORD *)(result + 16) & ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v36;
v39 = (32 * (*(_DWORD *)(v8 + 4) + (v37 | v38) + *(_DWORD *)(result + 8) - 166321344) | ((*(_DWORD *)(v8 + 4)
+ (v37 | (unsigned int)v38)
+ *(_DWORD *)(result + 8)
- 166321344) >> 27))
+ v36;
v40 = v39 & *(_DWORD *)(result + 16);
v41 = v36 & ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v39;
v42 = (((*(_DWORD *)(result + 20) + (v40 | v41) + *(_DWORD *)(v8 + 24) - 1068620533) << 9) | ((*(_DWORD *)(result + 20)
+ (v40 | (unsigned int)v41)
+ *(_DWORD *)(v8 + 24)
- 1068620533) >> 23))
+ v39;
a1 = v42;
*(_DWORD *)(result + 20) = v42;
v43 = a1;
v44 = a1
+ (((*(_DWORD *)(result + 16) + (v36 & v42 | v39 & ~v36) + *(_DWORD *)(v8 + 44) - 442164102) << 14) | ((*(_DWORD *)(result + 16) + (v36 & v42 | v39 & ~v36) + *(_DWORD *)(v8 + 44) - 442164102) >> 18));
a1 = v44;
*(_DWORD *)(result + 16) = v44;
v45 = a1
+ (((v36 + (v39 & a1 | v43 & ~v39) + *(_DWORD *)v8 - 373938596) >> 12) | ((v36
+ (v39 & a1 | v43 & ~v39)
+ *(_DWORD *)v8
- 373938596) << 20));
a1 = v45;
v46 = *(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v45;
v47 = (32
* (*(_DWORD *)(result + 8) + (v45 & v46 | *(_DWORD *)(result + 16) & ~v46) + *(_DWORD *)(v8 + 20) - 703570652) | ((*(_DWORD *)(result + 8) + (v45 & v46 | *(_DWORD *)(result + 16) & ~v46) + *(_DWORD *)(v8 + 20) - 703570652) >> 27))
+ v45;
v48 = *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v47;
v49 = (((*(_DWORD *)(v8 + 40) + (v48 & v47 | v45 & ~v48) + *(_DWORD *)(result + 20) + 68351059) << 9) | ((*(_DWORD *)(v8 + 40) + (v48 & v47 | v45 & ~v48) + *(_DWORD *)(result + 20) + 68351059) >> 23))
+ v47;
v50 = a1;
a2 = v49;
*(_DWORD *)(result + 20) = v49;
v51 = (((*(_DWORD *)(result + 16) + (a1 & v49 | v47 & ~v50) + *(_DWORD *)(v8 + 60) - 696128568) << 14) | ((*(_DWORD *)(result + 16) + (a1 & v49 | v47 & ~v50) + *(_DWORD *)(v8 + 60) - 696128568) >> 18))
+ a2;
v52 = v51 & v47 | a2 & ~v47;
*(_DWORD *)(result + 16) = v51;
v53 = (((a1 + v52 + *(_DWORD *)(v8 + 16) - 405538655) >> 12) | ((a1 + v52 + *(_DWORD *)(v8 + 16) - 405538655) << 20))
+ v51;
v54 = v53 & *(_DWORD *)(result + 20);
v55 = *(_DWORD *)(result + 16) & ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v53;
v56 = (32 * (*(_DWORD *)(v8 + 36) + (v54 | v55) + *(_DWORD *)(result + 8) + 568553585) | ((*(_DWORD *)(v8 + 36)
+ (v54 | (unsigned int)v55)
+ *(_DWORD *)(result + 8)
+ 568553585) >> 27))
+ v53;
v57 = *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v56;
v58 = (((*(_DWORD *)(v8 + 56) + (v56 & v57 | v53 & ~v57) + *(_DWORD *)(result + 20) - 1009916202) << 9) | ((*(_DWORD *)(v8 + 56) + (v56 & v57 | v53 & ~v57) + *(_DWORD *)(result + 20) - 1009916202) >> 23))
+ v56;
a1 = v58;
*(_DWORD *)(result + 20) = v58;
v59 = a1;
v60 = a1
+ (((*(_DWORD *)(result + 16) + (v53 & v58 | v56 & ~v53) + *(_DWORD *)(v8 + 12) - 126529459) << 14) | ((*(_DWORD *)(result + 16) + (v53 & v58 | v56 & ~v53) + *(_DWORD *)(v8 + 12) - 126529459) >> 18));
a1 = v60;
*(_DWORD *)(result + 16) = v60;
v61 = (((*(_DWORD *)(v8 + 32) + (v56 & a1 | v59 & ~v56) + v53 + 1247079889) >> 12) | ((*(_DWORD *)(v8 + 32)
+ (v56 & a1 | v59 & ~v56)
+ v53
+ 1247079889) << 20))
+ a1;
v62 = v61 & *(_DWORD *)(result + 20);
v63 = *(_DWORD *)(result + 16) & ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v61;
v64 = (32 * (*(_DWORD *)(v8 + 52) + (v62 | v63) + *(_DWORD *)(result + 8) - 1459248136) | ((*(_DWORD *)(v8 + 52)
+ (v62 | (unsigned int)v63)
+ *(_DWORD *)(result + 8)
- 1459248136) >> 27))
+ v61;
v65 = v64 & *(_DWORD *)(result + 16);
v66 = v61 & ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v64;
v67 = (((*(_DWORD *)(result + 20) + (v65 | v66) + *(_DWORD *)(v8 + 8) - 1543986184) << 9) | ((*(_DWORD *)(result + 20)
+ (v65 | (unsigned int)v66)
+ *(_DWORD *)(v8 + 8)
- 1543986184) >> 23))
+ v64;
a1 = v67;
*(_DWORD *)(result + 20) = v67;
v68 = a1;
v69 = a1
+ (((*(_DWORD *)(result + 16) + (v61 & v67 | v64 & ~v61) + *(_DWORD *)(v8 + 28) + 1613601930) << 14) | ((*(_DWORD *)(result + 16) + (v61 & v67 | v64 & ~v61) + *(_DWORD *)(v8 + 28) + 1613601930) >> 18));
a1 = v69;
*(_DWORD *)(result + 16) = v69;
v70 = v64 & a1 | v68 & ~v64;
v71 = *(_DWORD *)(result + 20);
v72 = (((*(_DWORD *)(v8 + 48) + v70 + v61 - 1926795356) >> 12) | ((*(_DWORD *)(v8 + 48) + v70 + v61 - 1926795356) << 20))
+ a1;
v73 = *(_DWORD *)(result + 20) ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 12) = v72;
v74 = (16 * (*(_DWORD *)(result + 8) + (v72 ^ v73) + *(_DWORD *)(v8 + 20) - 198741514) | ((*(_DWORD *)(result + 8)
+ (v72 ^ v73)
+ *(_DWORD *)(v8 + 20)
- 198741514) >> 28))
+ v72;
v75 = v74 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v74;
v76 = (((*(_DWORD *)(v8 + 32) + (v72 ^ v75) + v71 - 2113952872) << 11) | ((*(_DWORD *)(v8 + 32)
+ (v72 ^ v75)
+ v71
- 2113952872) >> 21))
+ v74;
a1 = v76;
*(_DWORD *)(result + 20) = v76;
v77 = a1;
v78 = a1
+ (((*(_DWORD *)(result + 16) + (v72 ^ v74 ^ v76) + *(_DWORD *)(v8 + 44) + 1829906444) << 16) | ((*(_DWORD *)(result + 16) + (v72 ^ v74 ^ v76) + *(_DWORD *)(v8 + 44) + 1829906444) >> 16));
a1 = v78;
*(_DWORD *)(result + 16) = v78;
v79 = (((*(_DWORD *)(v8 + 56) + (v74 ^ v77 ^ v78) + v72 - 35006893) >> 9) | ((*(_DWORD *)(v8 + 56)
+ (v74 ^ v77 ^ v78)
+ v72
- 35006893) << 23))
+ a1;
v80 = *(_DWORD *)(result + 20) ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 12) = v79;
v81 = *(_DWORD *)(result + 20);
v82 = (16 * (*(_DWORD *)(v8 + 4) + (v79 ^ v80) + *(_DWORD *)(result + 8) - 364589143) | ((*(_DWORD *)(v8 + 4)
+ (v79 ^ v80)
+ *(_DWORD *)(result + 8)
- 364589143) >> 28))
+ v79;
v83 = v82 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v82;
v84 = (((*(_DWORD *)(v8 + 16) + (v79 ^ v83) + v81 + 1272597486) << 11) | ((*(_DWORD *)(v8 + 16)
+ (v79 ^ v83)
+ v81
+ 1272597486) >> 21))
+ v82;
a1 = v84;
*(_DWORD *)(result + 20) = v84;
v85 = a1;
v86 = a1
+ (((*(_DWORD *)(result + 16) + (v79 ^ v82 ^ v84) + *(_DWORD *)(v8 + 28) - 155841424) << 16) | ((*(_DWORD *)(result + 16) + (v79 ^ v82 ^ v84) + *(_DWORD *)(v8 + 28) - 155841424) >> 16));
a1 = v86;
*(_DWORD *)(result + 16) = v86;
v87 = *(_DWORD *)(v8 + 40) + (v82 ^ v85 ^ v86) + v79 - 1095021573;
v88 = *(_DWORD *)(result + 8);
v89 = ((v87 >> 9) | (v87 << 23)) + a1;
v90 = v89 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 12) = v89;
v91 = (16 * (*(_DWORD *)(v8 + 52) + (*(_DWORD *)(result + 20) ^ v90) + v88 + 681279174) | ((*(_DWORD *)(v8 + 52)
+ (*(_DWORD *)(result + 20) ^ (unsigned int)v90)
+ v88
+ 681279174) >> 28))
+ v89;
v92 = v91 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v91;
v93 = (((*(_DWORD *)(result + 20) + (v89 ^ v92) + *(_DWORD *)v8 - 403033979) << 11) | ((*(_DWORD *)(result + 20)
+ (v89 ^ (unsigned int)v92)
+ *(_DWORD *)v8
- 403033979) >> 21))
+ v91;
a1 = v93;
*(_DWORD *)(result + 20) = v93;
v94 = a1;
v95 = a1
+ (((*(_DWORD *)(result + 16) + (v89 ^ v91 ^ v93) + *(_DWORD *)(v8 + 12) - 722490862) << 16) | ((*(_DWORD *)(result + 16) + (v89 ^ v91 ^ v93) + *(_DWORD *)(v8 + 12) - 722490862) >> 16));
*(_DWORD *)(result + 16) = v95;
a1 = v95;
v96 = v94 ^ v95;
v97 = *(_DWORD *)(result + 20);
v98 = v89 + (v91 ^ v96) + *(_DWORD *)(v8 + 24) + 80760889;
v99 = *(_DWORD *)(result + 8);
v100 = ((v98 >> 9) | (v98 << 23)) + a1;
v101 = v100 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 12) = v100;
v102 = (16 * (*(_DWORD *)(v8 + 36) + (*(_DWORD *)(result + 20) ^ v101) + v99 - 645391027) | ((*(_DWORD *)(v8 + 36)
+ (*(_DWORD *)(result + 20) ^ (unsigned int)v101)
+ v99
- 645391027) >> 28))
+ v100;
v103 = v102 ^ *(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v102;
v104 = (((*(_DWORD *)(v8 + 48) + (v100 ^ v103) + v97 - 421167880) << 11) | ((*(_DWORD *)(v8 + 48)
+ (v100 ^ (unsigned int)v103)
+ v97
- 421167880) >> 21))
+ v102;
a1 = v104;
*(_DWORD *)(result + 20) = v104;
v105 = a1;
v106 = a1
+ (((*(_DWORD *)(result + 16) + (v100 ^ v102 ^ v104) + *(_DWORD *)(v8 + 60) + 534485410) << 16) | ((*(_DWORD *)(result + 16) + (v100 ^ v102 ^ v104) + *(_DWORD *)(v8 + 60) + 534485410) >> 16));
a1 = v106;
*(_DWORD *)(result + 16) = v106;
v107 = v100 + (v102 ^ v105 ^ v106) + *(_DWORD *)(v8 + 8) - 983151931;
v108 = *(_DWORD *)(result + 8);
v109 = a1 + ((v107 >> 9) | (v107 << 23));
v110 = v109 | ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v109;
v111 = *(_DWORD *)(result + 20);
v112 = (((*(_DWORD *)v8 + (*(_DWORD *)(result + 16) ^ v110) + v108 - 199081324) << 6) | ((*(_DWORD *)v8
+ (*(_DWORD *)(result + 16) ^ (unsigned int)v110)
+ v108
- 199081324) >> 26))
+ v109;
v113 = v112 | ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v112;
v114 = (((*(_DWORD *)(v8 + 28) + (v109 ^ v113) + v111 + 1140796055) << 10) | ((*(_DWORD *)(v8 + 28)
+ (v109 ^ (unsigned int)v113)
+ v111
+ 1140796055) >> 22))
+ v112;
*(_DWORD *)(result + 20) = v114;
a1 = v114;
v115 = v114;
v116 = v114
+ (((*(_DWORD *)(v8 + 56) + (v112 ^ (v114 | ~v109)) + *(_DWORD *)(result + 16) - 1809601625) << 15) | ((*(_DWORD *)(v8 + 56) + (v112 ^ (v114 | ~v109)) + *(_DWORD *)(result + 16) - 1809601625) >> 17));
*(_DWORD *)(result + 16) = v116;
v117 = v115 ^ (v116 | ~v112);
v118 = *(_DWORD *)(result + 20);
v119 = v116
+ (((unsigned int)(v109 + v117 + *(_DWORD *)(v8 + 20) - 56608455) >> 11) | ((v109
+ v117
+ *(_DWORD *)(v8 + 20)
- 56608455) << 21));
v120 = v119 | ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v119;
v121 = (((*(_DWORD *)(v8 + 48) + (v116 ^ v120) + *(_DWORD *)(result + 8) + 1700382131) << 6) | ((*(_DWORD *)(v8 + 48)
+ (v116 ^ v120)
+ *(_DWORD *)(result + 8)
+ 1700382131) >> 26))
+ v119;
v122 = v121 | ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v121;
v123 = (((*(_DWORD *)(v8 + 12) + (v119 ^ v122) + v118 - 1882419006) << 10) | ((*(_DWORD *)(v8 + 12)
+ (v119 ^ v122)
+ v118
- 1882419006) >> 22))
+ v121;
*(_DWORD *)(result + 20) = v123;
a1 = v123;
v124 = v123;
v125 = v123
+ (((*(_DWORD *)(v8 + 40) + (v121 ^ (v123 | ~v119)) + *(_DWORD *)(result + 16) - 721283) << 15) | ((*(_DWORD *)(v8 + 40) + (v121 ^ (v123 | ~v119)) + *(_DWORD *)(result + 16) - 721283) >> 17));
*(_DWORD *)(result + 16) = v125;
v126 = v125
+ (((*(_DWORD *)(v8 + 4) + (v124 ^ (v125 | ~v121)) + v119 - 2057468719) >> 11) | ((*(_DWORD *)(v8 + 4)
+ (v124 ^ (v125 | ~v121))
+ v119
- 2057468719) << 21));
v127 = v126 | ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v126;
v128 = (((*(_DWORD *)(v8 + 32) + (v125 ^ v127) + *(_DWORD *)(result + 8) + 1753108399) << 6) | ((*(_DWORD *)(v8 + 32)
+ (v125 ^ v127)
+ *(_DWORD *)(result + 8)
+ 1753108399) >> 26))
+ v126;
v129 = v128 | ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v128;
v130 = (((*(_DWORD *)(result + 20) + (v126 ^ v129) + *(_DWORD *)(v8 + 60) - 30669775) << 10) | ((*(_DWORD *)(result + 20)
+ (v126 ^ v129)
+ *(_DWORD *)(v8 + 60)
- 30669775) >> 22))
+ v128;
a1 = v130;
*(_DWORD *)(result + 20) = v130;
v131 = a1;
v132 = a1
+ (((*(_DWORD *)(result + 16) + (v128 ^ (v130 | ~v126)) + *(_DWORD *)(v8 + 24) - 1545150444) << 15) | ((*(_DWORD *)(result + 16) + (v128 ^ (v130 | ~v126)) + *(_DWORD *)(v8 + 24) - 1545150444) >> 17));
*(_DWORD *)(result + 16) = v132;
v133 = v132
+ (((v126 + (v131 ^ (v132 | ~v128)) + *(_DWORD *)(v8 + 52) + 1317935649) >> 11) | ((v126
+ (v131 ^ (v132 | ~v128))
+ *(_DWORD *)(v8 + 52)
+ 1317935649) << 21));
v134 = v133 | ~*(_DWORD *)(result + 20);
*(_DWORD *)(result + 12) = v133;
v135 = (((*(_DWORD *)(v8 + 16) + (v132 ^ v134) + *(_DWORD *)(result + 8) + 136279351) << 6) | ((*(_DWORD *)(v8 + 16)
+ (v132 ^ v134)
+ *(_DWORD *)(result + 8)
+ 136279351) >> 26))
+ v133;
v136 = v135 | ~*(_DWORD *)(result + 16);
*(_DWORD *)(result + 8) = v135;
v137 = (((*(_DWORD *)(result + 20) + (v133 ^ v136) + *(_DWORD *)(v8 + 44) - 1120707285) << 10) | ((*(_DWORD *)(result + 20) + (v133 ^ v136) + *(_DWORD *)(v8 + 44) - 1120707285) >> 22))
+ v135;
a1 = v137;
*(_DWORD *)(result + 20) = v137;
v138 = a1;
v139 = a1
+ (((*(_DWORD *)(result + 16) + (v135 ^ (v137 | ~v133)) + *(_DWORD *)(v8 + 8) + 720547195) << 15) | ((*(_DWORD *)(result + 16) + (v135 ^ (v137 | ~v133)) + *(_DWORD *)(v8 + 8) + 720547195) >> 17));
*(_DWORD *)(result + 16) = v139;
v140 = v133 + (v138 ^ (v139 | ~v135)) + *(_DWORD *)(v8 + 36) - 422339711;
*(_DWORD *)(result + 8) += v143;
*(_DWORD *)(result + 12) = v142 + v139 + ((v140 >> 11) | (v140 << 21));
*(_DWORD *)(result + 16) += v141;
*(_DWORD *)(result + 20) += v144;
return result;
} |
|