Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / ImageRenderBlock.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
int __fastcall ImageRenderBlock(int *p_n2, int n26, int p_n2a, int a4)
{
  unsigned int *p_count; // eax
  int v8; // ecx
  char *count; // edx
  int v10; // ebx
  int v11; // ebp
  int v12; // edi
  int n2; // eax
  int v14; // eax

  p_count = ImageRenderAllocContext();
  p_n2[3] = (int)p_count;
  if ( !p_count )
    return -1;
  if ( ImageRenderBits(p_count, (char *)4, 1) < 0 )
    goto LABEL_18;
  v8 = 0;
  if ( n26 > 9 )
  {
    LOBYTE(v8) = n26 > 26;
    ++v8;
  }
  count = *(char **)(a4 + 4 * v8 + 128);
  if ( count )
  {
    if ( ImageRenderBits((unsigned int *)p_n2[3], count, p_n2[1]) < 0 )
      goto LABEL_18;
  }
  v10 = 0;
  v11 = p_n2[1] / 3;
  if ( v11 > 0 )
  {
    v12 = 0;
    while ( ImageRenderBits(
              (unsigned int *)p_n2[3],
              (char *)0xA,
              10 * (10 * *(unsigned __int8 *)(v12 + p_n2[2]) + *(unsigned __int8 *)(v12 + p_n2[2] + 1))
            - 5328
            + *(unsigned __int8 *)(v12 + p_n2[2] + 2)) >= 0 )
    {
      ++v10;
      v12 += 3;
      if ( v10 >= v11 )
        goto LABEL_12;
    }
    goto LABEL_18;
  }
LABEL_12:
  n2 = p_n2[1] - 3 * v11;
  if ( n2 == 1 )
  {
    v14 = ImageRenderBits((unsigned int *)p_n2[3], (char *)4, *(unsigned __int8 *)(p_n2[2] + 3 * v11) - 48);
  }
  else
  {
    if ( n2 != 2 )
      return 0;
    v14 = ImageRenderBits(
            (unsigned int *)p_n2[3],
            (char *)7,
            *(unsigned __int8 *)(p_n2[2] + 3 * v11 + 1) - 528 + 10 * *(unsigned __int8 *)(p_n2[2] + 3 * v11));
  }
  if ( v14 >= 0 )
    return 0;
LABEL_18:
  p_n2[3] = 0;
  return -1;
}