| int __fastcall sub_7344(unsigned __int8 *a1, unsigned __int8 *a2)
|
| {
|
| unsigned int v2; // r3
|
| unsigned int v3; // r5
|
| unsigned int v4; // r4
|
| _BYTE *v5; // r10
|
| int v6; // r3
|
| _BYTE *v7; // r0
|
| int i; // r6
|
| int v9; // r10
|
| int v10; // r3
|
| int v11; // r12
|
| unsigned int v12; // r1
|
| bool v13; // cc
|
| char v14; // r1
|
| unsigned int v15; // r1
|
| int v16; // r12
|
| int v17; // r12
|
| int v18; // r10
|
| unsigned int v19; // r7
|
| unsigned int v20; // r6
|
| char *v21; // r12
|
| int v22; // r11
|
| int j; // r10
|
| int v24; // r2
|
| int k; // r3
|
| char v26; // r0
|
| char v27; // r1
|
| int v28; // r2
|
| unsigned int v29; // r2
|
| int m; // r12
|
| char v31; // r7
|
| char v32; // r1
|
| int v33; // r7
|
| int v34; // r0
|
| int v35; // r12
|
| int result; // r0
|
| unsigned int v37; // [sp+0h] [bp-60h]
|
| _BYTE *v38; // [sp+4h] [bp-5Ch]
|
| int v39; // [sp+8h] [bp-58h]
|
| int v40; // [sp+Ch] [bp-54h]
|
| _BYTE v42[8]; // [sp+2Ch] [bp-34h] BYREF
|
| int v43; // [sp+34h] [bp-2Ch]
|
|
|
| v2 = a2[3];
|
| v3 = (*a2 << 20) | (a2[1] << 12) | (16 * a2[2]) | (v2 >> 4);
|
| v4 = ((a2[5] << 8) | (a2[4] << 16)) ^ a2[6] | ((v2 & 0xF) << 24);
|
| v40 = a2[7];
|
| v37 = ((a1[5] << 16) | (a1[4] << 24)) ^ a1[7] | (a1[6] << 8);
|
| v5 = &algn_EFF2[1];
|
| v39 = ((a1[1] << 16) | (*a1 << 24)) ^ a1[3] | (a1[2] << 8);
|
| while ( 1 )
|
| {
|
| v38 = v5 + 1;
|
| if ( v5[1] )
|
| {
|
| LOBYTE(v6) = 0;
|
| do
|
| {
|
| v6 = (unsigned __int8)(v6 + 1);
|
| v3 = ((2 * v3) | (v3 >> 27)) & 0xFFFFFFF;
|
| v4 = ((2 * v4) | (v4 >> 27)) & 0xFFFFFFF;
|
| }
|
| while ( v6 != (unsigned __int8)v5[1] );
|
| }
|
| v7 = v42;
|
| for ( i = 0; i != 48; i = (unsigned __int8)(i + 6) )
|
| {
|
| v9 = i;
|
| v10 = 5;
|
| v11 = 0;
|
| *v7++ = 0;
|
| while ( 1 )
|
| {
|
| v12 = byte_F024[v9];
|
| v13 = v12 > 0x1C;
|
| v9 = (unsigned __int8)(v9 + 1);
|
| v14 = v12 > 0x1C ? 56 - v12 : 28 - v12;
|
| v15 = v13 ? v4 >> v14 : v3 >> v14;
|
| v16 = v11 | ((v15 & 1) << v10--);
|
| *(v7 - 1) = v16;
|
| if ( v10 == -1 )
|
| break;
|
| v11 = (unsigned __int8)*(v7 - 1);
|
| }
|
| }
|
| if ( v40 )
|
| {
|
| v17 = HIBYTE(v37) + v40 + v40 * HIBYTE(v37);
|
| v18 = (unsigned __int8)v17 - BYTE1(v17);
|
| if ( (v18 & 0x100) != 0 )
|
| ++v18;
|
| v19 = v37 & 0xFFFFFF | (v18 << 24);
|
| }
|
| else
|
| {
|
| v19 = v37;
|
| }
|
| v20 = 0;
|
| v21 = (char *)&unk_F0FC;
|
| v22 = 28;
|
| for ( j = 0; j != 8; ++j )
|
| {
|
| LOBYTE(v24) = 0;
|
| for ( k = 0; k != 6; ++k )
|
| {
|
| v26 = v21[k];
|
| v27 = 5 - k;
|
| v24 = (unsigned __int8)(v24 | (((v19 >> (32 - v26)) & 1) << v27));
|
| }
|
| v21 += 6;
|
| v28 = (v24 ^ (unsigned __int8)v42[j]) + (j << 6);
|
| v20 |= byte_F12C[v28] << v22;
|
| v22 -= 4;
|
| }
|
| v29 = 0;
|
| for ( m = 0; m != 32; ++m )
|
| {
|
| v31 = byte_F004[m];
|
| v32 = 31 - m;
|
| v29 |= ((v20 >> (32 - v31)) & 1) << v32;
|
| }
|
| v33 = (BYTE2(v29) << 24) | (HIBYTE(v29) << 16) | (unsigned __int16)v29;
|
| v34 = v39;
|
| v39 = v37;
|
| v35 = v33 ^ v34;
|
| if ( v38 == (_BYTE *)&unk_F003 )
|
| break;
|
| v37 = v33 ^ v34;
|
| v5 = v38;
|
| }
|
| result = v43;
|
| *a1 = HIBYTE(v35);
|
| a1[1] = BYTE2(v35);
|
| a1[3] = v35;
|
| a1[2] = BYTE1(v35);
|
| a1[4] = HIBYTE(v37);
|
| a1[5] = BYTE2(v37);
|
| a1[6] = BYTE1(v37);
|
| a1[7] = v37;
|
| return result;
|
| }
|