Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Tal_Liberman
- https://about.me/liberman/
- void funca(unsigned int *data, unsigned int data_size, unsigned int *md5, unsigned int *output)
- {
- unsigned int v4; // ebx@1
- unsigned int *v5; // edx@1
- int v6; // edi@3
- unsigned int v7; // esi@3
- unsigned int v8; // ecx@3
- int v9; // ST18_4@5
- unsigned int v10; // ecx@5
- int v11; // edx@5
- int v12; // edi@5
- unsigned int v13; // edx@5
- int result; // eax@5
- unsigned int v15; // ecx@7
- unsigned int v16; // ecx@7
- int v17; // edi@7
- unsigned int v18; // ecx@7
- unsigned int v19; // [sp+4h] [bp-10h]@3
- unsigned int v20; // [sp+Ch] [bp-8h]@3
- int v21; // [sp+10h] [bp-4h]@5
- v4 = data_size;
- v5 = data;
- if ( v4 < 2 || v4 & 1 )
- {
- result = 0;
- }
- else
- {
- v6 = 0;
- v7 = 0;
- v8 = (*md5 | 1) + 1778057216;
- v19 = (md5[1] | 1) + 333119488;
- v20 = ((v4 - 2) >> 1) + 1;
- while ( 1 )
- {
- v4 -= 2;
- v9 = (int)(v5 + 1);
- v10 = 2046337941 * ((*v5 + v7) * v8 - 284857861 * ((*v5 + v7) >> 16))
- + 1755016095 * (((*v5 + v7) * v8 - 284857861 * ((*v5 + v7) >> 16)) >> 16);
- v11 = 3935764481 * v10 - 1007687017 * (v10 >> 16);
- v12 = v11 + v6;
- v13 = *(_DWORD *)v9 + v11;
- v21 = v9 + 4;
- result = 516489217
- * (1505996589 * (v13 * v19 - 1021897765 * (v13 >> 16))
- - 573759729 * ((v13 * v19 - 1021897765 * (v13 >> 16)) >> 16));
- v8 = (*md5 | 1) + 1778057216;
- v7 = result
- + 901586633
- * ((1505996589 * (v13 * v19 - 1021897765 * (v13 >> 16))
- - 573759729 * ((v13 * v19 - 1021897765 * (v13 >> 16)) >> 16)) >> 16);
- v6 = v7 + v12;
- --v20;
- if ( !v20 )
- break;
- v5 = (unsigned int *)v21;
- }
- if ( v4 == 1 )
- {
- v15 = 2046337941 * ((*(_DWORD *)v21 + v7) * ((*md5 | 1) + 1778057216) - 284857861 * ((*(_DWORD *)v21 + v7) >> 16))
- + 1755016095
- * (((*(_DWORD *)v21 + v7) * ((*md5 | 1) + 1778057216) - 284857861 * ((*(_DWORD *)v21 + v7) >> 16)) >> 16);
- v16 = -359202815 * v15 - 1007687017 * (v15 >> 16);
- v17 = v16 + v6;
- v18 = 1505996589 * (v16 * v19 - 1021897765 * (v16 >> 16))
- - 573759729 * ((v16 * v19 - 1021897765 * (v16 >> 16)) >> 16);
- result = v18 >> 16;
- v7 = 516489217 * v18 + 901586633 * (v18 >> 16);
- v6 = v7 + v17;
- }
- result = 1;
- output[1] = v6;
- *output = v7;
- }
- }
- void funcb(unsigned int *data, unsigned int data_size, unsigned int *md5, unsigned int *output)
- {
- unsigned int v4; // ebx@1
- int v5; // edi@3
- unsigned int v6; // ecx@3
- unsigned int v7; // esi@3
- unsigned int v8; // edx@3
- int v9; // esi@3
- int v10; // edx@4
- int v11; // ST14_4@4
- unsigned int v12; // ecx@4
- unsigned int v13; // ecx@4
- int v14; // edi@4
- unsigned int v15; // ecx@4
- unsigned int v16; // ecx@4
- int v17; // edx@4
- int v18; // eax@4
- unsigned int v19; // edx@4
- int result; // eax@4
- unsigned int v21; // ecx@6
- unsigned int v22; // ecx@6
- int v23; // edi@6
- unsigned int v24; // ecx@6
- unsigned int v25; // [sp+4h] [bp-Ch]@3
- unsigned int *v26; // [sp+Ch] [bp-4h]@1
- v4 = data_size;
- v26 = data;
- if ( data_size < 2 || data_size & 1 )
- {
- result = 0;
- }
- else
- {
- v5 = 0;
- v6 = *md5 | 1;
- v7 = (data_size - 2) >> 1;
- v8 = 0;
- v25 = md5[1] | 1;
- v9 = v7 + 1;
- do
- {
- v4 -= 2;
- v10 = *v26 + v8;
- v11 = (int)(v26 + 1);
- v12 = 2970681344 * v6 * v10 - 812076783 * (v6 * v10 >> 16);
- v13 = 495124480
- * (315537773 * ((1537146880 * v12 - 2029495393 * (v12 >> 16)) >> 16)
- - 1184038912 * (1537146880 * v12 - 2029495393 * (v12 >> 16)))
- + 629022083
- * ((315537773 * ((1537146880 * v12 - 2029495393 * (v12 >> 16)) >> 16)
- - 1184038912 * (1537146880 * v12 - 2029495393 * (v12 >> 16))) >> 16);
- v14 = v13 + v5;
- v15 = v25 * (*(_DWORD *)v11 + v13);
- v26 = (unsigned int *)(v11 + 4);
- v16 = 2533294080 * (385155072 * v15 - 1569450251 * (v15 >> 16))
- - 746350849 * ((385155072 * v15 - 1569450251 * (v15 >> 16)) >> 16);
- v17 = 2090019721 * (v16 >> 16);
- v18 = 730398720 * v16;
- v6 = *md5 | 1;
- v19 = v18 + v17;
- result = 1079730327 * (v19 >> 16);
- v8 = 2674458624 * v19 - result;
- v5 = v8 + v14;
- --v9;
- }
- while ( v9 );
- if ( v4 == 1 )
- {
- v21 = 2970681344 * (*md5 | 1) * (v8 + *v26) - 812076783 * ((*md5 | 1) * (v8 + *v26) >> 16);
- v22 = 495124480
- * (315537773 * ((1537146880 * v21 - 2029495393 * (v21 >> 16)) >> 16)
- - 1184038912 * (1537146880 * v21 - 2029495393 * (v21 >> 16)))
- + 629022083
- * ((315537773 * ((1537146880 * v21 - 2029495393 * (v21 >> 16)) >> 16)
- - 1184038912 * (1537146880 * v21 - 2029495393 * (v21 >> 16))) >> 16);
- v23 = v22 + v5;
- v24 = 385155072 * v25 * v22 - 1569450251 * (v25 * v22 >> 16);
- result = (730398720 * (2533294080 * v24 - 746350849 * (v24 >> 16))
- + 2090019721 * ((2533294080 * v24 - 746350849 * (v24 >> 16)) >> 16)) >> 16;
- v8 = 2674458624
- * (730398720 * (2533294080 * v24 - 746350849 * (v24 >> 16))
- + 2090019721 * ((2533294080 * v24 - 746350849 * (v24 >> 16)) >> 16))
- - 1079730327 * result;
- v5 = v8 + v23;
- }
- result = 1;
- output[1] = v5;
- *output = v8;
- }
- }
- void weird_signature(unsigned int *data, unsigned int data_size, unsigned int *md5, unsigned int *outputa, unsigned int *outputb)
- {
- funca((unsigned int *)data, (data_size>>2) & 0x3FFFFFFE, (unsigned int *)md5, outputa);
- funcb((unsigned int *)data, (data_size>>2) & 0x3FFFFFFE, (unsigned int *)md5, outputb);
- }
Advertisement
Add Comment
Please, Sign In to add comment