signed int __userpurge sub_B363D0<eax>(int a1<eax>, int a2, int a3)
{
int v3; // edx@1
signed int v4; // eax@3
int v5; // ecx@3
int v6; // ebx@3
int v7; // ebp@3
int v8; // edi@3
int v9; // esi@3
int v10; // ebp@3
int v11; // ebx@4
int v12; // eax@5
int v13; // ST18_4@5
int v14; // edx@5
char v15; // zf@5
signed int result; // eax@7
int v17; // eax@7
signed int v18; // eax@7
signed int v19; // eax@7
signed int v20; // eax@7
int v21; // [sp+Ch] [bp-1Ch]@4
int v22; // [sp+10h] [bp-18h]@4
signed int v23; // [sp+18h] [bp-10h]@3
char v24; // [sp+1Ch] [bp-Ch]@2
signed int v25; // [sp+2Ch] [bp+4h]@7
signed int v26; // [sp+2Ch] [bp+4h]@7
signed int v27; // [sp+2Ch] [bp+4h]@7
int v28; // [sp+30h] [bp+8h]@7
v3 = a3;
if ( !*(_BYTE *)(a2 + 4) )
{
v65a82e52(&v24, a3, &off_1C75CEC);
a1 = sub_11FF3AE(&v24, &dword_18B9578);
}
v5 = *(_DWORD *)(a2 + 8) ^ (*(_BYTE *)(a1 + 3) | (*(_BYTE *)(a1 + 2) << 8) | (*(_BYTE *)(a1 + 1) << 16) | (*(_BYTE *)a1 << 24));
v9 = *(_DWORD *)(a2 + 12) ^ (*(_BYTE *)(a1 + 7) | (*(_BYTE *)(a1 + 6) << 8) | (*(_BYTE *)(a1 + 5) << 16) | (*(_BYTE *)(a1 + 4) << 24));
v8 = *(_DWORD *)(a2 + 16) ^ (*(_BYTE *)(a1 + 11) | (*(_BYTE *)(a1 + 10) << 8) | (*(_BYTE *)(a1 + 9) << 16) | (*(_BYTE *)(a1 + 8) << 24));
v10 = (*(_BYTE *)(a1 + 13) << 16) | (*(_BYTE *)(a1 + 12) << 24) | *(_BYTE *)(a1 + 15) | (*(_BYTE *)(a1 + 14) << 8);
v6 = a2;
v4 = *(_DWORD *)(a2 + 976);
v7 = *(_DWORD *)(a2 + 20) ^ v10;
v23 = v4;
if ( v4 > 1 )
{
v11 = a2 + 48;
v21 = a2 + 48;
v22 = v4 - 1;
do
{
v12 = *(_DWORD *)(v11 - 4) ^ Rijndael_Te3[(unsigned __int8)v5] ^ Rijndael_Te0[(v9 >> 24) & 0xFF] ^ Rijndael_Te1[(v8 >> 16) & 0xFF] ^ Rijndael_Te2[(v7 >> 8) & 0xFF];
v13 = *(_DWORD *)v21 ^ Rijndael_Te3[(unsigned __int8)v9] ^ Rijndael_Te2[(v5 >> 8) & 0xFF] ^ Rijndael_Te0[(v8 >> 24) & 0xFF] ^ Rijndael_Te1[(v7 >> 16) & 0xFF];
v14 = *(_DWORD *)(v21 + 4) ^ Rijndael_Te3[(unsigned __int8)v8] ^ Rijndael_Te1[(v5 >> 16) & 0xFF] ^ Rijndael_Te2[(v9 >> 8) & 0xFF] ^ Rijndael_Te0[(v7 >> 24) & 0xFF];
v11 = v21 + 32;
v15 = v22-- == 1;
v5 = *(_DWORD *)(v21 - 8) ^ Rijndael_Te3[(unsigned __int8)v7] ^ Rijndael_Te0[(v5 >> 24) & 0xFF] ^ Rijndael_Te1[(v9 >> 16) & 0xFF] ^ Rijndael_Te2[(v8 >> 8) & 0xFF];
v8 = v13;
v9 = v12;
v7 = v14;
v21 += 32;
}
while ( !v15 );
v3 = a3;
v6 = a2;
v4 = v23;
}
v17 = 32 * v4 + v6 + 8;
v28 = v17;
v18 = *(_DWORD *)v17;
v25 = v18;
*(_BYTE *)v3 = byte_1790F50[(v5 >> 24) & 0xFF] ^ (v18 >> 24);
*(_BYTE *)(v3 + 1) = byte_1790F50[(v9 >> 16) & 0xFF] ^ (v18 >> 16);
*(_BYTE *)(v3 + 2) = byte_1790F50[(v8 >> 8) & 0xFF] ^ BYTE1(v25);
*(_BYTE *)(v3 + 3) = v18 ^ byte_1790F50[(unsigned __int8)v7];
v19 = *(_DWORD *)(v28 + 4);
v26 = v19;
*(_BYTE *)(v3 + 4) = byte_1790F50[(v9 >> 24) & 0xFF] ^ (v19 >> 24);
*(_BYTE *)(v3 + 5) = byte_1790F50[(v8 >> 16) & 0xFF] ^ (v19 >> 16);
*(_BYTE *)(v3 + 6) = byte_1790F50[(v7 >> 8) & 0xFF] ^ BYTE1(v26);
*(_BYTE *)(v3 + 7) = v19 ^ byte_1790F50[(unsigned __int8)v5];
v20 = *(_DWORD *)(v28 + 8);
v27 = v20;
*(_BYTE *)(v3 + 8) = byte_1790F50[(v8 >> 24) & 0xFF] ^ (v20 >> 24);
*(_BYTE *)(v3 + 9) = byte_1790F50[(v7 >> 16) & 0xFF] ^ (v20 >> 16);
*(_BYTE *)(v3 + 10) = byte_1790F50[(v5 >> 8) & 0xFF] ^ BYTE1(v27);
*(_BYTE *)(v3 + 11) = v20 ^ byte_1790F50[(unsigned __int8)v9];
result = *(_DWORD *)(v28 + 12);
*(_BYTE *)(v3 + 12) = byte_1790F50[(v7 >> 24) & 0xFF] ^ (*(_DWORD *)(v28 + 12) >> 24);
*(_BYTE *)(v3 + 13) = byte_1790F50[(v5 >> 16) & 0xFF] ^ (result >> 16);
*(_BYTE *)(v3 + 14) = byte_1790F50[(v9 >> 8) & 0xFF] ^ BYTE1(result);
*(_BYTE *)(v3 + 15) = result ^ byte_1790F50[(unsigned __int8)v8];
return result;
}