Newer
Older
AMI-Aptio-BIOS-Reversed / RegAccessPeim / decompiled / RegAccessWriteMulti.c
@Ajax Dong Ajax Dong 2 days ago 983 bytes Init
// RegAccessWriteMulti - addr:0xffdaf2aa
int __cdecl RegAccessWriteMulti(int a1, _DWORD *a2)
{
  int v2; // edi
  _DWORD *v3; // ebx
  int result; // eax
  int v5; // eax
  unsigned __int8 v6; // dl
  _DWORD *v7; // eax
  unsigned int v8; // [esp+10h] [ebp-8h] BYREF
  int v9; // [esp+14h] [ebp-4h]

  v2 = *(unsigned __int16 *)(a1 + 6);
  RegAccessGetCfgAddress(0, 0, (_DWORD *)a1, (int *)&v8);
  v3 = (_DWORD *)v8;
  result = RegAccessValidateRange((*(_DWORD *)(a1 + 8) >> 8) & 0xF, v8, v2, (int)a2);
  if ( result >= 0 )
  {
    v5 = (*(_DWORD *)(a1 + 8) >> 8) & 0xF;
    v6 = byte_FFDB05EC[v5];
    if ( v2 )
    {
      v8 = (unsigned __int8)byte_FFDB05E0[v5];
      v9 = v6;
      v7 = a2;
      do
      {
        IoMemWrite((*(_DWORD *)(a1 + 8) >> 8) & 3, v3, v7);
        v7 = (_DWORD *)((char *)a2 + v9);
        v3 = (_DWORD *)((char *)v3 + v8);
        a2 = (_DWORD *)((char *)a2 + v9);
        --v2;
      }
      while ( v2 );
    }
    return 0;
  }
  return result;
}