Newer
Older
AMI-Aptio-BIOS-Reversed / SystemInventory / SystemInventory_sub_AAC.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
__int64 __fastcall sub_AAC(char *a1)
{
  unsigned __int64 v1; // rdi
  char *v2; // rbx
  unsigned __int64 v3; // rax
  unsigned __int64 v4; // r9
  unsigned __int64 v5; // rax
  __int64 v6; // rdx
  __int64 v7; // r8
  unsigned int v8; // r9d
  unsigned __int64 v9; // rcx
  char n88; // al
  __int64 v11; // r9
  __int64 v12; // rax
  __int64 v14; // [rsp+30h] [rbp+8h]

  v1 = 0; /*0xabc*/
  v2 = a1; /*0xabe*/
  if ( !a1 ) /*0xac8*/
  {
    sub_788("e:\\hs\\MdePkg\\Library\\BaseLib\\SafeString.c", 2561, "(String != ((void *) 0))"); /*0xadd*/
    return v14; /*0xbc0*/
  }
  v3 = sub_D0C(a1, 1000001); /*0xb08*/
  if ( v3 > v4 ) /*0xb10*/
  {
    sub_788( /*0xb25*/
      "e:\\hs\\MdePkg\\Library\\BaseLib\\SafeString.c",
      2568,
      "(AsciiStrnLenS (String, (_gPcd_FixedAtBuild_PcdMaximumAsciiStringLength) + 1) <= (_gPcd_FixedAtBuild_PcdMaximumAsc"
      "iiStringLength))");
    LODWORD(v4) = 1000000; /*0xb2a*/
  }
  v5 = sub_D0C(v2, (int)v4 + 1); /*0xb38*/
  v9 = v8; /*0xb3d*/
  if ( v5 > v8 ) /*0xb43*/
    return v14; /*0xb43*/
  while ( *v2 == 32 || *v2 == 9 ) /*0xb4d*/
    ++v2; /*0xb4f*/
  LOBYTE(v7) = 48; /*0xb54*/
  while ( *v2 == 48 ) /*0xb5f*/
    ++v2; /*0xb59*/
  n88 = *v2; /*0xb67*/
  if ( (unsigned __int8)(*v2 - 97) <= 0x19u ) /*0xb6a*/
    n88 -= 32; /*0xb6c*/
  if ( n88 == 88 ) /*0xb71*/
  {
    if ( *(v2 - 1) != 48 ) /*0xb77*/
      return v1; /*0xb77*/
    ++v2; /*0xb79*/
  }
  v11 = -1; /*0xb7c*/
  while ( (unsigned __int8)(*v2 - v7) <= 9u || (unsigned __int8)(*v2 - 65) <= 5u || (unsigned __int8)(*v2 - 97) <= 5u ) /*0xb97*/
  {
    LOBYTE(v9) = *v2; /*0xb99*/
    v12 = sub_A7C(v9, v6, v7, v11); /*0xb9b*/
    v9 = (unsigned __int64)(v11 - v12) >> 4; /*0xba6*/
    if ( v1 > v9 ) /*0xbad*/
      return v11; /*0xbbe*/
    v1 = v12 + 16 * v1; /*0xbb3*/
    ++v2; /*0xbb6*/
  }
  return v1; /*0xbcd*/
}