// TranslateAddressWalk - addr:0xffdaf85a
int __cdecl TranslateAddressWalk(int n2, int a2, int a3)
{
unsigned __int8 v3; // bl
int v4; // edi
unsigned __int8 n20; // [esp+10h] [ebp-8h]
unsigned __int8 n6; // [esp+14h] [ebp-4h]
v3 = *(_BYTE *)(n2 + 5);
v4 = *(_DWORD *)(n2 + 12);
n20 = *(_BYTE *)(n2 + 3);
n6 = *(_BYTE *)(n2 + 4);
LOBYTE(n2) = *(_BYTE *)(n2 + 2);
*(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (CpuTypeToTableIndex(v4, v3, n20, n6, n2, a2) << 20)) & 0xFF00000;
*(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (CpuTypeToDeviceIndex(v4, n20, n6, n2, a2) << 15)) & 0xF8000;
*(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (FuncBlockToIndex(v4, n20, n6, n2, a2) << 12)) & 0x7000;
*(_WORD *)(a3 + 4) = v3;
return v3;
}