Newer
Older
AMI-Aptio-BIOS-Reversed / LenovoServerPkg / Driver / LnvDriverPei / LnvDebugSwitchInit.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Full restructure
int __thiscall LnvDebugSwitchInit(EFI_SYSTEM_TABLE *SystemTable)
{
  int Signature; // eax
  int result; // eax
  int v3; // edx
  int v4; // eax
  int v5; // ecx
  int v6; // edx
  int v7; // eax
  int v8; // edx
  int v9; // eax
  int v10; // ecx
  int v11; // edx
  int v12; // eax
  int v13; // edx
  _BYTE v14[3]; // [esp+8h] [ebp-18h] BYREF
  unsigned __int8 v15; // [esp+Bh] [ebp-15h]
  unsigned __int8 v16; // [esp+Ch] [ebp-14h]
  unsigned __int8 v17; // [esp+10h] [ebp-10h]
  int n10; // [esp+14h] [ebp-Ch] BYREF
  int (__cdecl **v19)(_DWORD, const __int16 *, void *, _DWORD, int *, _BYTE *); // [esp+18h] [ebp-8h] BYREF
  unsigned __int8 v20; // [esp+1Fh] [ebp-1h]

  Signature = SystemTable->Hdr.Signature;
  n10 = 10;
  v19 = 0;
  v20 = 0x80;
  result = (*(int (__cdecl **)(EFI_SYSTEM_TABLE *, void *, _DWORD, _DWORD, int (__cdecl ***)(_DWORD, const __int16 *, void *, _DWORD, int *, _BYTE *)))(Signature + 32))(
             SystemTable,
             &unk_FFE3E324,
             0,
             0,
             &v19);
  if ( !result )
  {
    result = (*v19)(v19, L"LnvSetup", &unk_FFE3E374, 0, &n10, v14);
    if ( !result )
    {
      if ( v14[2] )
      {
        LOBYTE(v3) = v15;
        v9 = sub_FFE3C3DA(33360, v3);
        if ( v9 < 0 )
          sub_FFE3C296(-1, "RDBG  CmosWriteByte PEI_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n", v15, v9);
        sub_FFE3C32E(v10);
        sub_FFE3C296(-1, "RDBG  BuildGuidDataHob gLnvDebugSwitchHobGuid \n");
        LOBYTE(v11) = v16;
        v12 = sub_FFE3C3DA(33368, v11);
        if ( v12 < 0 )
          sub_FFE3C296(-1, "RDBG  CmosWriteByte DXE_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n", v16, v12);
        LOBYTE(v13) = v17;
        result = sub_FFE3C3DA(33376, v13);
        if ( result < 0 )
          return sub_FFE3C296(
                   -1,
                   "RDBG  CmosWriteByte SMM_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n",
                   v17,
                   result);
      }
      else
      {
        LOBYTE(v3) = v20;
        v4 = sub_FFE3C3DA(33360, v3);
        if ( v4 < 0 )
          sub_FFE3C296(-1, "RDBG  CmosWriteByte PEI_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n", v20, v4);
        sub_FFE3C32E(v5);
        sub_FFE3C296(-1, "RDBG  BuildGuidDataHob gLnvDebugSwitchHobGuid \n");
        LOBYTE(v6) = v20;
        v7 = sub_FFE3C3DA(33368, v6);
        if ( v7 < 0 )
          sub_FFE3C296(-1, "RDBG  CmosWriteByte DXE_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n", v20, v7);
        LOBYTE(v8) = v20;
        result = sub_FFE3C3DA(33376, v8);
        if ( result < 0 )
          return sub_FFE3C296(
                   -1,
                   "RDBG  CmosWriteByte SMM_DEBUG_SWITCH_BY_NVRAM_OFFSET , %x , Status = %r \n",
                   v20,
                   result);
      }
    }
  }
  return result;
}