New paste Repaste Download
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;
}
Filename: None. Size: 3kb. View raw, , hex, or download this file.

This paste expires on 2026-02-17 08:11:04.573576+00:00. Pasted through web.