Newer
Older
AMI-Aptio-BIOS-Reversed / SetupDefaultLoad / sub_6100.txt
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
char *__fastcall sub_6100(char *dst_1, char *src, unsigned __int64 n8)
{
  char *dst; // rdi
  unsigned __int64 count_2; // rcx
  char v10; // dl
  unsigned __int64 n8_1; // rax
  unsigned __int64 count; // rax
  __int64 count_1; // rbx
  char count_3; // al
  unsigned __int64 v15; // rcx
  unsigned __int64 count_4; // rax

  __asm { pushf } /*0x6103*/
  dst = dst_1; /*0x6109*/
  count_2 = n8; /*0x610c*/
  v10 = 0; /*0x610f*/
  n8_1 = src - dst; /*0x6114*/
  if ( src < dst ) /*0x6117*/
  {
    n8_1 = dst - src; /*0x611d*/
    if ( &src[n8] >= dst ) /*0x6123*/
    {
      src += n8; /*0x6125*/
      dst += n8; /*0x6128*/
      v10 = 1; /*0x612c*/
    }
  }
  if ( n8 < 8 || n8_1 < 8 ) /*0x6139*/
    goto LABEL_19; /*0x6139*/
  count = (unsigned __int8)src & 7; /*0x6141*/
  count_1 = (unsigned __int8)dst & 7; /*0x6145*/
  if ( v10 ) /*0x614b*/
  {
    --src; /*0x614d*/
    --dst; /*0x6150*/
  }
  if ( count == count_1 && count ) /*0x615b*/
  {
    if ( !v10 ) /*0x615f*/
      count = 8 - count; /*0x6164*/
    qmemcpy(dst, src, count); /*0x616d*/
    src += count; /*0x616d*/
    dst += count; /*0x616d*/
    count_2 = n8 - count; /*0x616f*/
  }
  if ( v10 ) /*0x6174*/
  {
    src -= 7; /*0x6176*/
    dst -= 7; /*0x617a*/
  }
  count_3 = count_2; /*0x617e*/
  v15 = count_2 >> 3; /*0x6181*/
  qmemcpy(dst, src, 8 * v15); /*0x6185*/
  src += 8 * v15; /*0x6185*/
  dst += 8 * v15; /*0x6185*/
  count_4 = count_3 & 7; /*0x6188*/
  if ( count_4 ) /*0x618c*/
  {
    if ( v10 ) /*0x6190*/
    {
      src += 8; /*0x6192*/
      dst += 8; /*0x6196*/
    }
    count_2 = count_4; /*0x619a*/
LABEL_19:
    if ( v10 ) /*0x619f*/
    {
      --src; /*0x61a1*/
      --dst; /*0x61a4*/
    }
    qmemcpy(dst, src, count_2); /*0x61a7*/
  }
  __asm { popf } /*0x61a9*/
  return dst_1; /*0x61ac*/
}