void FUN_0044acac(byte *param_1,undefined1 *param_2,uint *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  int iVar11;
  
  uVar5 = (uint)param_1[0xb] ^ param_3[2] ^ (uint)param_1[8] << 0x18 ^ (uint)param_1[9] << 0x10 ^
          (uint)param_1[10] << 8;
  uVar8 = (uint)*param_1 << 0x18 ^ (uint)param_1[3] ^ *param_3 ^ (uint)param_1[1] << 0x10 ^
          (uint)param_1[2] << 8;
  uVar6 = (uint)param_1[7] ^ param_3[1] ^ (uint)param_1[4] << 0x18 ^ (uint)param_1[5] << 0x10 ^
          (uint)param_1[6] << 8;
  uVar3 = (uint)param_1[0xf] ^ param_3[3] ^ (uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xd] << 0x10
          ^ (uint)param_1[0xe] << 8;
  puVar10 = param_3;
  iVar11 = (int)param_3[0x3c] >> 1;
  while( true ) {
    iVar11 = iVar11 + -1;
    uVar9 = *(uint *)(&DAT_00493a10 + (uVar8 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar3 & 0xff) * 4) ^ puVar10[4] ^
            *(uint *)(&DAT_00493e10 + (uVar6 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar5 >> 6 & 0x3fc));
    uVar7 = *(uint *)(&DAT_00493a10 + (uVar6 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar8 & 0xff) * 4) ^ puVar10[5] ^
            *(uint *)(&DAT_00493e10 + (uVar5 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar3 >> 6 & 0x3fc));
    uVar4 = *(uint *)(&DAT_00493a10 + (uVar5 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar6 & 0xff) * 4) ^ puVar10[6] ^
            *(uint *)(&DAT_00493e10 + (uVar3 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar8 >> 6 & 0x3fc));
    uVar3 = *(uint *)(&DAT_00493a10 + (uVar3 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar5 & 0xff) * 4) ^ puVar10[7] ^
            *(uint *)(&DAT_00493e10 + (uVar8 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar6 >> 6 & 0x3fc));
    if (iVar11 == 0) break;
    uVar8 = *(uint *)(&DAT_00493a10 + (uVar9 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar3 & 0xff) * 4) ^ puVar10[8] ^
            *(uint *)(&DAT_00493e10 + (uVar7 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar4 >> 6 & 0x3fc));
    uVar6 = *(uint *)(&DAT_00493a10 + (uVar7 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar9 & 0xff) * 4) ^ puVar10[9] ^
            *(uint *)(&DAT_00493e10 + (uVar4 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar3 >> 6 & 0x3fc));
    uVar5 = *(uint *)(&DAT_00493a10 + (uVar4 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar7 & 0xff) * 4) ^ puVar10[10] ^
            *(uint *)(&DAT_00493e10 + (uVar3 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar9 >> 6 & 0x3fc));
    uVar3 = *(uint *)(&DAT_00493a10 + (uVar3 >> 0x18) * 4) ^
            *(uint *)(&DAT_00494610 + (uVar4 & 0xff) * 4) ^ puVar10[0xb] ^
            *(uint *)(&DAT_00493e10 + (uVar9 >> 0xe & 0x3fc)) ^
            *(uint *)(&DAT_00494210 + (uVar7 >> 6 & 0x3fc));
    puVar10 = puVar10 + 8;
  }
  param_3 = param_3 + ((int)param_3[0x3c] >> 1) * 8;
  uVar2 = *(undefined4 *)(&DAT_00494a10 + (uVar7 >> 0xe & 0x3fc));
  uVar8 = *param_3;
  uVar1 = *(undefined4 *)(&DAT_00494a10 + (uVar4 >> 6 & 0x3fc));
  uVar6 = *(uint *)(&DAT_00494a10 + (uVar9 >> 0x18) * 4) & 0xff000000 ^
          (uint)(byte)(&DAT_00494a10)[(uVar3 & 0xff) * 4] ^ uVar8;
  uVar5 = *(uint *)(&DAT_00494a10 + (uVar7 >> 0x18) * 4);
  *param_2 = (char)(uVar6 >> 0x18);
  param_2[1] = (byte)(uVar8 >> 0x10) ^ (byte)((uint)uVar2 >> 0x10);
  param_2[2] = (byte)(uVar8 >> 8) ^ (byte)((uint)uVar1 >> 8);
  param_2[3] = (char)uVar6;
  uVar2 = *(undefined4 *)(&DAT_00494a10 + (uVar4 >> 0xe & 0x3fc));
  uVar8 = param_3[1];
  uVar1 = *(undefined4 *)(&DAT_00494a10 + (uVar3 >> 6 & 0x3fc));
  uVar5 = uVar5 & 0xff000000 ^ (uint)(byte)(&DAT_00494a10)[(uVar9 & 0xff) * 4] ^ uVar8;
  uVar6 = *(uint *)(&DAT_00494a10 + (uVar4 >> 0x18) * 4);
  param_2[4] = (char)(uVar5 >> 0x18);
  param_2[5] = (byte)(uVar8 >> 0x10) ^ (byte)((uint)uVar2 >> 0x10);
  param_2[6] = (byte)(uVar8 >> 8) ^ (byte)((uint)uVar1 >> 8);
  param_2[7] = (char)uVar5;
  uVar2 = *(undefined4 *)(&DAT_00494a10 + (uVar3 >> 0xe & 0x3fc));
  uVar8 = param_3[2];
  uVar1 = *(undefined4 *)(&DAT_00494a10 + (uVar9 >> 6 & 0x3fc));
  uVar5 = uVar6 & 0xff000000 ^ (uint)(byte)(&DAT_00494a10)[(uVar7 & 0xff) * 4] ^ uVar8;
  uVar3 = *(uint *)(&DAT_00494a10 + (uVar3 >> 0x18) * 4);
  param_2[8] = (char)(uVar5 >> 0x18);
  param_2[9] = (byte)(uVar8 >> 0x10) ^ (byte)((uint)uVar2 >> 0x10);
  param_2[10] = (byte)(uVar8 >> 8) ^ (byte)((uint)uVar1 >> 8);
  param_2[0xb] = (char)uVar5;
  uVar5 = param_3[3];
  uVar1 = *(undefined4 *)(&DAT_00494a10 + (uVar9 >> 0xe & 0x3fc));
  uVar2 = *(undefined4 *)(&DAT_00494a10 + (uVar7 >> 6 & 0x3fc));
  uVar3 = uVar3 & 0xff000000 ^ (uint)(byte)(&DAT_00494a10)[(uVar4 & 0xff) * 4] ^ uVar5;
  param_2[0xc] = (char)(uVar3 >> 0x18);
  param_2[0xd] = (byte)(uVar5 >> 0x10) ^ (byte)((uint)uVar1 >> 0x10);
  param_2[0xf] = (char)uVar3;
  param_2[0xe] = (byte)(uVar5 >> 8) ^ (byte)((uint)uVar2 >> 8);
  return;
}