Newer
Older
AMI-Aptio-BIOS-Reversed / FpgaPlatformEarlyInit / all_decompiles.txt
@Ajax Dong Ajax Dong 2 days ago 22 KB Init
=== 0xffdb22b4 ===
char *__cdecl sub_FFDB22B4(char *dst, char *src, unsigned int count_1)
{
  unsigned int count; // edx
  char *dst_1; // edi
  char *src_1; // esi

  count = count_1; /*0xffdb22be*/
  if ( src < dst && &src[count_1 - 1] >= dst ) /*0xffdb22cc*/
  {
    src_1 = &src[count_1 - 1]; /*0xffdb22e0*/
    dst_1 = &dst[count_1 - 1]; /*0xffdb22e2*/
  }
  else
  {
    count = count_1 & 3; /*0xffdb22d0*/
    qmemcpy(dst, src, 4 * (count_1 >> 2)); /*0xffdb22d9*/
    src_1 = &src[4 * (count_1 >> 2)]; /*0xffdb22d9*/
    dst_1 = &dst[4 * (count_1 >> 2)]; /*0xffdb22d9*/
  }
  qmemcpy(dst_1, src_1, count); /*0xffdb22e9*/
  return dst; /*0xffdb22f0*/
}
=== 0xffdb22f4 ===
void *__cdecl sub_FFDB22F4(void *buf, unsigned int count)
{
  memset(buf, 0, count); /*0xffdb230b*/
  return buf; /*0xffdb2312*/
}
=== 0xffdb2314 ===
void *__cdecl sub_FFDB2314(void *buf, unsigned int count, char value)
{
  memset(buf, value, count); /*0xffdb2321*/
  return buf; /*0xffdb2327*/
}
=== 0xffdb2334 ===
int __cdecl sub_FFDB2334(int a1, int a2, int a3, int a4)
{
  do /*0xffdb234d*/
  {
    *(_DWORD *)(a1 + 8 * a2 - 8) = a3; /*0xffdb2345*/
    *(_DWORD *)(a1 + 8 * a2-- - 4) = a4; /*0xffdb2349*/
  }
  while ( a2 ); /*0xffdb234d*/
  return a1; /*0xffdb2351*/
}
=== 0xffdb2354 ===
void *__cdecl sub_FFDB2354(void *buf, unsigned int count, int value)
{
  memset32(buf, value, count); /*0xffdb2361*/
  return buf; /*0xffdb2367*/
}
=== 0xffdb294a ===
int __thiscall sub_FFDB294A(void *this)
{
  int v2; // eax
  int v4; // [esp+4h] [ebp-4h] BYREF

  v2 = sub_FFDB3430(); /*0xffdb2951*/
  if ( (*(int (__cdecl **)(int, void *, int *))(*(_DWORD *)v2 + 76))(v2, this, &v4) >= 0 ) /*0xffdb2967*/
    return v4; /*0xffdb296d*/
  else
    return 0; /*0xffdb2969*/
}
=== 0xffdb2974 ===
int __thiscall sub_FFDB2974(void *this)
{
  int result; // eax

  result = sub_FFDB294A(this); /*0xffdb2977*/
  if ( result ) /*0xffdb297e*/
    return sub_FFDB29FB(result, this); /*0xffdb2985*/
  return result; /*0xffdb2984*/
}
=== 0xffdb298c ===
char *__fastcall sub_FFDB298C(char *dst, char *src, unsigned int count)
{
  int v5; // eax
  int v6; // eax

  if ( count - 1 > -1 - (int)dst ) /*0xffdb29a2*/
  {
    v5 = sub_FFDB2D0E(); /*0xffdb29a4*/
    if ( v5 ) /*0xffdb29ab*/
      (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffdb29b9*/
        "e:\\hs\\MdePkg\\Library\\BaseMemoryLibRepStr\\CopyMemWrapper.c",
        56,
        "(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)");
  }
  if ( count - 1 > -1 - (int)src ) /*0xffdb29c3*/
  {
    v6 = sub_FFDB2D0E(); /*0xffdb29c5*/
    if ( v6 ) /*0xffdb29cc*/
      (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffdb29da*/
        "e:\\hs\\MdePkg\\Library\\BaseMemoryLibRepStr\\CopyMemWrapper.c",
        57,
        "(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)");
  }
  if ( dst == src ) /*0xffdb29e2*/
    return dst; /*0xffdb29e4*/
  else
    return sub_FFDB22B4(dst, src, count); /*0xffdb29ee*/
}
=== 0xffdb29fb ===
void *__fastcall sub_FFDB29FB(int buf, unsigned int this)
{
  int v5; // eax
  int v6; // eax

  if ( !this ) /*0xffdb2a03*/
    return (void *)buf; /*0xffdb2a05*/
  if ( !buf ) /*0xffdb2a11*/
  {
    v5 = sub_FFDB2D0E(); /*0xffdb2a13*/
    if ( v5 ) /*0xffdb2a1a*/
      (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffdb2a24*/
        "e:\\hs\\MdePkg\\Library\\BaseMemoryLibRepStr\\ZeroMemWrapper.c",
        53,
        "Buffer != ((void *) 0)");
  }
  if ( this > -buf ) /*0xffdb2a30*/
  {
    v6 = sub_FFDB2D0E(); /*0xffdb2a32*/
    if ( v6 ) /*0xffdb2a39*/
      (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffdb2a43*/
        "e:\\hs\\MdePkg\\Library\\BaseMemoryLibRepStr\\ZeroMemWrapper.c",
        54,
        "Length <= (0xFFFFFFFF - (UINTN)Buffer + 1)");
  }
  return sub_FFDB22F4((void *)buf, this); /*0xffdb2a53*/
}
=== 0xffdb2a56 ===
__int16 __fastcall sub_FFDB2A56(int a1, unsigned int a2)
{
  char v2; // al
  int v4; // eax
  int v5; // eax
  int v6; // eax
  int v7; // eax
  unsigned int v8; // ebx
  unsigned int v9; // ecx
  __int16 result; // ax

  v2 = a1; /*0xffdb2a5b*/
  if ( !a1 ) /*0xffdb2a6b*/
  {
    v4 = sub_FFDB2D0E(); /*0xffdb2a6d*/
    if ( v4 ) /*0xffdb2a74*/
      (*(void (__cdecl **)(const char *, int, const char *))(v4 + 4))( /*0xffdb2a7e*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\CheckSum.c",
        122,
        "Buffer != ((void *) 0)");
    v2 = 0; /*0xffdb2a84*/
  }
  if ( (v2 & 1) != 0 ) /*0xffdb2a89*/
  {
    v5 = sub_FFDB2D0E(); /*0xffdb2a8b*/
    if ( v5 ) /*0xffdb2a92*/
      (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffdb2a9c*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\CheckSum.c",
        123,
        "((UINTN) Buffer & 0x1) == 0");
  }
  if ( (a2 & 1) != 0 ) /*0xffdb2aa5*/
  {
    v6 = sub_FFDB2D0E(); /*0xffdb2aa7*/
    if ( v6 ) /*0xffdb2aae*/
      (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffdb2ab8*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\CheckSum.c",
        124,
        "(Length & 0x1) == 0");
  }
  if ( a2 > -a1 ) /*0xffdb2ac7*/
  {
    v7 = sub_FFDB2D0E(); /*0xffdb2ac9*/
    if ( v7 ) /*0xffdb2ad0*/
      (*(void (__cdecl **)(const char *, int, const char *))(v7 + 4))( /*0xffdb2ada*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\CheckSum.c",
        125,
        "Length <= (0xFFFFFFFF - ((UINTN) Buffer) + 1)");
  }
  v8 = a2 >> 1; /*0xffdb2ae0*/
  v9 = 0; /*0xffdb2ae4*/
  for ( result = 0; v9 < v8; ++v9 ) /*0xffdb2aeb*/
    result += *(_WORD *)(a1 + 2 * v9); /*0xffdb2aed*/
  return result; /*0xffdb2af6*/
}
=== 0xffdb2afd ===
int __thiscall sub_FFDB2AFD(void *this)
{
  int v1; // eax
  int v2; // eax
  int v3; // eax
  int v5; // [esp+0h] [ebp-4h] BYREF

  v1 = sub_FFDB3430(this); /*0xffdb2b01*/
  v5 = (int)&v5; /*0xffdb2b09*/
  v2 = (*(int (__cdecl **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v1 + 32))(v1, &unk_FFDB4124, 0, 0); /*0xffdb2b16*/
  if ( v2 < 0 ) /*0xffdb2b1e*/
  {
    v5 = v2; /*0xffdb2b20*/
    sub_FFDB2D3F(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffdb2b2b*/
    v3 = sub_FFDB2D0E(); /*0xffdb2b33*/
    if ( v3 ) /*0xffdb2b3a*/
      (*(void (__cdecl **)(const char *, int, const char *))(v3 + 4))( /*0xffdb2b48*/
        "e:\\hs\\MdePkg\\Library\\PeiPcdLib\\PeiPcdLib.c",
        49,
        "!EFI_ERROR (Status)");
  }
  return v5; /*0xffdb2b53*/
}
=== 0xffdb2b55 ===
int sub_FFDB2B55()
{
  int v0; // eax
  int v1; // eax
  int v2; // eax
  int v4; // [esp+0h] [ebp-8h]
  int v5; // [esp+4h] [ebp-4h] BYREF

  v0 = sub_FFDB3430(v4); /*0xffdb2b5a*/
  if ( (*(int (__cdecl **)(int, int *))(*(_DWORD *)v0 + 48))(v0, &v5) < 0 ) /*0xffdb2b72*/
  {
    sub_FFDB2D3F(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffdb2b7f*/
    v1 = sub_FFDB2D0E(); /*0xffdb2b87*/
    if ( v1 ) /*0xffdb2b8e*/
      (*(void (__cdecl **)(const char *, int, const char *))(v1 + 4))( /*0xffdb2b98*/
        "e:\\hs\\MdePkg\\Library\\PeiHobLib\\HobLib.c",
        50,
        "!EFI_ERROR (Status)");
  }
  if ( !v5 ) /*0xffdb2ba2*/
  {
    v2 = sub_FFDB2D0E(); /*0xffdb2ba4*/
    if ( v2 ) /*0xffdb2bab*/
      (*(void (__cdecl **)(const char *, int, const char *))(v2 + 4))( /*0xffdb2bb5*/
        "e:\\hs\\MdePkg\\Library\\PeiHobLib\\HobLib.c",
        51,
        "HobList != ((void *) 0)");
  }
  return v5; /*0xffdb2bbe*/
}
=== 0xffdb2bc3 ===
_WORD *__fastcall sub_FFDB2BC3(int a1, _WORD *a2)
{
  _WORD *v2; // esi
  int v3; // eax

  v2 = a2; /*0xffdb2bc4*/
  if ( !a2 ) /*0xffdb2bc8*/
  {
    v3 = sub_FFDB2D0E(); /*0xffdb2bca*/
    if ( v3 ) /*0xffdb2bd1*/
      (*(void (__cdecl **)(const char *, int, const char *))(v3 + 4))( /*0xffdb2bdf*/
        "e:\\hs\\MdePkg\\Library\\PeiHobLib\\HobLib.c",
        82,
        "HobStart != ((void *) 0)");
  }
  while ( 1 ) /*0xffdb2bf8*/
  {
    if ( *v2 == 0xFFFF ) /*0xffdb2bfe*/
      return 0; /*0xffdb2c03*/
    if ( *v2 == 4 ) /*0xffdb2bf0*/
      break; /*0xffdb2bf0*/
    v2 = (_WORD *)((char *)v2 + (unsigned __int16)v2[1]); /*0xffdb2bf6*/
  }
  return v2; /*0xffdb2c02*/
}
=== 0xffdb2c08 ===
int __fastcall sub_FFDB2C08(int a1, int a2)
{
  int v4; // eax
  int v5; // eax
  int v7; // [esp+0h] [ebp-10h]
  int v8; // [esp+Ch] [ebp-4h] BYREF

  v4 = sub_FFDB3430(v7); /*0xffdb2c13*/
  if ( (*(int (__cdecl **)(int, int, int, int *))(*(_DWORD *)v4 + 52))(v4, a1, a2, &v8) < 0 ) /*0xffdb2c2c*/
    v8 = 0; /*0xffdb2c2e*/
  if ( !v8 ) /*0xffdb2c36*/
  {
    v5 = sub_FFDB2D0E(); /*0xffdb2c38*/
    if ( v5 ) /*0xffdb2c3f*/
      (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffdb2c50*/
        "e:\\hs\\MdePkg\\Library\\PeiHobLib\\HobLib.c",
        250,
        "Hob != ((void *) 0)");
  }
  return v8; /*0xffdb2c27*/
}
=== 0xffdb2c5d ===
char __cdecl sub_FFDB2C5D(unsigned int a1)
{
  int v1; // ecx
  unsigned int n8; // esi

  v1 = *(_DWORD *)(a1 + 44); /*0xffdb2c63*/
  if ( v1 < 0 ) /*0xffdb2c68*/
    return 1; /*0xffdb2c68*/
  n8 = 1 << (BYTE2(v1) & 0x1F); /*0xffdb2c73*/
  if ( n8 < 8 ) /*0xffdb2c78*/
    n8 = 8; /*0xffdb2c7c*/
  if ( !(a1 % n8) ) /*0xffdb2c81*/
    return 1; /*0xffdb2caa*/
  sub_FFDB2D3F(0x80000000, "Unaligned FvImage found at 0x%lx:0x%lx, the required alignment is 0x%x\n"); /*0xffdb2c9e*/
  return 0; /*0xffdb2cac*/
}
=== 0xffdb2caf ===
int __cdecl sub_FFDB2CAF(unsigned int a1, int a2)
{
  int result; // eax

  if ( sub_FFDB2C5D(a1) ) /*0xffdb2cbe*/
  {
    result = sub_FFDB2C08(5, 24); /*0xffdb2cf0*/
    if ( result ) /*0xffdb2cf7*/
    {
      *(_DWORD *)(result + 20) = 0; /*0xffdb2cf9*/
      *(_DWORD *)(result + 8) = a1; /*0xffdb2cfd*/
      *(_DWORD *)(result + 12) = a2; /*0xffdb2d00*/
      *(_DWORD *)(result + 16) = 0x2000000; /*0xffdb2d03*/
    }
  }
  else
  {
    result = sub_FFDB2D0E(); /*0xffdb2cca*/
    if ( result ) /*0xffdb2cd1*/
      return (*(int (__cdecl **)(const char *, int, const char *))(result + 4))( /*0xffdb2ce2*/
               "e:\\hs\\MdePkg\\Library\\PeiHobLib\\HobLib.c",
               556,
               "((BOOLEAN)(0==1))");
  }
  return result; /*0xffdb2d0a*/
}
=== 0xffdb2d0e ===
int sub_FFDB2D0E()
{
  int v0; // eax
  int v2; // [esp+0h] [ebp-8h] BYREF
  int v3; // [esp+4h] [ebp-4h] BYREF

  v0 = sub_FFDB3430(v2); /*0xffdb2d13*/
  if ( (*(int (__cdecl **)(int, void *, _DWORD, int *, int *))(*(_DWORD *)v0 + 32))(v0, &unk_FFDB4084, 0, &v2, &v3) >= 0 ) /*0xffdb2d32*/
    return v3; /*0xffdb2d38*/
  else
    return 0; /*0xffdb2d34*/
}
=== 0xffdb2d3f ===
int sub_FFDB2D3F(int a1, int a2, ...)
{
  int result; // eax
  int (__cdecl **v3)(int, int, char *); // esi
  va_list va; // [esp+10h] [ebp+Ch] BYREF

  va_start(va, a2);
  result = sub_FFDB2D0E(); /*0xffdb2d40*/
  v3 = (int (__cdecl **)(int, int, char *))result; /*0xffdb2d45*/
  if ( result ) /*0xffdb2d49*/
  {
    result = sub_FFDB32F2(); /*0xffdb2d4b*/
    if ( (result & a1) != 0 ) /*0xffdb2d56*/
      return (*v3)(a1, a2, (char *)va); /*0xffdb2d62*/
  }
  return result; /*0xffdb2d67*/
}
=== 0xffdb2d69 ===
int __fastcall sub_FFDB2D69(int a1, int a2, int a3)
{
  int result; // eax

  result = sub_FFDB2D0E(); /*0xffdb2d6f*/
  if ( result ) /*0xffdb2d76*/
    return (*(int (__cdecl **)(int, int, int))(result + 4))(a1, a2, a3); /*0xffdb2d7e*/
  return result; /*0xffdb2d84*/
}
=== 0xffdb2d87 ===
int __usercall sub_FFDB2D87@<eax>(int a1@<edx>, int a2)
{
  int buf; // eax
  _DWORD *buf_1; // esi
  int v5; // eax
  int v6; // eax
  _DWORD *v7; // edi
  int v8; // eax
  int v9; // eax
  int result; // eax
  int v11; // [esp+0h] [ebp-10h]

  buf = sub_FFDB294A((void *)0x20); /*0xffdb2d90*/
  buf_1 = (_DWORD *)buf; /*0xffdb2d95*/
  if ( !buf || (buf_1 = sub_FFDB29FB(buf, 0x20u)) == 0 ) /*0xffdb2dae*/
  {
    v5 = sub_FFDB2D0E(); /*0xffdb2db0*/
    if ( v5 ) /*0xffdb2db7*/
      (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffdb2dc4*/
        "e:\\hs\\MdePkg\\Library\\PeiServicesLib\\PeiServicesLib.c",
        653,
        "FvInfoPpi != ((void *) 0)");
  }
  if ( a1 ) /*0xffdb2dd2*/
  {
    sub_FFDB3341(buf_1, a1); /*0xffdb2dd6*/
  }
  else
  {
    sub_FFDB3341(buf_1, &unk_FFDB40D4); /*0xffdb2de4*/
    if ( !(unsigned __int8)sub_FFDB3371(a2 + 16, &unk_FFDB40D4) ) /*0xffdb2dee*/
    {
      v6 = sub_FFDB2D0E(); /*0xffdb2df7*/
      if ( v6 ) /*0xffdb2dfe*/
        (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffdb2e0b*/
          "e:\\hs\\MdePkg\\Library\\PeiServicesLib\\PeiServicesLib.c",
          678,
          "CompareGuid (&(((EFI_FIRMWARE_VOLUME_HEADER *) FvInfo)->FileSystemGuid), &gEfiFirmwareFileSystem2Guid)");
    }
  }
  buf_1[4] = a2; /*0xffdb2e14*/
  buf_1[5] = 0x2000000; /*0xffdb2e17*/
  v7 = (_DWORD *)sub_FFDB294A((void *)0xC); /*0xffdb2e23*/
  if ( !v7 ) /*0xffdb2e27*/
  {
    v8 = sub_FFDB2D0E(); /*0xffdb2e29*/
    if ( v8 ) /*0xffdb2e30*/
      (*(void (__cdecl **)(const char *, int, const char *))(v8 + 4))( /*0xffdb2e3d*/
        "e:\\hs\\MdePkg\\Library\\PeiServicesLib\\PeiServicesLib.c",
        694,
        "FvInfoPpiDescriptor != ((void *) 0)");
  }
  v7[1] = &unk_FFDB40F4; /*0xffdb2e43*/
  *v7 = -2147483632; /*0xffdb2e4a*/
  v7[2] = buf_1; /*0xffdb2e50*/
  v9 = sub_FFDB3430(v11); /*0xffdb2e53*/
  result = (*(int (__cdecl **)(int, _DWORD *))(*(_DWORD *)v9 + 24))(v9, v7); /*0xffdb2e5c*/
  if ( result < 0 ) /*0xffdb2e63*/
  {
    sub_FFDB2D3F(0x80000000, (int)"\nASSERT_EFI_ERROR (Status = %r)\n", result); /*0xffdb2e70*/
    result = sub_FFDB2D0E(); /*0xffdb2e78*/
    if ( result ) /*0xffdb2e7f*/
      return (*(int (__cdecl **)(const char *, int, const char *))(result + 4))( /*0xffdb2e8c*/
               "e:\\hs\\MdePkg\\Library\\PeiServicesLib\\PeiServicesLib.c",
               700,
               "!EFI_ERROR (Status)");
  }
  return result; /*0xffdb2e92*/
}
=== 0xffdb2e97 ===
int __usercall sub_FFDB2E97@<eax>(_BYTE *a1@<edx>, int a2@<ecx>, int a3@<edi>)
{
  int v6; // eax
  int v7; // eax
  int v8; // edi
  int v9; // eax
  int v10; // [esp+8h] [ebp-4h] BYREF

  if ( !a1 ) /*0xffdb2ea3*/
    return -2147483646; /*0xffdb2ea5*/
  *a1 = -1; /*0xffdb2ead*/
  v6 = sub_FFDB3430(a3); /*0xffdb2eb0*/
  v7 = (*(int (__cdecl **)(int, void *, _DWORD, _DWORD, int *))(*(_DWORD *)v6 + 32))(v6, &unk_FFDB4104, 0, 0, &v10); /*0xffdb2ec5*/
  v8 = v7; /*0xffdb2ec8*/
  if ( v7 < 0 ) /*0xffdb2ecf*/
  {
    sub_FFDB2D3F(0x80000000, (int)"\nASSERT_EFI_ERROR (Status = %r)\n", v7); /*0xffdb2edc*/
    v9 = sub_FFDB2D0E(); /*0xffdb2ee4*/
    if ( v9 ) /*0xffdb2eeb*/
      (*(void (__cdecl **)(const char *, int, const char *))(v9 + 4))( /*0xffdb2ef9*/
        "e:\\hs\\PurleyPlatPkg\\Library\\FpgaPlatformHooksLib\\FpgaPlatformHooksLib.c",
        86,
        "!EFI_ERROR (Status)");
  }
  *a1 = (*(int (__cdecl **)(int))(v10 + 84))(a2); /*0xffdb2f07*/
  return v8; /*0xffdb2f0c*/
}
=== 0xffdb2f12 ===
int __fastcall sub_FFDB2F12(int a1, _BYTE *a2, _BYTE *a3)
{
  int v5; // eax
  int v6; // eax
  int v7; // eax
  int v9; // [esp+0h] [ebp-10h]
  int v10; // [esp+Ch] [ebp-4h] BYREF

  if ( !a2 || !a3 ) /*0xffdb2f26*/
    return -2147483646; /*0xffdb2f8c*/
  *a2 = -1; /*0xffdb2f28*/
  *a3 = 0; /*0xffdb2f2b*/
  v5 = sub_FFDB3430(v9); /*0xffdb2f2e*/
  v6 = (*(int (__cdecl **)(int, void *, _DWORD, _DWORD, int *))(*(_DWORD *)v5 + 32))(v5, &unk_FFDB4104, 0, 0, &v10); /*0xffdb2f43*/
  if ( v6 < 0 ) /*0xffdb2f4b*/
  {
    sub_FFDB2D3F(0x80000000, (int)"\nASSERT_EFI_ERROR (Status = %r)\n", v6); /*0xffdb2f58*/
    v7 = sub_FFDB2D0E(); /*0xffdb2f60*/
    if ( v7 ) /*0xffdb2f67*/
      (*(void (__cdecl **)(const char *, int, const char *))(v7 + 4))( /*0xffdb2f78*/
        "e:\\hs\\PurleyPlatPkg\\Library\\FpgaPlatformHooksLib\\FpgaPlatformHooksLib.c",
        135,
        "!EFI_ERROR (Status)");
  }
  return (*(int (__cdecl **)(int, _BYTE *, _BYTE *))(v10 + 76))(a1, a2, a3); /*0xffdb2f91*/
}
=== 0xffdb30e3 ===
int __thiscall sub_FFDB30E3(_BYTE *this)
{
  _BYTE *v3; // ecx
  _BYTE *v4; // esi
  _BYTE *v5; // edx
  char v6; // al
  int v7; // edi
  int n4; // ecx
  _BYTE *v9; // [esp+4h] [ebp-4h] BYREF

  if ( sub_FFDB2F98((int *)&v9) >= 0 ) /*0xffdb30f4*/
  {
    v3 = v9; /*0xffdb310e*/
    v4 = this + 19; /*0xffdb3115*/
    v9[2] = *(this + 2); /*0xffdb3118*/
    v5 = v3 + 7; /*0xffdb311b*/
    v3[3] = *(this + 3); /*0xffdb3121*/
    v3[4] = *(this + 4); /*0xffdb3127*/
    v3[5] = *(this + 5); /*0xffdb312d*/
    v3[6] = *(this + 6); /*0xffdb3133*/
    v3[1] = *(this + 1); /*0xffdb3139*/
    v3[31] = *(this + 31); /*0xffdb313f*/
    v3[32] = *(this + 32); /*0xffdb3145*/
    v6 = *(this + 37); /*0xffdb3148*/
    v7 = this - v3; /*0xffdb314b*/
    v3[37] = v6; /*0xffdb314f*/
    n4 = 4; /*0xffdb3152*/
    do /*0xffdb3180*/
    {
      *v5 = v5[v7]; /*0xffdb3156*/
      v5[8] = *(v4 - 4); /*0xffdb315b*/
      v5[12] = *v4; /*0xffdb3160*/
      v5[16] = v4[4]; /*0xffdb3166*/
      v5[20] = v4[8]; /*0xffdb316c*/
      v5[4] = *(v4 - 8); /*0xffdb3172*/
      v5[26] = v4[14]; /*0xffdb3178*/
      ++v5; /*0xffdb317b*/
      ++v4; /*0xffdb317c*/
      --n4; /*0xffdb317d*/
    }
    while ( n4 ); /*0xffdb3180*/
    return 0; /*0xffdb3182*/
  }
  else
  {
    sub_FFDB2D3F(0x80000000, (int)"FpgaConfigurationSetValues-> HOB error, return EFI_NOT_FOUND!\n"); /*0xffdb3100*/
    return -2147483634; /*0xffdb3107*/
  }
}
=== 0xffdb318a ===
int __thiscall sub_FFDB318A(_BYTE *this)
{
  _BYTE *v3; // esi
  _BYTE *v4; // ecx
  _BYTE *v5; // edx
  char v6; // al
  int v7; // esi
  int n4; // edi
  _BYTE *v9; // [esp+4h] [ebp-4h] BYREF

  if ( sub_FFDB2F98((int *)&v9) >= 0 ) /*0xffdb319b*/
  {
    v3 = v9; /*0xffdb31b6*/
    v4 = this + 7; /*0xffdb31b9*/
    v5 = v9 + 19; /*0xffdb31c1*/
    *(this + 2) = v9[2]; /*0xffdb31c4*/
    *(this + 3) = v3[3]; /*0xffdb31ca*/
    *(this + 4) = v3[4]; /*0xffdb31d0*/
    *(this + 5) = v3[5]; /*0xffdb31d6*/
    *(this + 6) = v3[6]; /*0xffdb31dc*/
    *this = *v3; /*0xffdb31e1*/
    *(this + 1) = v3[1]; /*0xffdb31e6*/
    *(this + 31) = v3[31]; /*0xffdb31ec*/
    *(this + 32) = v3[32]; /*0xffdb31f2*/
    v6 = v3[37]; /*0xffdb31f5*/
    v7 = v3 - this; /*0xffdb31f8*/
    *(this + 37) = v6; /*0xffdb31fa*/
    n4 = 4; /*0xffdb31fd*/
    do /*0xffdb322b*/
    {
      *v4 = v4[v7]; /*0xffdb3201*/
      v4[8] = *(v5 - 4); /*0xffdb3206*/
      v4[12] = *v5; /*0xffdb320b*/
      v4[16] = v5[4]; /*0xffdb3211*/
      v4[20] = v5[8]; /*0xffdb3217*/
      v4[4] = *(v5 - 8); /*0xffdb321d*/
      v4[26] = v5[14]; /*0xffdb3223*/
      ++v4; /*0xffdb3226*/
      ++v5; /*0xffdb3227*/
      --n4; /*0xffdb3228*/
    }
    while ( n4 ); /*0xffdb322b*/
    return 0; /*0xffdb322d*/
  }
  else
  {
    sub_FFDB2D3F(0x80000000, (int)"FpgaConfigurationGetValues-> HOB error, return EFI_NOT_FOUND!\n"); /*0xffdb31a7*/
    return -2147483634; /*0xffdb31ae*/
  }
}
=== 0xffdb3235 ===
char *sub_FFDB3235()
{
  int v0; // eax
  int v1; // esi
  char buf[40]; // [esp+4h] [ebp-28h] BYREF

  sub_FFDB29FB((int)buf, 0x26u); /*0xffdb3242*/
  v0 = sub_FFDB2C08(4, 62); /*0xffdb324d*/
  v1 = v0; /*0xffdb3252*/
  if ( !v0 ) /*0xffdb3256*/
    return 0; /*0xffdb3256*/
  sub_FFDB3341((_DWORD *)(v0 + 8), &unk_FFDB4114); /*0xffdb3260*/
  if ( v1 == -24 ) /*0xffdb326a*/
    return 0; /*0xffdb3279*/
  else
    return sub_FFDB298C((char *)(v1 + 24), buf, 0x26u); /*0xffdb3271*/
}
=== 0xffdb3280 ===
int sub_FFDB3280()
{
  int v0; // eax
  int v1; // eax
  int v2; // edi
  int v4; // esi
  int v5; // [esp+0h] [ebp-10h]
  int (__cdecl **v6)(_DWORD, const __int16 *, void *, _DWORD, int *, int); // [esp+8h] [ebp-8h] BYREF
  int n27; // [esp+Ch] [ebp-4h] BYREF

  n27 = 27; /*0xffdb3287*/
  v0 = sub_FFDB3430(v5); /*0xffdb328e*/
  (*(void (__cdecl **)(int, void *, _DWORD, _DWORD, int (__cdecl ***)(_DWORD, const __int16 *, void *, _DWORD, int *, int)))(*(_DWORD *)v0 + 32))( /*0xffdb32a3*/
    v0,
    &unk_FFDB4074,
    0,
    0,
    &v6);
  v1 = sub_FFDB2974((void *)n27); /*0xffdb32ac*/
  v2 = v1; /*0xffdb32b1*/
  if ( v1 /*0xffdb32e8*/
    && (v4 = (*v6)(v6, L"FpgaSocketConfig", &unk_FFDB40A4, 0, &n27, v1),
        sub_FFDB2D3F(0x80000000, (int)"FpgaGetVariable status = %r !\n", v4),
        v4 >= 0) )
  {
    return v2; /*0xffdb32ea*/
  }
  else
  {
    return 0; /*0xffdb32b7*/
  }
}
=== 0xffdb32f2 ===
int sub_FFDB32F2()
{
  unsigned __int8 v0; // al
  char n3; // al
  char n3_1; // cl

  v0 = __inbyte(0x70u); /*0xffdb32f8*/
  __outbyte(0x70u, v0 & 0x80 | 0x4A); /*0xffdb32fd*/
  n3 = __inbyte(0x71u); /*0xffdb3304*/
  n3_1 = n3; /*0xffdb3305*/
  if ( (unsigned __int8)n3 <= 3u ) /*0xffdb330a*/
  {
LABEL_4:
    if ( !n3_1 ) /*0xffdb3325*/
      return 0; /*0xffdb3325*/
    goto LABEL_5; /*0xffdb3325*/
  }
  n3_1 = n3; /*0xffdb330c*/
  if ( !n3 ) /*0xffdb3314*/
  {
    n3_1 = MEMORY[0xFDAF0490] & 2 | 1; /*0xffdb3320*/
    goto LABEL_4; /*0xffdb3320*/
  }
LABEL_5:
  if ( n3_1 != -1 )
    return n3_1 != 1 ? -2147483578 : -2147483644;
  return 0; /*0xffdb333d*/
}
=== 0xffdb3341 ===
_DWORD *__fastcall sub_FFDB3341(_DWORD *buf, int a2)
{
  __int64 v4; // rax
  __int64 v5; // rax

  v4 = sub_FFDB33D0(a2); /*0xffdb3349*/
  sub_FFDB33FC(v4, HIDWORD(v4)); /*0xffdb3352*/
  v5 = sub_FFDB33D0(a2 + 8); /*0xffdb335a*/
  sub_FFDB33FC(v5, HIDWORD(v5)); /*0xffdb3364*/
  return buf; /*0xffdb336e*/
}
=== 0xffdb3371 ===
bool __fastcall sub_FFDB3371(int a1, int a2)
{
  __int64 v4; // rax
  int v5; // ebp
  __int64 v6; // rax
  int v7; // edi
  __int64 v8; // kr00_8
  __int64 v9; // rax
  int v11; // [esp+10h] [ebp-Ch]
  int v12; // [esp+14h] [ebp-8h]

  v4 = sub_FFDB33D0(a1); /*0xffdb337c*/
  v12 = HIDWORD(v4); /*0xffdb3383*/
  v5 = v4; /*0xffdb3387*/
  v6 = sub_FFDB33D0(a2); /*0xffdb3389*/
  v11 = HIDWORD(v6); /*0xffdb3391*/
  v7 = v6; /*0xffdb3395*/
  v8 = sub_FFDB33D0(a1 + 8); /*0xffdb33a3*/
  v9 = sub_FFDB33D0(a2 + 8); /*0xffdb33a5*/
  return v5 == v7 && v12 == v11 && v8 == v9; /*0xffdb33c8*/
}
=== 0xffdb33d0 ===
__int64 __thiscall sub_FFDB33D0(void *this)
{
  int v2; // eax

  if ( !this ) /*0xffdb33d5*/
  {
    v2 = sub_FFDB2D0E(); /*0xffdb33d7*/
    if ( v2 ) /*0xffdb33de*/
      (*(void (__cdecl **)(const char *, int, const char *))(v2 + 4))( /*0xffdb33ef*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\Unaligned.c",
        192,
        "Buffer != ((void *) 0)");
  }
  return *(_QWORD *)this; /*0xffdb33fa*/
}
=== 0xffdb33fc ===
int __cdecl sub_FFDB33FC(int a1, int a2)
{
  _DWORD *v2; // ecx
  _DWORD *v3; // esi
  int v4; // eax

  v3 = v2; /*0xffdb33fd*/
  if ( !v2 ) /*0xffdb3401*/
  {
    v4 = sub_FFDB2D0E(); /*0xffdb3403*/
    if ( v4 ) /*0xffdb340a*/
      (*(void (__cdecl **)(const char *, int, const char *))(v4 + 4))( /*0xffdb341b*/
        "e:\\hs\\MdePkg\\Library\\BaseLib\\Unaligned.c",
        219,
        "Buffer != ((void *) 0)");
  }
  *v3 = a1; /*0xffdb3429*/
  v3[1] = a2; /*0xffdb342b*/
  return a1; /*0xffdb342e*/
}
=== 0xffdb3430 ===
int sub_FFDB3430()
{
  int v0; // esi
  _BYTE v2[8]; // [esp+4h] [ebp-8h] BYREF

  sub_FFDB3462(v2); /*0xffdb3439*/
  v0 = *(_DWORD *)(*(_DWORD *)&v2[2] - 4); /*0xffdb3441*/
  if ( !v0 ) /*0xffdb3446*/
    sub_FFDB2D69( /*0xffdb3455*/
      (int)"e:\\hs\\MdePkg\\Library\\PeiServicesTablePointerLibIdt\\PeiServicesTablePointer.c",
      48,
      (int)"PeiServices != ((void *) 0)");
  return v0; /*0xffdb345d*/
}
=== 0xffdb3462 ===
void *__thiscall sub_FFDB3462(void *this)
{
  void *this_1; // eax

  if ( !this ) /*0xffdb3468*/
    sub_FFDB2D69((int)"e:\\hs\\MdePkg\\Library\\BaseLib\\X86ReadIdtr.c", 37, (int)"Idtr != ((void *) 0)"); /*0xffdb3477*/
  this_1 = this; /*0xffdb347d*/
  __sidt(this); /*0xffdb3480*/
  return this_1; /*0xffdb3484*/
}