Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / ImageDecodeInit.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
int __fastcall ImageDecodeInit(char *a1, char **p_%08x_%04x_%04x_%02x%02x_%02x%02x%02x%02x%02x%02x)
{
  char v2; // bl
  unsigned int n0x7FFFFFFF; // esi
  char n57; // al
  char n10; // al
  char v7; // [esp+Ch] [ebp-4h]

  v2 = 1;
  v7 = 0;
  n0x7FFFFFFF = 0;
  while ( *a1 == 32 || *a1 == 9 )
    ++a1;
  if ( !*a1 )
  {
    *p_%08x_%04x_%04x_%02x%02x_%02x%02x%02x%02x%02x%02x = a1;
    return 0;
  }
  if ( *a1 == 45 )
  {
    v2 = -1;
    ++a1;
  }
  if ( *a1 == 43 )
    ++a1;
  while ( 1 )
  {
    n57 = *a1;
    if ( *a1 >= 48 && n57 <= 57 )
    {
      n10 = n57 - 48;
      goto LABEL_17;
    }
    if ( (n57 & 0xDFu) < 0x41 || (n57 & 0xDFu) > 0x5A )
      break;
    n10 = (n57 & 0xDF) - 55;
LABEL_17:
    if ( n10 >= 10 )
      break;
    n0x7FFFFFFF = n10 + 10 * n0x7FFFFFFF;
    if ( v2 == 1 )
    {
      if ( n0x7FFFFFFF < 0x80000000 )
        goto LABEL_23;
    }
    else if ( n0x7FFFFFFF <= 0x80000000 )
    {
      goto LABEL_23;
    }
    v7 = 1;
LABEL_23:
    ++a1;
  }
  *p_%08x_%04x_%04x_%02x%02x_%02x%02x%02x%02x%02x%02x = a1;
  if ( v7 )
  {
    n0x7FFFFFFF = 0x7FFFFFFF;
    if ( v2 == -1 )
      n0x7FFFFFFF = 0x80000000;
  }
  return n0x7FFFFFFF * v2;
}